溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java?SpringMVC如何實現自定義攔截器

發布時間:2022-03-16 09:04:50 來源:億速云 閱讀:258 作者:iii 欄目:開發技術

本篇內容主要講解“Java SpringMVC如何實現自定義攔截器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java SpringMVC如何實現自定義攔截器”吧!

    SpringMVC實現自定義攔截器

    1 攔截器(interceptor)的作用

    Spring MVC 的攔截器類似于 Servlet 開發中的過濾器 Filter,用于對處理器進行預處理和后處理。

    將攔截器按一定的順序聯結成一條鏈,這條鏈稱為攔截器鏈(InterceptorChain)。在訪問被攔截的方法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。攔截器也是AOP思想的具體實現。

    2 攔截器和過濾器區別

    關于interceptor和filter的區別,如圖所示:

    Java?SpringMVC如何實現自定義攔截器

    3.實現過程

    步驟分析:

    1.創建攔截器類實現HandlerInterceptor接口

    2.配置攔截器

    3.測試攔截器的攔截效果

    3.1創建攔截器類實現HandlerInterceptor接口
    public class MyInterceptor implements HandlerInterceptor {
        /**
         *         preHandle: 在目標方法執行之前 進行攔截   return false:不放行
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("preHandle1....");
            return true;
        }
        /**
         *       postHandle: 在目標方法執行之后,視圖對象返回之前,執行的方法
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("postHandle1....");
        }
        /**
         *        afterCompletion:在流程都執行完成后,執行的方法
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("afterCompletion1....");
        }
    
    }
    3.2配置攔截器
    <!--    配置攔截器-->
        <mvc:interceptors>
            <mvc:interceptor>
                <!--對哪些資源執行攔截操作 path="/**"表示對controller層所有方法進行攔截 -->
                <mvc:mapping path="/**" />
                <bean class="com.weihong.interceptor.MyInterceptor" />
            </mvc:interceptor>
        </mvc:interceptors>
    3.3測試攔截器的攔截效果
        @RequestMapping("/target")
        public String targetMethed(){
            System.out.println("目標方法執行了");
            return "interceptor";
        }
    3.4編寫jsp頁面
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h4>success~~~~~~</h4>
        <% System.out.println("視圖執行了....");%>
    </body>
    </html>
    3.5測試結果

    Java?SpringMVC如何實現自定義攔截器

    4. 攔截器鏈

    開發中攔截器可以單獨使用,也可以同時使用多個攔截器形成一條攔截器鏈。開發步驟和單個攔截器是一樣的,只不過注冊的時候注冊多個,注意這里注冊的順序就代表攔截器執行的順序。

    同上,再編寫一個MyHandlerInterceptor2操作,測試執行順序:

    <!--配置攔截器-->
    <mvc:interceptors>
      <mvc:interceptor>
        <!--攔截器路徑配置-->
        <mvc:mapping path="/**"/>
        <!--自定義攔截器類-->
        <bean class="com.lagou.interceptor.MyInterceptor1"></bean>
      </mvc:interceptor>
      <mvc:interceptor>
        <!--攔截器路徑配置-->
        <mvc:mapping path="/**"/>
        <!--自定義攔截器類-->
        <bean class="com.lagou.interceptor.MyInterceptor2"></bean>
      </mvc:interceptor>
    </mvc:interceptors>

    到此,相信大家對“Java SpringMVC如何實現自定義攔截器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女