Comment enregistrer un filtre de servlet dans Spring MVC
En un mot, un filtre de servlet vous permet d'intercepter les demandes et les réponses sur votre application Web. Cet article vous montre comment enregistrer un filtre de servlet dans Spring XML et JavaConfig.
1. Filtre de servlet
Examinez le filtre personnalisé suivant, il détectera toutes les exceptions et redirigera vers une page d'erreur.
package com.example.form.web; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ErrorHandleFilter implements Filter { @Override public void destroy() { // ... } @Override public void init(FilterConfig filterConfig) throws ServletException { // } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { chain.doFilter(request, response); } catch (Exception ex) { request.setAttribute("errorMessage", ex); request.getRequestDispatcher("/WEB-INF/views/jsp/error.jsp") .forward(request, response); } } }
2. XML de printemps
Dans la configuration Spring MVC + XML, vous pouvez enregistrer les filtres viaweb.xml
web.xml
errorHandlerFilter com.example.form.web.ErrorHandleFilter errorHandlerFilter /*
3. Spring JavaConfig
Dans Spring MVC + JavaConfig + noweb.xml
file, vous pouvez enregistrer les filtres via la classe d'initialisation.
MyWebInitializer.java
package com.example.form.config.servlet3; import javax.servlet.Filter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; import com.example.form.config.SpringRootConfig; import com.example.form.config.SpringWebConfig; import com.example.form.web.ErrorHandleFilter; public class MyWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //... @Override protected Filter[] getServletFilters() { return new Filter[]{new ErrorHandleFilter()}; } }