国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

JSP Filter的應(yīng)用方法

2024-09-05 00:17:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Servlet有一個(gè)很有意思也很有用的功能,就是Filter。 所謂Filter,就是在用戶(hù)請(qǐng)求到達(dá) Servlet 之前、或者 Servlet 執(zhí)行之后, 執(zhí)行的一段小程序,這段程序可以對(duì)用戶(hù)請(qǐng)求做預(yù)處理, 或者對(duì)Servlet返回的結(jié)果進(jìn)行一些公用處理。
Filter可以在請(qǐng)求到達(dá) Servlet 之前執(zhí)行, 甚至即使請(qǐng)求一個(gè)靜態(tài)頁(yè)面或圖片等,F(xiàn)ilter也會(huì)被優(yōu)先執(zhí)行。 這樣我們可以通過(guò)Filter對(duì)應(yīng)用程序內(nèi)的所有對(duì)象(包括Java程序和靜態(tài)內(nèi)容)進(jìn)行預(yù)處理。 (這個(gè)功能恐怕PHP程序就無(wú)法做到了。)

Filter通常可用于以下幾種情況:
•認(rèn)證
•記錄訪(fǎng)問(wèn)日志
•加密解密
•字符編碼轉(zhuǎn)換
•數(shù)據(jù)壓縮

如上面最常用的“認(rèn)證”,可以在Filter中書(shū)寫(xiě)認(rèn)證代碼, 這樣不僅省卻了在Servlet中認(rèn)證的麻煩,而且還能控制網(wǎng)站中靜態(tài)內(nèi)容的訪(fǎng)問(wèn)。
Filter是個(gè)接口,位于 javax.servlet.Filter。它與其他接口的關(guān)系如下:

我們?cè)跁?shū)寫(xiě)自己的Filter時(shí),只需寫(xiě)一個(gè)類(lèi)實(shí)現(xiàn) Filter 接口即可。
實(shí)現(xiàn)Filter接口需要實(shí)現(xiàn)以下幾個(gè)方法:

復(fù)制代碼 代碼如下:www.CuoXIn.com

void init(FilterConfig filterConfig) throws ServletException

Filter的初始化方法。
復(fù)制代碼 代碼如下:www.CuoXIn.com

void destroy()

Filter結(jié)束之前執(zhí)行的方法。
復(fù)制代碼 代碼如下:www.CuoXIn.com

void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException

Filter的執(zhí)行內(nèi)容。參數(shù)request和response分別為輸入和輸出參數(shù),而chain則為Filter鏈對(duì)象。
所謂FilterChain,一個(gè)應(yīng)用程序內(nèi)的Filter可以有多個(gè),它們像鏈子一樣串在一起, 其中的某個(gè)Filter執(zhí)行之后,可以調(diào)用chain.doFilter(request, response)將執(zhí)行權(quán)轉(zhuǎn)給下一個(gè)Filter, 直到所有的Filter都執(zhí)行完畢。
這次的示例程序我們修改了上一節(jié)的登錄程序, 為它增加了一個(gè)下載鏈接(詳見(jiàn)SessionTest.java)。 這個(gè)下載鏈接指向 img/sample.jpg。 我們希望能通過(guò)一個(gè)Filter,在用戶(hù)試圖下載 img/sample.jpg 時(shí)驗(yàn)證用戶(hù)身份, 如果驗(yàn)證失敗,則禁止用戶(hù)下載,并跳轉(zhuǎn)到登錄頁(yè)面。
創(chuàng)建Filter時(shí)可惜不能像Servlet那樣,直接從右鍵菜單中選擇新建, 而只能先寫(xiě)好源代碼然后手工添加到web.xml中。 如下圖,在新建類(lèi)時(shí)注意要實(shí)現(xiàn)javax.servlet.Filter接口。

寫(xiě)完代碼之后,打開(kāi)web.xml文件,手工添加Filter。與Servlet類(lèi)似,你需要添加 和 兩個(gè)標(biāo)記。這里我們要對(duì) /img/ 下的所有文件進(jìn)行登錄驗(yàn)證, 因此的 url-pattern 處我們填寫(xiě)了 /img/* 。

最后執(zhí)行,訪(fǎng)問(wèn) /LearnJSP/img/sample.jpg ,就會(huì)跳轉(zhuǎn)到登錄頁(yè)面。 登錄之后再次訪(fǎng)問(wèn)上面的鏈接,才能看到正確的圖片。

示例下載:

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乡城县| 扶余县| 汪清县| 赤峰市| 台州市| 策勒县| 永吉县| 中宁县| 阳西县| 吉安县| 蓬安县| 宁陕县| 清涧县| 秦安县| 达拉特旗| 阳东县| 潢川县| 周宁县| 安庆市| 冀州市| 开江县| 左权县| 扶沟县| 昭觉县| 永胜县| 玉田县| 新河县| 定南县| 襄城县| 隆昌县| 湟源县| 辛集市| 临湘市| 米林县| 子长县| 阆中市| 娱乐| 都兰县| 大田县| 青神县| 济南市|