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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

serlvet中的过滤器filter

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

1.概念

   過濾作用,對從客戶端向服務器端發送的請求進行過濾,也可以對服務器端返回的響應進行處理。它使用戶可以改變一個request和修改一個 response.。Filter 不是一個servlet,它不能產生一個response,但是它能夠在一個request到達servlet之前預處理request,也可以在 response離開servlet時處理response。換句話說,filter其實是客戶端與servlet中間的一個傳遞者,并且它可以對要傳遞 的東西進行修改。

?

 注意:過濾器是用來攔截請求和響應的,不能產生響應,而servlet是用來處理請求并產生響應的。

?

?

2.適用場合

  實現URL級別的權限訪問控制,過濾敏感詞匯,壓縮響應信息等。

?

?

3.過濾器如何實現攔截

  • 當客戶端發生請求后,在HttpServletRequest 到達Servlet 之前,過濾器攔截客戶的HttpServletRequest 。?
  • 根據需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數據。?
  • 在過濾器中調用doFilter方法,對請求放行。請求到達Servlet后,對請求進行處理并產生HttpServletResponse發送給客戶端。
  • 在HttpServletResponse 到達客戶端之前,過濾器攔截HttpServletResponse 。?
  • 根據需要檢查HttpServletResponse ,可以修改HttpServletResponse 頭和數據。
  • 最后,HttpServletResponse到達客戶端。

?

?

4.Filter接口

  Servlet API提供了一個Filter接口,編寫的過濾器必須實現該接口。

?

?

5.Filter的生命周期

(1)Filter接口中有三個重要的方法。

  • init()方法:初始化參數,在創建Filter時自動調用。當我們需要設置初始化參數的時候,可以寫到該方法中。
  • doFilter()方法:攔截到要執行的請求時,doFilter就會執行。這里面寫我們對請求和響應的預處理。
  • destroy()方法:在銷毀Filter時自動調用。

?

(2)Filter的生命周期

   ?Filter的創建和銷毀由web服務器控制。

  • 服務器啟動的時候,web服務器創建Filter的實例對象,并調用其init方法,完成對象的初始化功能。filter對象只會創建一次,init方法也只會執行一次。
  • 攔截到請求時,執行doFilter方法。可以執行多次。
  • 服務器關閉時,web服務器銷毀Filter的實例對象。

?

?

6.Filter對象——FilterConfig

  用 戶在配置filter時,可以使用<init-param>為filter配置一些初始化參數,當web容器實例化Filter對象,調用其 init方法時,會把封裝了filter初始化參數的filterConfig對象傳遞進來。因此開發人員在編寫filter時,通過 filterConfig對象的方法,就可獲得:

  • String getFilterName():得到filter的名稱。
  • String getInitParameter(String name): 返回在部署描述中指定名稱的初始化參數的值。如果不存在返回null.
  • Enumeration getInitParameterNames():返回過濾器的所有初始化參數的名字的枚舉集合。
  • public ServletContext getServletContext():返回Servlet上下文對象的引用。

?

?

7.過濾器鏈——FilterChain

  一組過濾器對某些web資源進行攔截,那么這組過濾器就稱為過濾器鏈。過濾器的執行順序和<filter-mapping>有關(誰在前先執行誰)。

?

轉載于:https://www.cnblogs.com/formyfish/p/10585179.html

總結

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

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