拦截器-Interceptor
- 拦截器(Interceptor)用于对URL请求进行前置/后置过滤
- Interceptor与Filter用途相似, 但实现方式不同
- Interceptor底层就是基于Spring AOP面向切面编程实现
拦截器开发流程
Maven依赖servlet-api
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.1.0</version>
<!--打包时不引用, 编译时引用-->
<scope>provided</scope>
</dependency>
实现HandlerInterceptor接口
- preHandle - 前置执行处理
- postHandle - 目标资源已被Spring MVC框架处理
- afterCompletion - 响应文本已经产生
public class MyInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request,HttpServletResponse response){
System.out.println(request.getrequestURL()+"准备执行");
return false;//返回true,向后传递, 返回false不向后传递, 直接返回响应
}
public postHandler(HttpServletRequest request,HttpServletResponse response){
System.out.println(request.getRequestURL()+"-目标处理成功");
}
public afterCompletion(HttpServletRequest request,HttpServletResponse response){
System.out.println(request.getRequestURL()+"-目标处理成功");
}
}
applicationContext配置过滤
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<!--<mvc:mapping path="/webapi/**" />-->
<mvc:exclude-mapping path="/**.ico" />
<mvc:exclude-mapping path="/**.jpg" />
<mvc:exclude-mapping path="/**.gif" />
<mvc:exclude-mapping path="/**.js" />
<mvc:exclude-mapping path="/**.css" />
<mvc:exclude-mapping path="/resources/**" />
<bean class="com.imooc.restful.interceptor.MyInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
多Interceptor执行顺序
Spring MVC处理流程
版权声明:本文为taoyong920710原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。