日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

008_过滤器

發布時間:2025/4/17 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 008_过滤器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 過濾器

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

2. 過濾器作用

2.1.?對一些敏感詞匯進行過濾

2.2.?統一設置編碼

2.3.?自動登錄

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

3.1. 新建一個名叫FilterLifeCycle的Web項目

3.2. 定義過濾器, 需要實現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;/*** 自定義過濾器需要實現Servlet的Filter接口*/ public class MyFilter implements Filter {@Overridepublic void init(FilterConfig config) throws ServletException {System.out.println("在服務器加載項目的時候創建, 初始化。");}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {System.out.println("進入到過濾器了, 可以進行過濾操作了。");// 本過濾器放行, 你可以去下一個過濾器或者Servlet了chain.doFilter(req, res);}@Overridepublic void destroy() {System.out.println("服務器停止或者移除項目的時候的銷毀。");} }

3.3. 新建一個index.html

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

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

3.5. 過濾器放行, 請求才能到達下一個過濾器、Servlet或者資源文件。過濾器放行方法是在doFilter方法里調用chain.doFilter進行放行。

3.6. 運行項目, 過濾器被初始化了, 也進入了過濾器操作方法, 如果我們在過濾器操作方法中放行的話, 才會進入主頁; 如果不方行, 不會到達主頁

3.7. 正常關閉服務器, 銷毀了過濾器

4. 過濾器的生命周期

4.1. 在服務器加載項目的時候創建, 初始化。

4.2. 服務器停止或者移除項目的時候的銷毀。

5. 過濾器的執行順序

5.1. 單個過濾器的執行順序: 客戶端(瀏覽器)發出請求, 經過過濾器, 如果過濾器放行, 才能到達Servlet或者資源文件。

5.2. 多個過濾器的執行順序: 如果有多個過濾器, 那么他們會按照過濾器注冊的映射順序來排隊。請求經過一系列過濾器, 到達Servlet或者資源文件。

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

7. dispatcher設置

7.1. REQUEST: 只要是請求過來, 都攔截, 默認就是REQUEST。

7.2. FORWARD: 只要是轉發都攔截。

7.3. ERROR:?頁面出錯發生跳轉。?

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

8. 過濾器鏈例子

8.1. 新建一個名叫FilterLifeCycle的Web項目

8.2. 新建一個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("請求進入到過濾器1");chain.doFilter(req, res);System.out.println("請求經過Servlet處理后, 返回到過濾器1");}@Overridepublic void destroy() {System.out.println("銷毀過濾器1");} }

8.3. 新建一個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("請求進入到過濾器2");chain.doFilter(req, res);System.out.println("請求經過Servlet處理后, 返回到過濾器2");}@Overridepublic void destroy() {System.out.println("銷毀過濾器2");} }

8.4. 新建一個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("請求進入到過濾器3");chain.doFilter(req, res);System.out.println("請求經過Servlet處理后, 返回到過濾器3");}@Overridepublic void destroy() {System.out.println("銷毀過濾器3");} }

8.5. 新建一個index.html

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

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

8.7. 運行項目

8.8. 關閉服務器, 銷毀過濾器

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。