Spring中拦截器的操作
拦截器,简单概述:
对处理器请求进行预处理和后处理
拦截器和过滤器的区别简单介绍
作用范围:过滤器web所有请求,拦截器拦截前端控制器的请求
使用范围:过滤器任何JavaWeb项目都可以使用,拦截器在SpringMVC中使用
快速入门
- 写一个类,实现HandlerInterceptor接口
preHandler:执行目标方法前,返回true放行
postHandler:执行目标方法之后,返回视图对象之前
afterCompletion:所有流程执行后后 - 注册拦截器,配置其拦截路径
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
//在目标方法执行之前
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
//在目标方法执行之后,视图对象返回之前
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
//在所有流程执行完毕之后
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
配置
<!--拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<!--这里配置的路径不会被拦截-->
<!--<mvc:exclude-mapping path=" "/>-->
<bean class="com.trc.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>