<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Filter與Interceptor的區(qū)別

      前言
      在看springboot項目時,其中的會話持續(xù)時,了解到token,session,jwt等方法,但是接著我就了解到過濾器(Filter)以及攔截器(Interceptor),感覺這兩個東西真的有夠像的了,也是去看了好多篇文章。接下來就分別講一下,F(xiàn)ilter與Interceptor,最后講一下兩者的區(qū)別。(本篇參考了幾篇博客,我會在對應(yīng)處留下鏈接的)

      過濾器(Filter)
      基于Servlet實現(xiàn),是將java web傳入的request、以及響應(yīng)的response提前過濾掉一些信息或設(shè)置一點參數(shù)。
      Filter過濾器隨web應(yīng)用的啟動而啟動,且只初始化一次。

      Filter接口內(nèi),需實現(xiàn)init、doFilter以及destroy方法

      void init(FilterConfig filterConfig):容器啟動會調(diào)用用于初始化,整個程序運行期只會被調(diào)用一次。

      void doFilter(ServletRequest request, ServletResponse response,FilterChain chain):doFilter為具體的過濾功能代碼。

      void destroy():當(dāng)Filter 要銷毀時,進行相關(guān)資源的回收工作。

      攔截器(Interceptor)

      是SpringMVC中實現(xiàn)的一種基于Java反射,是在Action執(zhí)行的前后執(zhí)行一段代碼或執(zhí)行前阻止其執(zhí)行。

      需實現(xiàn)preHandle、postHandle以及afterCompletion方法
      boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handle):在請求前被調(diào)用。就如我們開始說的jwt的問題,在執(zhí)行操作之前會先要驗證用戶的登錄信息,這個就可以在這個方法中實現(xiàn),如果驗證成功則返回 true,繼續(xù)執(zhí)行數(shù)據(jù)操作業(yè)務(wù);否則就返回 false,后續(xù)操作數(shù)據(jù)的業(yè)務(wù)就不會被執(zhí)行了。
      void postHandle(HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView):調(diào)用請求方法之后執(zhí)行,但它會在 DispatcherServlet (前端控制器)進行渲染視圖之前被執(zhí)行。
      void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex):會在請求結(jié)束之后再執(zhí)行,也就是在 DispatcherServlet (前端控制器)渲染了對應(yīng)的視圖之后再執(zhí)行。

      主要區(qū)別
      1.Filter的生命周期由Servlet容器管理,而攔截器則可以通過IoC容器來管理。
      2.過濾器是在請求進入容器后、進入servlet之前進行預(yù)處理的。請求結(jié)束返回也是,是在servlet處理完后,返回給前端之前。
      就是過濾器會先執(zhí)行,然后才會執(zhí)行攔截器,執(zhí)行時機不同。
      (圖片來源https://cloud.tencent.com/developer/article/2142914)

      3.最簡單明了的區(qū)別(參考https://zhuanlan.zhihu.com/p/340397290)
      過濾器可以修改request,而攔截器不能
      過濾器需要在servlet容器中實現(xiàn),攔截器可以適用于javaEE,javaSE等各種環(huán)境
      攔截器可以調(diào)用IOC容器中的各種依賴,而過濾器不能
      過濾器只能在請求的前后使用,而攔截器可以詳細到每個方法

      過濾器(Filter) :可以拿到原始的http請求,但是拿不到你請求的控制器和請求控制器中的方法的信息。
      攔截器(Interceptor):可以拿到你請求的控制器和方法,卻拿不到請求方法的參數(shù)。
      切片(Aspect): 可以拿到方法的參數(shù),但是卻拿不到http請求和響應(yīng)的對象

      4.使用場景

      攔截器使用場景:
      登錄驗證,判斷用戶是否登錄。
      權(quán)限驗證,判斷用戶是否有權(quán)限訪問資源,如校驗token

      過濾器使用場景:
      URL級別的權(quán)限訪問控制
      過濾敏感詞匯(防止sql注入)
      設(shè)置字符編碼

      最后我看到一個問題:攔截器只能攔截部分web請求,這句話怎么理解?(https://segmentfault.com/a/1190000037755221#item-4-1)
      攔截器的攔截,是基于java反射機實現(xiàn),攔截對象只能是實現(xiàn)了接口的類,而不能攔截url這種鏈接

      posted @ 2025-05-03 13:00  Lxx-123  閱讀(332)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲熟女乱色一区二区三区| 国产又粗又猛又爽又黄| 久久se精品一区精品二区国产| 色又黄又爽18禁免费视频| 99久久精品国产一区色| 日本高清一区免费中文视频| 国产精品一区二区在线欢| 午夜高清福利在线观看| 久久天天躁狠狠躁夜夜婷| 中文字幕久久波多野结衣av| 亚洲色无码播放亚洲成av| 麻豆亚州无矿码专区视频| 少妇真人直播免费视频| 精品无码一区在线观看| 中国大陆高清aⅴ毛片| 亚洲综合91社区精品福利| 成在线人午夜剧场免费无码| 视频免费完整版在线播放| AV无码免费不卡在线观看| 疯狂做受xxxx高潮欧美日本| 女同亚洲精品一区二区三| 欧美日韩国产亚洲沙发| 成人aⅴ综合视频国产| 污网站在线观看视频| 日本美女性亚洲精品黄色| 中国CHINA体内裑精亚洲日本| 国产欧美日韩精品丝袜高跟鞋| 美女人妻激情乱人伦| 亚洲国产成人资源在线| 国产乱人对白| 人妻中文字幕不卡精品| 日韩一区在线中文字幕| 中文字幕人妻精品在线| 亚洲中文字幕人妻系列| 久久天天躁综合夜夜黑人鲁色| 最近中文字幕国产精选| 中文字幕精品无码一区二区| 亚洲红杏AV无码专区首页| 国产精品高清一区二区三区| 嘉定区| 久久综合给合久久狠狠狠88|