導航:首頁 > 凈水問答 > javaweb中過濾鏈的執行順序

javaweb中過濾鏈的執行順序

發布時間:2024-11-01 13:37:06

❶ 攔截器與過濾器的區別以及他們的執行順序

過濾器 是在java web中 你傳入的request response提前過濾掉一些信息 或者提前設置一些參數 然後再傳入servlet或者struts的 action進行業務邏輯 比如過濾掉非法url(不是login do的地址請求 如果用戶沒有登陸都過濾掉) 或者在傳入servlet或者 struts的action前統一設置字元集 或者去除掉一些非法字元

攔截器 是在面向切面編程的就是在你的service或者一個方法 前調用一個方法 或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現 在你調用方法前列印出字元串(或者做其它業務邏輯的操作) 也可以在你調用方法後列印出字元串 甚至在你拋出異常的時候做業務邏輯的操作

攔截器與過濾器的區別 攔截器是基於java的反射機制的 而過濾器是基於函數回調 攔截器不依賴與servlet容器 過濾器依賴與servlet容器 攔截器只能對action請求起作用 而過濾器則可以對幾乎所有的請求起作用 攔截器可以訪問action上下文 值棧里的對象 而過濾器不能訪問 在action的生命周期中 攔截器可以多次被調用 而過濾器只能在容器初始化時被調用一次

lishixin/Article/program/Web/201405/30789

❷ java web 過濾器跟攔截器的區別和使用

區別如下:

1 、攔截器是基於java的反射機制的,而過濾器是基於函數回調。

2 、攔截器不依賴與servlet容器,過濾器依賴與servlet容器。

3 、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。

4 、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。

5 、在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。

使用如下:

在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈里逐個處理,直到請求發送到目標為止。例如,某網站里有提交「修改的注冊信息」的網頁,當用戶填寫完修改信息並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的數據進行統一編碼。

這兩項工作可以在由兩個過濾器組成的過濾鏈里進行處理。當過濾器處理成功後,把提交的數據發送到最終目標;如果過濾器處理不成功,將把視圖派發到指定的錯誤頁面。

(2)javaweb中過濾鏈的執行順序擴展閱讀

攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的一種實現策略。

在Webwork的中文文檔的解釋為——攔截器是動態攔截Action調用的對象。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的代碼,也可以在一個action執行前阻止其執行。同時也是提供了一種可以提取action中可重用的部分的方式。

過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。

❸ Servlet 3.0 之@WebFilter怎麼控制多個filter的執行順序

之前我們控制多個filter的執行順序是通過web.xml中控制filter的位置來控制的,放在上面的會比放在下面的先執行,如下「用戶登錄檢查過濾器」會比「介面日誌過濾器」先執行

<!--用戶登錄檢測過濾器-->
<filter>
<filter-name>UserLoginFilter</filter-name>
<filter-class>net.tfgzs.demo.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserLoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--介面日誌過濾器-->
<filter>
<filter-name>ApiLog</filter-name>
<filter-class>net.tfgzs.demo.filter.ApiLog</filter-class>
</filter>
<filter-mapping>
<filter-name>ApiLog</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

但是當我們使用@WebFilter註解的時候發現註解裡面沒有提供可以控制執行順序的參數

通過實踐發現如果想要控制filer的執行順序可以通過控制filter的文件名來控制

比如:

UserLoginFilter.java 和 ApiLog.java 這兩個文件裡面分別是「用戶登錄檢查過濾器」和「介面日誌過濾器」,因為這兩個文件的
首字母A排U之前

,導致每次執行的時候都是先執行「介面日誌過濾器」再執行「用戶登錄檢查過濾器」,所以我們現在修改兩個文件的名稱分別為

Filter0_UserLogin.java

Filter1_ApiLog.java

這樣就能先執行「用戶登錄檢查過濾器」再執行「介面日誌過濾器」

❹ java過濾器中的FilterChain對象

1、什麼是過濾器?
與Servlet相似,過濾器是一些web應用程序組件,可以綁定到一個web應用程序中。但是與其他web應用程序組件不同的是,過濾器是"鏈"在容器的處理過程中的。這就意味著它們會在servlet處理器之前訪問一個進入的請求,並且在外發響應信息返回到客戶前訪問這些響應信息。這種訪問使得過濾器可以檢查並修改請求和響應的內容。
2、過濾鏈FilterChain
兩個過濾器,EncodingFilter負責設置編碼,SecurityFilter負責控制許可權,伺服器會按照web.xml中過濾器定義的先後循序組裝成一條鏈,然後一次執行其中的doFilter()方法。執行的順序就如下圖所示,執行第一個過濾器的chain.doFilter()之前的代碼,第二個過濾器的chain.doFilter()之前的代碼,請求的資源,第二個過濾器的chain.doFilter()之後的代碼,第一個過濾器的chain.doFilter()之後的代碼,最後返回響應。
3、過濾鏈的好處是,執行過程中任何時候都可以打斷,只要不執行chain.doFilter()就不會再執行後面的過濾器和請求的內容。而在實際使用時,就要特別注意過濾鏈的執行順序問題,像EncodingFilter就一定要放在所有Filter之前,這樣才能確保在使用請求中的數據前設置正確的編碼。

閱讀全文

與javaweb中過濾鏈的執行順序相關的資料

熱點內容
美的花生濾芯怎麼沖洗 瀏覽:425
雪鐵龍愛麗舍如何換空氣濾芯 瀏覽:162
污水處理站的規劃建議 瀏覽:346
廁所污水ph如何測 瀏覽:975
用隔奶墊會回奶嗎 瀏覽:193
污水酸鹼度檢測的重要性 瀏覽:686
凈水機為什麼要加消毒液 瀏覽:436
pcb電鍍哪些設備需要排污水 瀏覽:987
三合一過濾要24小時開 瀏覽:702
玻璃鋼樹脂瓦防火嗎 瀏覽:352
凈水器反滲透 瀏覽:776
村裡飲水機的水怎麼感覺苦呢 瀏覽:956
某污水處理廠葡萄糖投加試驗 瀏覽:388
和森活凈化器遠程式控制制怎麼設置 瀏覽:793
不飽和聚酯樹脂延時加固化 瀏覽:91
日本核污水對中國哪些城市有影響 瀏覽:964
滲透汽化膜技術處理廢水 瀏覽:867
農村每人每天用水量和污水量 瀏覽:935
檸檬酸除垢劑清除管道 瀏覽:385
反滲透入口鐵含量 瀏覽:501