日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

过滤器与拦截器区别

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 过滤器与拦截器区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

過濾器與攔截器區別

參考:http://www.cnblogs.com/dreamroute/p/4198087.html?utm_source=tuicool

過濾器

過濾器是一個程序,它先于與之相關的servlet或JSP頁面運行在服務器上。它是隨你的web應用啟動而啟動的,只初始化一次,以后就可以攔截相關請求,只有當你的web應用停止或重新部署的時候才銷毀。
作用
請求和回應的過濾,傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然后再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者struts的action前統一設置字符集,或者去除掉一些非法字符(聊天室經常用到的,一些罵人的話)。

Servlet過濾器的基本原理
在請求進入容器之后,還未進入Servlet之前進行預處理;在請求結束返回給前端之前進行后期處理。處理完成后,它會交給下一個過濾器處理,直到請求發送到目標為止。

攔截器

攔截器,在AOP(Aspect-Oriented Programming)中用于在某個方法或字段被訪問之前,進行攔截然后在之前或之后加入某些操作。比如日志,安全等。
攔截器鏈,就是將攔截器按一定的順序聯結成一條鏈。在訪問被攔截的方法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。
一般攔截器方法都是通過動態代理的方式實現。

作用
比如通過它來進行權限驗證,或者判斷用戶是否登陸,或者是像12306 判斷當前時間是否是購票時間。

區別

  ①攔截器是基于動態代理的,而過濾器是基于函數回調。
  ②攔截器不依賴于servlet容器,通過動態代理實現,過濾器依賴于servlet容器。
  ③攔截器可以在方法前后,異常前后等調用,而過濾器只能在請求前和請求后各調用一次。
  ④攔截器可以利用依賴注入,因此在Spring框架程序中,優先攔截器。

1.過濾器是JavaEE標準,采用函數回調的方式進行。是在請求進入容器之后,還未進入Servlet之前進行預處理,并且在請求結束返回給前端這之間進行后期處理。

@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("before...");chain.doFilter(request, response);System.out.println("after...");}

2.攔截器是被包裹在過濾器之中的。

@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion");}

看一下執行順序

轉載于:https://www.cnblogs.com/xzwblog/p/6832509.html

總結

以上是生活随笔為你收集整理的过滤器与拦截器区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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