自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Servlet過濾器是什么

開發(fā) 后端
本文介紹Servlet過濾器是什么,包括Servlet過濾器中結(jié)合了許多元素,以及介紹Servlet過濾器體系結(jié)構(gòu)。

Servlet API 很久以前就已成為企業(yè)應(yīng)用開發(fā)的基石,而 Servlet過濾器則是對(duì) J2EE 家族的相對(duì)較新的補(bǔ)充。在 J2EE 探索者 系列文章的***一篇中,作者 Kyle Gabhart 將向您介紹 Servlet過濾器體系結(jié)構(gòu),定義過濾器的許多應(yīng)用,并指導(dǎo)您完成典型過濾器實(shí)現(xiàn)的三個(gè)步驟。他還會(huì)透露 bean 的一些激動(dòng)人心的變化,預(yù)計(jì)剛發(fā)布的 Java Servlet 2.4 規(guī)范會(huì)引入這些變化。

Servlet過濾器是可插入的 Web 組件,它允許我們實(shí)現(xiàn) Web 應(yīng)用程序中的預(yù)處理和后期處理邏輯。過濾器支持 servlet 和 JSP 頁(yè)面的基本請(qǐng)求處理功能,比如日志記錄、性能、安全、會(huì)話處理、XSLT 轉(zhuǎn)換,等等。 過濾器最初是隨 Java Servlet 2.3 規(guī)范發(fā)布的,最近定稿的 2.4 規(guī)范對(duì)它進(jìn)行了重大升級(jí)。在這 J2EE 探索者 系列文章的***一篇中,我將向您介紹 Servlet過濾器的基礎(chǔ)知識(shí) —— 比如總體的體系結(jié)構(gòu)設(shè)計(jì)、實(shí)現(xiàn)細(xì)節(jié),以及在 J2EE Web 應(yīng)用程序中的典型應(yīng)用,還會(huì)涉及一些預(yù)計(jì)***的 Servlet 規(guī)范將會(huì)提供的擴(kuò)展功能。

Servlet過濾器是什么?
Servlet過濾器是小型的 Web 組件,它們攔截請(qǐng)求和響應(yīng),以便查看、提取或以某種方式操作正在客戶機(jī)和服務(wù)器之間交換的數(shù)據(jù)。過濾器是通常封裝了一些功能的 Web 組件,這些功能雖然很重要,但是對(duì)于處理客戶機(jī)請(qǐng)求或發(fā)送響應(yīng)來說不是決定性的。典型的例子包括記錄關(guān)于請(qǐng)求和響應(yīng)的數(shù)據(jù)、處理安全協(xié)議、管理會(huì)話屬性,等等。過濾器提供一種面向?qū)ο蟮哪K化機(jī)制,用以將公共任務(wù)封裝到可插入的組件中,這些組件通過一個(gè)配置文件來聲明,并動(dòng)態(tài)地處理。

Servlet過濾器中結(jié)合了許多元素,從而使得過濾器成為獨(dú)特、強(qiáng)大和模塊化的 Web 組件。也就是說,Servlet過濾器是:

聲明式的:過濾器通過 Web 部署描述符(web.xml)中的 XML 標(biāo)簽來聲明。這樣允許添加和刪除過濾器,而無需改動(dòng)任何應(yīng)用程序代碼或 JSP 頁(yè)面。

動(dòng)態(tài)的:過濾器在運(yùn)行時(shí)由 Servlet 容器調(diào)用來攔截和處理請(qǐng)求和響應(yīng)。

靈活的:過濾器在 Web 處理環(huán)境中的應(yīng)用很廣泛,涵蓋諸如日志記錄和安全等許多最公共的輔助任務(wù)。過濾器還是靈活的,因?yàn)樗鼈兛捎糜趯?duì)來自客戶機(jī)的直接調(diào)用執(zhí)行預(yù)處理和后期處理,以及處理在防火墻之后的 Web 組件之間調(diào)度的請(qǐng)求。***,可以將過濾器鏈接起來以提供必需的功能。

模塊化的:通過把應(yīng)用程序處理邏輯封裝到單個(gè)類文件中,過濾器從而定義了可容易地從請(qǐng)求/響應(yīng)鏈中添加或刪除的模塊化單元。

可移植的:與 Java 平臺(tái)的其他許多方面一樣,Servlet過濾器是跨平臺(tái)和跨容器可移植的,從而進(jìn)一步支持了 Servler 過濾器的模塊化和可重用本質(zhì)。

可重用的:歸功于過濾器實(shí)現(xiàn)類的模塊化設(shè)計(jì),以及聲明式的過濾器配置方式,過濾器可以容易地跨越不同的項(xiàng)目和應(yīng)用程序使用。

透明的:在請(qǐng)求/響應(yīng)鏈中包括過濾器,這種設(shè)計(jì)是為了補(bǔ)充(而不是以任何方式替代)servlet 或 JSP 頁(yè)面提供的核心處理。因而,過濾器可以根據(jù)需要添加或刪除,而不會(huì)破壞 servlet 或 JSP 頁(yè)面。

所以 Servlet過濾器是通過一個(gè)配置文件來靈活聲明的模塊化可重用組件。過濾器動(dòng)態(tài)地處理傳入的請(qǐng)求和傳出的響應(yīng),并且無需修改應(yīng)用程序代碼就可以透明地添加或刪除它們。***,過濾器獨(dú)立于任何平臺(tái)或者 Servlet 容器,從而允許將它們?nèi)菀椎夭渴鸬饺魏蜗嗳莸?J2EE 環(huán)境中。

在接下來的幾小節(jié)中,我們將進(jìn)一步考察 Servlet過濾器機(jī)制的總體設(shè)計(jì),以及實(shí)現(xiàn)、配置和部署過濾器所涉及的步驟。我們還將探討 Servlet過濾器的一些實(shí)際應(yīng)用,***簡(jiǎn)要考察一下模型-視圖-控制器(MVC)體系結(jié)構(gòu)中包含的 Servlet過濾器,從而結(jié)束本文的討論。

Servlet過濾器體系結(jié)構(gòu)
正如其名稱所暗示的,Servlet過濾器 用于攔截傳入的請(qǐng)求和/或傳出的響應(yīng),并監(jiān)視、修改或以某種方式處理正在通過的數(shù)據(jù)流。過濾器是自包含、模塊化的組件,可以將它們添加到請(qǐng)求/響應(yīng)鏈中,或者在無需影響應(yīng)用程序中其他 Web 組件的情況下刪除它們。過濾器僅只是改動(dòng)請(qǐng)求和響應(yīng)的運(yùn)行時(shí)處理,因而不應(yīng)該將它們直接嵌入 Web 應(yīng)用程序框架,除非是通過 Servlet API 中良好定義的標(biāo)準(zhǔn)接口來實(shí)現(xiàn)。

Web 資源可以配置為沒有過濾器與之關(guān)聯(lián)(這是默認(rèn)情況)、與單個(gè)過濾器關(guān)聯(lián)(這是典型情況),甚至是與一個(gè)過濾器鏈相關(guān)聯(lián)。那么過濾器究竟做什么呢? 像 servlet 一樣,它接受請(qǐng)求并響應(yīng)對(duì)象。然后過濾器會(huì)檢查請(qǐng)求對(duì)象,并決定將該請(qǐng)求轉(zhuǎn)發(fā)給鏈中的下一個(gè)組件,或者中止該請(qǐng)求并直接向客戶機(jī)發(fā)回一個(gè)響應(yīng)。如果請(qǐng)求被轉(zhuǎn)發(fā)了,它將被傳遞給鏈中的下一個(gè)資源(另一個(gè)過濾器、servlet 或 JSP 頁(yè)面)。在這個(gè)請(qǐng)求設(shè)法通過過濾器鏈并被服務(wù)器處理之后,一個(gè)響應(yīng)將以相反的順序通過該鏈發(fā)送回去。這樣就給每個(gè)過濾器都提供了根據(jù)需要處理響應(yīng)對(duì)象的機(jī)會(huì)。

當(dāng)過濾器在 Servlet 2.3 規(guī)范中***引入時(shí),它們只能過濾 Web 客戶機(jī)和客戶機(jī)所訪問的指定 Web 資源之間的內(nèi)容。如果該資源然后將請(qǐng)求調(diào)度給其他 Web 資源,那就不能向幕后委托的任何請(qǐng)求應(yīng)用過濾器。2.4 規(guī)范消除了這個(gè)限制。Servlet過濾器現(xiàn)在可以應(yīng)用于 J2EE Web 環(huán)境中存在請(qǐng)求和響應(yīng)對(duì)象的任何地方。因此,Servlet過濾器可以應(yīng)用在客戶機(jī)和 servlet 之間、servlet 和 servlet 或 JSP 頁(yè)面之間,以及所包括的每個(gè) JSP 頁(yè)面之間。這才是我所稱的強(qiáng)大能力和靈活性!

實(shí)現(xiàn)一個(gè) Servlet過濾器
他們說“好事多磨”。我不知道“他們”指的是誰(shuí),或者這句古老的諺語(yǔ)究竟有多真實(shí),但是實(shí)現(xiàn)一個(gè) Servlet過濾器的確要經(jīng)歷三個(gè)步驟。首先要編寫過濾器實(shí)現(xiàn)類的程序,然后要把該過濾器添加到 Web 應(yīng)用程序中(通過在 Web 部署描述符 /web.xml 中聲明它),***要把過濾器與應(yīng)用程序一起打包并部署它。

【編輯推薦】

  1. Servlet容器的匹配過程
  2. 如何調(diào)用Servlet來處理請(qǐng)求
  3. 擴(kuò)展Future Response Servlet
  4. 編寫Servlet的三種方法
  5. Servlet容器中的事務(wù)
責(zé)任編輯:佚名 來源: 中國(guó)網(wǎng)管聯(lián)盟
相關(guān)推薦

2021-07-05 15:22:03

Servlet過濾器客戶端

2009-07-08 16:07:04

Servlet過濾器配

2009-07-08 17:33:37

Servlet過濾器

2009-07-06 13:02:49

Servlet過濾器

2009-07-03 18:26:11

Servlet過濾器

2024-01-05 09:04:35

隆過濾器數(shù)據(jù)結(jié)構(gòu)哈希函數(shù)

2011-07-14 13:20:49

Servlet過濾器

2009-07-08 16:10:36

Servlet和JSPJSP頁(yè)面

2024-11-04 08:45:48

布隆過濾器元數(shù)據(jù)指紋值

2009-09-29 13:55:23

Hibernate設(shè)置

2009-07-14 09:09:08

Swing模型過濾器

2011-06-29 16:14:59

Qt 事件 過濾器

2009-06-18 10:13:00

Hibernate過濾

2025-04-21 00:50:50

2017-07-18 14:10:31

大數(shù)據(jù)Apache Flum過濾器

2009-09-25 15:19:44

Hibernate過濾

2023-01-31 08:19:53

二進(jìn)制元素數(shù)量

2024-03-15 11:21:22

布隆過濾器數(shù)據(jù)庫(kù)數(shù)據(jù)

2023-01-26 01:41:27

核心全局過濾器

2016-12-07 09:56:13

JavaFilter過濾器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)