一、拦截器
SpringMVC中的拦截器:
1、SpringMVC拦截器帮我们按照一定规则拦截请求,后根据开发人员自定义的拦截逻辑进行处理;
2、自定义拦截器需要实现HandlerInterceptor接口;
3、自定义的拦截器实现类需要在SpringMVC配置文件中配置;
4、可以配置多个拦截器,配置的顺序会影响到拦截器的执行顺序,先配先执行
5、HandlerInterceptor共3个接口:
a) preHandler 预处理:在拦截方法前执行;
b) postHandler 后处理:在拦截方法后执行;
c) afterCompletion 渲染后处理:在页面渲染后执行;
6、拦截器也体现了AOP思想
7、应用:权限检查、日志记录、性能检测等;
拦截器的执行流程图:(图来自www.sikiedu.com)
8、多拦截器执行流程
自定义多个拦截器,示例拦截器1号
/**
*
* @author Dunka
* @Time 2019年3月4日
* @Todo 自定义拦截器1
*/
public class MyInterceptor1 implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("1 preHandle 预处理");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("1 postHandle 后处理");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("1 afterCompletion 渲染页面后处理");
}
}
在spring容器注入所需的拦截器
<!-- 配置多个拦截器 -->
<mvc:interceptors>
<!-- 拦截器1 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.dunka.interceptor.MyInterceptor1"/>
</mvc:interceptor>
<!-- 拦截器2 -->
<mvc:interceptor>
<mvc:mapping p