HandlerInterceptorAdapter或HandlerInterceptor的使用

Posted h-c-g

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HandlerInterceptorAdapter或HandlerInterceptor的使用相关的知识,希望对你有一定的参考价值。

  • Spring拦截器
  • HandlerInterceptorAdapter需要继承,HandlerInterceptor需要实现
  • 可以作为日志记录和登录校验来使用
  • 建议使用HandlerInterceptorAdapter,因为可以按需进行方法的覆盖。

主要为3种方法:

  • preHandle:拦截于请求刚进入时,进行判断,需要boolean返回值,如果返回true将继续执行,如果返回false,将不进行执行。一般用于登录校验。
  • postHandle:拦截于方法成功返回后,视图渲染前,可以对modelAndView进行操作。
  • afterCompletion:拦截于方法成功返回后,视图渲染前,可以进行成功返回的日志记录。

springmvc的配置xml

<!-- 拦截器配置,拦截顺序:先执行后定义的,排在第一位的最后执行。 -->
<mvc:interceptors>
    <!-- 可配置多个-->
    <mvc:interceptor>
        <!-- mapping path 表示 需要拦截的url-->
        <mvc:mapping path="${adminPath}/**" />
        <!-- exclude-mapping path 表示 需要排除拦截的url-->
        <mvc:exclude-mapping path="${adminPath}/" />
        <mvc:exclude-mapping path="${adminPath}/login" />
        <!-- bean 表示拦截器的类-->
        <bean class="org.jasig.cas.web.interceptor.LogInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

springboot的注解配置

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    private static final Logger logger =  LoggerFactory.getLogger(InterceptorConfig.class);

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authenticationInterceptor())
                .addPathPatterns("/**");
        registry.addInterceptor(loginInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/css/**","/images/**","/js/**","/login.html");
        // 拦截所有请求,通过判断是否有 @LoginRequired 注解 决定是否需要登录或者通过excludePathPatterns配置不需要拦截的路径
        //多拦截器配置
    }

   

 

以上是关于HandlerInterceptorAdapter或HandlerInterceptor的使用的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 HandlerInterceptorAdapter 中 postHandle 异常?

HandlerInterceptorAdapter 在使用 Spring Security 登录时不运行

调用HandlerInterceptorAdapter子类的postHandle方法时,ModelAndView为null

Spring中RequestContextHolder以及HandlerInterceptorAdapter的使用

spring拦截器HandlerInterceptorAdapter,能不能控制范围?

利用spring框架提供的HandlerInterceptorAdapter,实现自定义拦截器