亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

SpringMVC?HandlerInterceptor攔截器的使用與參數是什么

發布時間:2022-01-19 09:11:02 來源:億速云 閱讀:174 作者:柒染 欄目:開發技術

這篇文章的內容主要圍繞SpringMVC HandlerInterceptor攔截器的使用與參數是什么進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

攔截器概念:

  • 攔截器( Interceptor)是一種動態攔截方法調用的機制,請求處理過程解析

  • 核心原理: AOP思想

  • 攔截器鏈:多個攔截器按照一定的順序,對原始被調用功能進行增強

作用:

  • 在指定的方法調用前后執行預先設定后的的代碼

  • 阻止原始方法的執行

SpringMVC?HandlerInterceptor攔截器的使用與參數是什么

攔截器VS過濾器

歸屬不同: 過濾器屬于Servlet技術, 攔截器屬于SpringMVC技術攔截內容不同: 過濾器對所有訪問進行增強, 攔截器僅針對SpringMVC的訪問進行增強

SpringMVC?HandlerInterceptor攔截器的使用與參數是什么

攔截器執行流程:

SpringMVC?HandlerInterceptor攔截器的使用與參數是什么

自定義攔截器開發過程:

實現HandlerInterceptor接口

//自定義攔截器需要實現HandleInterceptor接口
public class MyInterceptor implements HandlerInterceptor {

    //前置處理方法:原始方法之前執行
    @Override
    public boolean preHandle(HttpServletRequest request, //請求對象
                             HttpServletResponse response, //響應對象
                             Object handler)   // 被調用的處理器對象,本質是一個方法對象,對反射中的Method對象進行了再包裝,對方法進行封裝加強,操作原始對象,
                                       throws Exception {
        System.out.println("前置運行");
        //返回值為false將攔截原始處理器的運行,也就是是否放行,如果是false后面的代碼不會運行,如果是true就繼續執行下面的代碼
        //如果配置多攔截器,返回值為false將終止當前攔截器后面配置的攔截器的運行
        return true;
    }


    //后置處理方法:原始方法運行后運行,如果原始方法被攔截,則不執行
    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response,
                           Object handler,
                           ModelAndView modelAndView) // 如果處理器執行完成具有返回結果,可以讀取到對應數據與頁面信息進行調整
                           throws Exception {
        System.out.println("后置運行");
    }


    // 完成處理方法:攔截器最后執行的方法,無論原始方法是否執行
    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response,
                                Object handler,
                                Exception ex) // 如果處理器執行過程中出現異常對象,可以針對異常情況進行單獨處理
                                throws Exception {
        System.out.println("完成運行");
    }

    //三個方法的運行順序為    preHandle -> postHandle -> afterCompletion
    //如果preHandle返回值為false,三個方法僅運行preHandle
}

攔截器配置項:

<mvc:interceptors>
    <!--開啟具體的攔截器的使用,可以配置多個-->
    <mvc:interceptor>
        <!--設置攔截器的攔截路徑,支持*通配-->
        <!--/**         表示攔截所有映射-->
        <!--/*          表示攔截所有/開頭的映射-->
        <!--/user/*     表示攔截所有/user/開頭的映射-->
        <!--/user/add*  表示攔截所有/user/開頭,且具體映射名稱以add開頭的映射-->
        <!--/user/*All  表示攔截所有/user/開頭,且具體映射名稱以All結尾的映射-->
        <mvc:mapping path="/*"/>
        <mvc:mapping path="/**"/>
        <mvc:mapping path="/handleRun*"/>
        <!--設置攔截排除的路徑,配置/**或/*,達到快速配置的目的-->
        <mvc:exclude-mapping path="/b*"/>
        <!--指定具體的攔截器類 bean標簽(ref標簽)只能配置一個  
        ref:引用bean的 -->
        <bean class="com.itzhuzhu.interceptor.MyInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

多攔截器配置:

運行順序:配置在前,則執行在前。

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/showPage"/>
            <bean class="com.itzhuzhu.interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/showPage"/>
            <bean class="com.itzhuzhu.interceptor.MyInterceptor2"/>
        </mvc:interceptor>
    </mvc:interceptors>

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/showPage"/>
            <bean class="com.itzhuzhu.interceptor.MyInterceptor3"/>
        </mvc:interceptor>
    </mvc:interceptors>

多攔截器執行順序:

SpringMVC?HandlerInterceptor攔截器的使用與參數是什么

責任鏈模式

責任鏈模式是一種行為模式

特征:

沿著一條預先設定的任務鏈順序執行,每個節點具有獨立的工作任務

優勢:

  • 獨立性:只關注當前節點的任務,對其他任務直接放行到下一節點

  • 隔離性:具備鏈式傳遞特征,無需知曉整體鏈路結構,只需等待請求到達后進行處理即可

  • 靈活性:可以任意修改鏈路結構動態新增或刪減整體鏈路責任

  • 解耦:將動態任務與原始任務解耦

弊端:

  • 鏈路過長時,處理效率低下

  • 可能存在節點上的循環引用現象,造成死循環,導致系統崩潰

感謝你的閱讀,相信你對“SpringMVC HandlerInterceptor攔截器的使用與參數是什么”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!

向AI問一下細節

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

AI

康保县| 龙州县| 当阳市| 满城县| 大荔县| 房山区| 左云县| 奉化市| 东港市| 济南市| 满城县| 黔西| 贡觉县| 宜章县| 莒南县| 静乐县| 巴彦淖尔市| 开远市| 团风县| 盖州市| 襄樊市| 尼玛县| 仁布县| 彩票| 康马县| 特克斯县| 樟树市| 闵行区| 新沂市| 哈密市| 德令哈市| 峨眉山市| 察隅县| 双流县| 华安县| 平遥县| 子长县| 缙云县| 宁城县| 浦北县| 崇文区|