springMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。
过滤器是servlet规范中的一部分,任何java web工程都可以使用。
拦截器是springMVC框架才能使用的,只拦截访问的控制器方法,不拦截jsp页面,HTML等,自定义拦截器必须事先HandlerInterceptor接口。
编写拦截器
/**
* 自定义拦截器
*/
public class MyInterceptor1 implements HandlerInterceptor{
/**
* 预处理,controller方法执行前
* return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
* return false不放行
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor1执行了...前1111");
//被拦截后(return false)可以转到错误页面
// request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
return true;
}
/**
* 后处理方法,controller方法执行后,success.jsp执行之前
*/
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/**
* success.jsp页面执行后,该方法会执行
*/
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
配置拦截器:springmvc.xml
<!--配置拦截器-->
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法
<mvc:exclude-mapping path=""/>
-->
<!--配置拦截器对象-->
<bean class="cn.itcast.interceptor.MyInterceptor1" />
</mvc:interceptor>
</mvc:interceptors>