那么拦截器Inteceptinon中是如何实现拦截的呢
其实主要还是上面说的首先在Inteception链中增加多个拦截器(也就是上面的addInterceptions方法过滤的多个Intecepter)然后去执行三个方法
1、preHandle(controler执行前执行,返回false标示后面的拦截器不用再执行,已经执行完毕)
2、postHandle(controler执行后,modelView渲染前)
3、aftercomlication(modelView渲染后 主要作用是清理资源)
package com.ryc.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Interceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println(" 1在请求之前, 被执行");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println(" 1在完成业务之后 ,试图解析之前 执行");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println(" 1再完成视图解析之后");
}
}
以及 xml 配置 :
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*"/>
<bean id="" class="com.ryc.interceptor."
</mvc:interceptor>
</mvc:interceptors>