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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

008_过滤器

發(fā)布時(shí)間:2025/4/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 008_过滤器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. 過濾器

1. 過濾器其實(shí)就是對客戶端(瀏覽器)發(fā)出來的請求進(jìn)行過濾。客戶端(瀏覽器)發(fā)出請求, 然后服務(wù)器派servlet處理, 在中間可以添加過濾器, 其實(shí)過濾器起到的是攔截的作用。

2. 過濾器作用

2.1.?對一些敏感詞匯進(jìn)行過濾

2.2.?統(tǒng)一設(shè)置編碼

2.3.?自動(dòng)登錄

3. 過濾器的生命周期例子

3.1. 新建一個(gè)名叫FilterLifeCycle的Web項(xiàng)目

3.2. 定義過濾器, 需要實(shí)現(xiàn)Servlet的Filter接口

package com.lywgames.filterlifecycle;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;/*** 自定義過濾器需要實(shí)現(xiàn)Servlet的Filter接口*/ public class MyFilter implements Filter {@Overridepublic void init(FilterConfig config) throws ServletException {System.out.println("在服務(wù)器加載項(xiàng)目的時(shí)候創(chuàng)建, 初始化。");}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {System.out.println("進(jìn)入到過濾器了, 可以進(jìn)行過濾操作了。");// 本過濾器放行, 你可以去下一個(gè)過濾器或者Servlet了chain.doFilter(req, res);}@Overridepublic void destroy() {System.out.println("服務(wù)器停止或者移除項(xiàng)目的時(shí)候的銷毀。");} }

3.3. 新建一個(gè)index.html

<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>過濾器生命周期</title></head><body><h1>過濾器生命周期</h1></body> </html>

3.4. 在web.xml里注冊過濾器和過濾器映射

3.5. 過濾器放行, 請求才能到達(dá)下一個(gè)過濾器、Servlet或者資源文件。過濾器放行方法是在doFilter方法里調(diào)用chain.doFilter進(jìn)行放行。

3.6. 運(yùn)行項(xiàng)目, 過濾器被初始化了, 也進(jìn)入了過濾器操作方法, 如果我們在過濾器操作方法中放行的話, 才會(huì)進(jìn)入主頁; 如果不方行, 不會(huì)到達(dá)主頁

3.7. 正常關(guān)閉服務(wù)器, 銷毀了過濾器

4. 過濾器的生命周期

4.1. 在服務(wù)器加載項(xiàng)目的時(shí)候創(chuàng)建, 初始化。

4.2. 服務(wù)器停止或者移除項(xiàng)目的時(shí)候的銷毀。

5. 過濾器的執(zhí)行順序

5.1. 單個(gè)過濾器的執(zhí)行順序: 客戶端(瀏覽器)發(fā)出請求, 經(jīng)過過濾器, 如果過濾器放行, 才能到達(dá)Servlet或者資源文件。

5.2. 多個(gè)過濾器的執(zhí)行順序: 如果有多個(gè)過濾器, 那么他們會(huì)按照過濾器注冊的映射順序來排隊(duì)。請求經(jīng)過一系列過濾器, 到達(dá)Servlet或者資源文件。

6. 過濾器的init方法的參數(shù)FilterConfig, 可以用于獲取filter在注冊的時(shí)候的名字以及初始化參數(shù)。

7. dispatcher設(shè)置

7.1. REQUEST: 只要是請求過來, 都攔截, 默認(rèn)就是REQUEST。

7.2. FORWARD: 只要是轉(zhuǎn)發(fā)都攔截。

7.3. ERROR:?頁面出錯(cuò)發(fā)生跳轉(zhuǎn)。?

7.4. INCLUDE:?包含頁面的時(shí)候就攔截。

8. 過濾器鏈例子

8.1. 新建一個(gè)名叫FilterLifeCycle的Web項(xiàng)目

8.2. 新建一個(gè)MyFilter1.java

package com.lywgames.filterlifecycle;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public class MyFilter1 implements Filter {@Overridepublic void init(FilterConfig config) throws ServletException {String filterName = config.getFilterName();String param1 = config.getInitParameter("param1");System.out.println("filterName = " + filterName);System.out.println("param1 = " + param1);}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {System.out.println("請求進(jìn)入到過濾器1");chain.doFilter(req, res);System.out.println("請求經(jīng)過Servlet處理后, 返回到過濾器1");}@Overridepublic void destroy() {System.out.println("銷毀過濾器1");} }

8.3. 新建一個(gè)MyFilter2.java

package com.lywgames.filterlifecycle;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public class MyFilter2 implements Filter {@Overridepublic void init(FilterConfig config) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {System.out.println("請求進(jìn)入到過濾器2");chain.doFilter(req, res);System.out.println("請求經(jīng)過Servlet處理后, 返回到過濾器2");}@Overridepublic void destroy() {System.out.println("銷毀過濾器2");} }

8.4. 新建一個(gè)MyFilter3.java

package com.lywgames.filterlifecycle;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public class MyFilter3 implements Filter {@Overridepublic void init(FilterConfig config) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {System.out.println("請求進(jìn)入到過濾器3");chain.doFilter(req, res);System.out.println("請求經(jīng)過Servlet處理后, 返回到過濾器3");}@Overridepublic void destroy() {System.out.println("銷毀過濾器3");} }

8.5. 新建一個(gè)index.html

<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>主頁面</title></head><body><h1>主頁面</h1></body> </html>

8.6. 在web.xml里注冊過濾器和過濾器映射, 過濾器初始化參數(shù)

8.7. 運(yùn)行項(xiàng)目

8.8. 關(guān)閉服務(wù)器, 銷毀過濾器

總結(jié)

以上是生活随笔為你收集整理的008_过滤器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。