实现拦截器,必须实现接口HandlerInterceptor : org.springframework.web.servlet.HandlerInterceptor
preHandle :可以拦截请求
postHandle : 可以拦截响应
afterCompletion : jsp渲染完成后,最终显示出来
一、编写拦截器,实现HandlerInterceptor接口
public class MyInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
System.out.println("第一个拦截器 : 拦截请求");
return true;//true 表示处理完成后,请求继续 false 表示截断请求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
System.out.println("第一个拦截器 : 拦截响应");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
System.out.println("第一个拦截器 : 渲染完成");
}
}
二、配置springmvc.xml,将自定义拦截器配置到spring 容器中
1、默认拦截所有请求
<!-- 将自定义拦截器配置到spring 容器中 : 默认拦截所有请求 -->
<!-- 拦截所有请求 -->
<mvc:interceptors>
<bean class="com.zyfmvc.interceptor.MyInterceptor"></bean>
</mvc:interceptors>
2、指定拦截请求
<!-- 拦截指定请求 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 指定拦截路径 -->
<mvc:mapping path="/handler/*"/>
<!-- 指定排除拦截路径 -->
<mvc:exclude-mapping path="/handler/testUpload"/>
<bean class="com.zyfmvc.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
3、多个拦截器
<!-- 多个拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/handler/*"/>
<bean class="com.zyfmvc.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/handler/*"/>
<bean class="com.zyfmvc.interceptor.MySecInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
拦截结果如下(1-2-2-1-2-1):
第一个拦截器 : 拦截请求
第二个拦截器:拦截请求
第二个拦截器:拦截响应
第一个拦截器 : 拦截响应
第二个拦截器:渲染完成
第一个拦截器 : 渲染完成