Servlet與jsp與Filter的使用

ID:40565244

大小:68.50 KB

頁數(shù):17頁

時(shí)間:2019-08-04

Servlet與jsp與Filter的使用_第1頁
Servlet與jsp與Filter的使用_第2頁
Servlet與jsp與Filter的使用_第3頁
Servlet與jsp與Filter的使用_第4頁
Servlet與jsp與Filter的使用_第5頁
資源描述:

《Servlet與jsp與Filter的使用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、或許,servletAPI的2.3版本中最重要的一個(gè)新功能就是能夠?yàn)閟ervlet和jsp頁面定義過濾器。過濾器提供了某些早期服務(wù)器所支持的非標(biāo)準(zhǔn)“servlet鏈接”的一種功能強(qiáng)大且標(biāo)準(zhǔn)的替代品。過濾器是一個(gè)程序,它先于與之相關(guān)的servlet或JSP頁面運(yùn)行在服務(wù)器上。過濾器可附加到一個(gè)或多個(gè)servlet或JSP頁面上,并且可以檢查進(jìn)入這些資源的請(qǐng)求信息。在這之后,過濾器可以作如下的選擇:l以常規(guī)的方式調(diào)用資源(即,調(diào)用servlet或JSP頁面)。l利用修改過的請(qǐng)求信息調(diào)用資源。l調(diào)用資源,但在發(fā)送響應(yīng)到客戶機(jī)前對(duì)其進(jìn)行修改l阻止該資源調(diào)

2、用,代之以轉(zhuǎn)到其他的資源,返回一個(gè)特定的狀態(tài)代碼或生成替換輸出。過濾器提供了幾個(gè)重要好處。首先,它以一種模塊化的或可重用的方式封裝公共的行為。你有30個(gè)不同的serlvet或JSP頁面,需要壓縮它們的內(nèi)容以減少下載時(shí)間嗎?沒問題:構(gòu)造一個(gè)壓縮過濾器(參閱第11節(jié)),然后將它應(yīng)用到30個(gè)資源上即可。其次,利用它能夠?qū)⒏呒?jí)訪問決策與表現(xiàn)代碼相分離。這對(duì)于JSP特別有價(jià)值,其中一般希望將幾乎整個(gè)頁面集中在表現(xiàn)上,而不是集中在業(yè)務(wù)邏輯上。例如,希望阻塞來自某些站點(diǎn)的訪問而不用修改各頁面(這些頁面受到訪問限制)嗎?沒問題:建立一個(gè)訪問限制過濾器(參閱第8節(jié)

3、)并把它應(yīng)用到想要限制訪問的頁面上即可。最后,過濾器使你能夠?qū)υS多不同的資源進(jìn)行批量性的更改。你有許多現(xiàn)存資源,這些資源除了公司名要更改外其他的保持不變,能辦到么?沒問題:構(gòu)造一個(gè)串替換過濾器(參閱第10節(jié)),只要合適就使用它。但要注意,過濾器只在與servlet規(guī)范2.3版兼容的服務(wù)器上有作用。如果你的Web應(yīng)用需要支持舊版服務(wù)器,就不能使用過濾器。1.?建立基本過濾器建立一個(gè)過濾器涉及下列五個(gè)步驟:1)建立一個(gè)實(shí)現(xiàn)Filter接口的類。這個(gè)類需要三個(gè)方法,分別是:doFilter、init和destroy。doFilter方法包含主要的過濾代

4、碼(見第2步),init方法建立設(shè)置操作,而destroy方法進(jìn)行清楚。2)在doFilter方法中放入過濾行為。doFilter方法的第一個(gè)參數(shù)為ServletRequest對(duì)象。此對(duì)象給過濾器提供了對(duì)進(jìn)入的信息(包括表單數(shù)據(jù)、cookie和HTTP請(qǐng)求頭)的完全訪問。第二個(gè)參數(shù)為ServletResponse,通常在簡單的過濾器中忽略此參數(shù)。最后一個(gè)參數(shù)為FilterChain,如下一步所述,此參數(shù)用來調(diào)用servlet或JSP頁。3)調(diào)用FilterChain對(duì)象的doFilter方法。Filter接口的doFilter方法取一個(gè)Filte

5、rChain對(duì)象作為它的一個(gè)參數(shù)。在調(diào)用此對(duì)象的doFilter方法時(shí),激活下一個(gè)相關(guān)的過濾器。如果沒有另一個(gè)過濾器與servlet或JSP頁面關(guān)聯(lián),則servlet或JSP頁面被激活。4)對(duì)相應(yīng)的servlet和JSP頁面注冊(cè)過濾器。在部署描述符文件(web.XML)中使用filter和filter-mapping元素。5)禁用激活器servlet。防止用戶利用缺省servletURL繞過過濾器設(shè)置。1.1?建立一個(gè)實(shí)現(xiàn)Filter接口的類所有過濾器都必須實(shí)現(xiàn)Javax.servlet.Filter。這個(gè)接口包含三個(gè)方法,分別為doFilter

6、、init和destroy。lpublicvoiddoFilter(ServletRequsetrequest,???????????????????ServletResponseresponse,???????????????????FilterChainchain)???thowsServletException,IOException每當(dāng)調(diào)用一個(gè)過濾器(即,每次請(qǐng)求與此過濾器相關(guān)的servlet或JSP頁面)時(shí),就執(zhí)行其doFilter方法。正是這個(gè)方法包含了大部分過濾邏輯。第一個(gè)參數(shù)為與傳入請(qǐng)求有關(guān)的ServletRequest。對(duì)于簡單

7、的過濾器,大多數(shù)過濾邏輯是基于這個(gè)對(duì)象的。如果處理HTTP請(qǐng)求,并且需要訪問諸如getHeader或getCookies等在ServletRequest中無法得到的方法,就要把此對(duì)象構(gòu)造成HttpServletRequest。第二個(gè)參數(shù)為ServletResponse。除了在兩個(gè)情形下要使用它以外,通常忽略這個(gè)參數(shù)。首先,如果希望完全阻塞對(duì)相關(guān)servlet或JSP頁面的訪問??烧{(diào)用response.getWriter并直接發(fā)送一個(gè)響應(yīng)到客戶機(jī)。第7節(jié)給出詳細(xì)內(nèi)容,第8節(jié)給出一個(gè)例子。其次,如果希望修改相關(guān)的servlet或JSP頁面的輸出,可把

8、響應(yīng)包含在一個(gè)收集所有發(fā)送到它的輸出的對(duì)象中。然后,在調(diào)用serlvet或JSP頁面后,過濾器可檢查輸出,如果合適就修改它,之后發(fā)送到客

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。
关闭