SpringMVC拦截器

概述

SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。

拦截器

  • 拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
  • 拦截器只会拦截访问控制器方法。如果访问的是 jsp/html/css/image/js 是不会进行拦截的

过滤器

  • servlet规范中的一部分,任何java web工程都可以使用
  • 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截

过滤器与拦截器的区别:

拦截器是AOP思想的具体应用

自定义拦截器

那如何实现拦截器呢?

想要自定义拦截器,必须实现 HandlerInterceptor 接口

  1. 新建一个Moudule,springmvc-07-interceptor,添加web支持
  2. 配置web.xml 和applicationContext.xml文件

    <!--    拦截器配置-->
    <mvc:interceptors>
      <mvc:interceptor>
        <!--            包括这个请求下面的所有的请求-->
        <mvc:mapping path="/**"/>
        <bean class="com.yiyu.config.MyInterceptor"/>
      </mvc:interceptor>
    </mvc:interceptors>
  3. 编写一个拦截器
package com.yiyu.config;

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 {


//    return ture;执行下一个拦截器,放行
//    return false;不执行下一个拦截器,放行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("==========处理前==================");
        return true;
    }

//    日志
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("==========处理后==================");
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

//
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("==========清理==================");
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
  • return true :放行
  • return false :不放行
  • preHandle:处理前
  • postHandle:处理后
  • afterCompletion:清理
最后修改:2023 年 01 月 31 日
如果觉得我的文章对你有用,请随意赞赏