日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SpringMVC-HandlerInterceptor拦截器的使用与参数详解

發布時間:2025/3/15 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC-HandlerInterceptor拦截器的使用与参数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

攔截器概念:

  • 攔截器( Interceptor)是一種動態攔截方法調用的機制,請求處理過程解析
  • 核心原理: AOP思想
  • 攔截器鏈:多個攔截器按照一定的順序,對原始被調用功能進行增強

作用:

  • 在指定的方法調用前后執行預先設定后的的代碼
  • 阻止原始方法的執行
  • 攔截器VS過濾器

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

    攔截器執行流程:

    自定義攔截器開發過程:

    實現HandlerInterceptor接口

    //自定義攔截器需要實現HandleInterceptor接口 public class MyInterceptor implements HandlerInterceptor {//前置處理方法:原始方法之前執行@Overridepublic boolean preHandle(HttpServletRequest request, //請求對象HttpServletResponse response, //響應對象Object handler) // 被調用的處理器對象,本質是一個方法對象,對反射中的Method對象進行了再包裝,對方法進行封裝加強,操作原始對象,throws Exception {System.out.println("前置運行");//返回值為false將攔截原始處理器的運行,也就是是否放行,如果是false后面的代碼不會運行,如果是true就繼續執行下面的代碼//如果配置多攔截器,返回值為false將終止當前攔截器后面配置的攔截器的運行return true;}//后置處理方法:原始方法運行后運行,如果原始方法被攔截,則不執行@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView) // 如果處理器執行完成具有返回結果,可以讀取到對應數據與頁面信息進行調整throws Exception {System.out.println("后置運行");}// 完成處理方法:攔截器最后執行的方法,無論原始方法是否執行@Overridepublic 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拦截器的使用与参数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。