Springmvc拦截器小结

173 阅读1分钟

Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。、

1.创建拦截器类实现HandlerInterceptor接口


public boolean preHandle(HttpServletRequest request, HttpServletResponse

response, Object handler) {

System.out.println("preHandle running...");

return true;

}

public void postHandle(HttpServletRequest request, HttpServletResponse

response, Object handler, ModelAndView modelAndView) {

System.out.println("postHandle running...");

}

public void afterCompletion(HttpServletRequest request, HttpServletResponse

response, Object handler, Exception ex) {

System.out.println("afterCompletion running...");

}

}

2. 配置拦截器


<mvc:interceptor>

<mvc:mapping path="/**"/>

<bean class="interceptor.MyHandlerInterceptor1"/>

</mvc:interceptor>

</mvc:interceptors>

3.测试拦截器


@ResponseBody

public ModelAndView quickMethod() throws IOException, ParseException {

System.out.println("目标方法执行....");

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("name","itcast");

modelAndView.setViewName("index");

return modelAndView;

}

4.运行结果

image.png

仔细观察执行顺序可知,先执行prehandle方法,再执行视图,再执行posthandle,再执行afterCompletion方法。多个拦截器根据web的配置文件顺序执行。