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

首頁 > 編程 > JSP > 正文

怎么應用JSP Filter

2024-09-05 00:18:26
字體:
來源:轉載
供稿:網友

Servlet中的Filter是一個很有意思的功能,在用戶請求到達Servlet的時候可以對用戶請求做預處理,或者對Servlet返回的結果進行一些公用處理,那么你知道怎么應用JSP Filter嗎?
Filter可以在請求到達 Servlet 之前執行, 甚至即使請求一個靜態頁面或圖片等,Filter也會被優先執行。 這樣我們可以通過Filter對應用程序內的所有對象(包括Java程序和靜態內容)進行預處理。 (這個功能恐怕PHP程序就無法做到了。)

Filter通常可用于以下幾種情況:
?認證
?記錄訪問日志
?加密解密
?字符編碼轉換
?數據壓縮

如上面最常用的“認證”,可以在Filter中書寫認證代碼, 這樣不僅省卻了在Servlet中認證的麻煩,而且還能控制網站中靜態內容的訪問。
Filter是個接口,位于 javax.servlet.Filter。它與其他接口的關系如下:

我們在書寫自己的Filter時,只需寫一個類實現 Filter 接口即可。
實現Filter接口需要實現以下幾個方法:

復制代碼 代碼如下:

void init(FilterConfig filterConfig) throws ServletException


Filter的初始化方法。

?

復制代碼 代碼如下:

?


void destroy()


Filter結束之前執行的方法。

?

復制代碼 代碼如下:

?


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


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

寫完代碼之后,打開web.xml文件,手工添加Filter。與Servlet類似,你需要添加 和 兩個標記。這里我們要對 /img/ 下的所有文件進行登錄驗證, 因此的 url-pattern 處我們填寫了 /img/* 。

最后執行,訪問 /LearnJSP/img/sample.jpg ,就會跳轉到登錄頁面。 登錄之后再次訪問上面的鏈接,才能看到正確的圖片。

示例下載:servlet-filter_jb51net.zip

?

看了以上關于怎么應用JSP Filter的內容后你是否明白了呢?如果你還想了解更多相關內容就請關注錯新技術頻道吧。

?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克东县| 太康县| 安陆市| 阆中市| 武功县| 泾源县| 蓬安县| 建水县| 南汇区| 黄石市| 济宁市| 丰都县| 小金县| 崇左市| 潍坊市| 商水县| 张家川| 文山县| 连江县| 内丘县| 视频| 南阳市| 旬阳县| 土默特右旗| 西吉县| 伊吾县| 湘西| 中牟县| 怀化市| 舒兰市| 黑河市| 九江县| 沂源县| 方正县| 德安县| 安达市| 卓尼县| 曲阜市| 郴州市| 山东省| 牡丹江市|