定义三个拦截器
此处只粘贴一个拦截器,其余两个拦截器跟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;
}
浏览器请求后结果:
控制台