执行顺序
源代码
拦截器类
package com.jd.m.tg.interceptor;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.ponent;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Componentpublic class HandlerInterceptor1 implements HandlerInterceptor {private static final Logger LOG= LoggerFactory.getLogger(MyInterceptor.class);@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {LOG.info("执行拦截器的preHandle方法");return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {LOG.info("执行拦截器的postHandle方法");}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {LOG.info("执行拦截器的afterCompletion方法");}}
另一个拦截器类和该类内容一致;
拦截器配置类
package com.jd.m.tg.config;import com.jd.m.tg.interceptor.HandlerInterceptor1;import com.jd.m.tg.interceptor.HandlerInterceptor2;import lombok.AllArgsConstructor;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configuration@AllArgsConstructorpublic class InterceptorConfig extends WebMvcConfigurerAdapter{private MyInterceptor myInterceptor;private MyInterceptorTwo myInterceptorTwo;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(HandlerInterceptor1).addPathPatterns("/test/**");registry.addInterceptor(HandlerInterceptor2).addPathPatterns("/test/**");}}
SpringMVC配置方法:
<!--拦截器 --><mvc:interceptors><!--多个拦截器,顺序执行 --><mvc:interceptor><!-- /**表示所有url包括子url路径 --><mvc:mapping path="/**"/><bean class="cn.itcast.ssm.interceptor.HandlerInterceptor1"></bean></mvc:interceptor><mvc:interceptor><mvc:mapping path="/**"/><bean class="cn.itcast.ssm.interceptor.HandlerInterceptor2"></bean></mvc:interceptor></mvc:interceptors>
运行结果
com.jd.m.tg.interceptor.HandlerInterceptor2 : 执行拦截器的preHandle方法-12-19 11:18:50.237 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor1 : 执行拦截器的preHandle方法-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor1 : 执行拦截器的postHandle方法-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor2 : 执行拦截器的postHandle方法-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor1 : 执行拦截器的afterCompletion方法-12-19 11:18:50.255 INFO 8988 --- [0.0.1-80-exec-1] com.jd.m.tg.interceptor.HandlerInterceptor2 : 执行拦截器的afterCompletion方法
教学资源
/video/av47953244?p=45
参考文章
/u012834750/article/details/78840875
/u012401711/article/details/73741974