定义三个拦截器
此处只粘贴一个拦截器,其余两个拦截器跟1一样,只是里面的1换成了2和3,区分用的
public class MyInterceptor1 implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("------我是拦截器1的前置方法------"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("------我是拦截器1的后处理方法,我看到了------:"+modelAndView.getViewName()); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("------我是拦截器1的完成后处理方法。------"); } }
在springmvc中配置拦截器
<!--配置自定义拦截器--> <mvc:interceptors> <!--方式一:拦截器一全都拦截--> <bean class="it.heima.interceptor.MyInterceptor1"/> <bean class="it.heima.interceptor.MyInterceptor2"/> <bean class="it.heima.interceptor.MyInterceptor3"/> <!--方式二:通过mvc:interceptor来配置,同时可以指定要拦截的路径--> <mvc:interceptor> <!--这意思是所有都拦截,anit风格的,也可以写成.do以什么结尾的拦截--> <mvc:mapping path="/**/"/> <bean class="it.heima.interceptor.MyInterceptor1"/> </mvc:interceptor> </mvc:interceptors>
控制器
@RequestMapping("show18") public ModelAndView show18(){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","看到说明拦截器执行了"); return mv; }
浏览器请求后结果:
控制台