java自定義攔截器 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配置不需要攔截的路徑
        //多攔截器配置
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM