【SpringMVC学习笔记】9.SpringMVC添加拦截器

拦截器-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版权协议,转载请附上原文出处链接和本声明。