过滤器是在到达DispatcherServlet之前进行过滤; 拦截器是经过DispatcherServlet后进行拦截。
1.定义拦截器类,继承HandlerInterceptorAdapter:
public class Interceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { /* 这里面写一些到达Controller之前需要进行拦截的代码 */ //true表示放行,false表示拦截 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { super.afterCompletion(request, response, handler, ex); } } 编写SpringMVC配置类,将自定义拦截器添加到配置中: public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { //创建自定义的拦截器 Interceptor interceptor = new Interceptor(); //添加拦截器 registry.addInterceptor(interceptor) //添加需要拦截的路径 .addPathPatterns(""); } }1.在springmvc-config.xml配置文件中添加如下配置:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="需要拦截的路径"/> <bean class="自定义interceptor全路径名"> </mvc:interceptor> </mvc:interceptors>