導航:首頁 > 凈水問答 > servlet過濾器應用教程

servlet過濾器應用教程

發布時間:2025-09-17 00:50:20

① 如何使用filter過濾器對入參進行處理(完整版)

前台把參數通過報文或者使用表單、ajax提交到後台,如果我們的請求參數是加密的,那麼我們在controller裡面的每一個方法里都需要進行解密處理。如果方法太多,那就太麻煩了。

使用過濾器,在一個Filter中將 HttpServletRequest 里的所有參數都取出來分別進行過濾然後再放回到該HttpServletRequest 中行不行呢?

通過測試後發現是不行的,因為HttpServletRequest 只提供了getParameter ,而沒有提供setParameter;所以,我們只能自己寫一個HttpServletRequest 方法繼承HttpServletRequestWrapper,然後覆蓋裡面的方法,並且增加我們自己的setParameters方法,這樣我們就可以為所欲為了,最後再在filter中調用該類的方法對參數進行處理(獲取、修改、存儲等等)。

在請求參數到達controller之前,在filter裡面進行解密;這樣,通過簡單的過濾器處理,把需要處理的請求都在過濾器里進行解密操作,這樣就等於實現了自動化處理。

這里我們針對兩種不同的請求方式進行講解:

第一步:新建一個類別

這個類繼承自HttpServletRequestWrapper

通過建立這個類我們就能完成向request對象添加我們處理之後的參數了。

第二步:通過實現filter介面建一個過濾器

第三步:過濾器的配置

方法一、在web.xml文件裡面進行簡單的配置(一般項目)

把我們的過濾器放在該文件中注冊

方法二、springboot項目的配置

新建一個配置類,加上@Configuration註解,在方法頭加上@Bean註解

controller 接收參數代碼:

請求示例代碼:

處理結果:

從結果可以看出,我們成功地通過過濾器對請求的email進行大寫轉小寫處理

第一步:新建一個類別

這個類繼承自HttpServletRequestWrapper

通過建立這個類我們就能完成向request對象添加我們處理之後的參數了。

第二步:通過實現filter介面建一個過濾器

第三步:

方法一、在web.xml文件裡面進行簡單的配置

把我們的過濾器放在該文件中注冊

方法二、springboot項目的配置

新建一個配置類,加上@Configuration註解,在方法頭加上@Bean註解

controller 接收參數代碼:

請求報文示例:

我這里使用的是postman工具進行json參數請求

返回結果:

通過該過濾器,把email轉換從小寫成功。

通過以上操作,我們就成功的創建了一個過濾器。

② servlet中filter有什麼用

首先介紹一下Filter到底是個什麼東西:
根據這個單詞就能猜到Filter的中文意思是過濾器,事實當然也是這樣的;Filter是Servlet中的一個重 要組件。

接下來簡單說說Filter這個介面中的常用方法吧。

①.init():類似於Servlet生命周期中的init()方法,用於初始化一些關於Filter介面的參數;只在Servlet 啟動時調用一次。
②.doFilter():類似於Servlete生命周期中的service()方法,該方法用於存放邏輯代碼。
③.destory():同理類似於Servlet生命周期中的destroy()方法,當Servlet容器銷毀前調用該方法。

然後說說如何創建一個Filter的HelloWorld。

①.創一個抽象的Java類,該類實現了Filter介面,同時實現了Filter介面的部分方法,例如
init(),destroy()方法。具體實現代碼如下:

public abstract class HttpFilter implements Filter {

private HttpServletRequest request;
private HttpServletResponse response;

//重寫Filter介面的destory方法
public void destroy() {}

//重寫doFilter方法,這個方法在這里主要作用是將ServletRequest,ServletResponse對象轉為對 //應的HttpServletRequest,HttpServletResponse對象
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {

this.request = (HttpServletRequest) arg0;
this.response = (HttpServletResponse) arg1;

doFilter(request, response, arg2);
}

//該方法交由繼承該抽象類的實現類來實現
public abstract void doFilter(HttpServletRequest request,HttpServletResponse response,
FilterChain chain);

private FilterConfig config;

//這個方法是為了方便子類獲取ServletContext對象
public FilterConfig getFilterConfig(){
return config;
}

//該方法一般不建議重寫,因為重寫該方法會出現某些錯,基於此提供了下面的無參數的init()方法
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
init();
}

public void init(){}
}

②.一個繼承了HttpFilter抽象類的實現類,代碼如下,只要功能是為了實現禁用瀏覽器緩存

public class NoCacheFilter extends HttpFilter{

@Override
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain) {

//通過過濾器實現頁面禁用瀏覽器緩存
response.setDateHeader("Expires", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

}

}

③.將該實現類配置到web.xml文件中,配置方式和配置普通的Servlet一樣,具體代碼

<filter>
<filter-name>NoCacheFilter</filter-name>
<filter-class>com.xingyun.servlet.filter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NoCacheFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

至此,就實現了一個簡單的用於禁用瀏覽器緩存的過濾器了。

上面說了這么多,在開發中哪些地方中能用到Filter才是最終目的,好了,我大概說一下我在開發中用到的地方。

①.上面提到的禁用瀏覽器的緩存。這個真的很重要,有時候修改了前端頁面,就是因為緩存的原因,導致頁面不 能及時刷新過來,真的很蛋疼。

②.解決中文亂碼的問題。在開發中,頁面可能達到幾十個甚至上百個,在每個頁面處理中文亂碼的問題很煩,但 是通過過濾器,那麼問題就變得很簡單了。

③.通過檢查用戶是否登錄來管理用戶是否可以訪問某些頁面,比如個人隱私等頁面。這個用的也是蠻多的。

③ 過濾器Filter使用

Filter是Servlet技術中的核心組件,用於攔截並處理web伺服器管理的所有資源,實現高級功能。以下是關於Filter使用的詳細解答:

  1. Filter的基本概念

    • Filter能夠攔截並處理web伺服器管理的資源,如JSP、Servlet、靜態文件等。
    • 通過Filter,可以實現諸如URL許可權控制、敏感詞過濾和響應壓縮等功能。
  2. Filter的請求流程

    • 瀏覽器的請求首先會通過第一個Filter進行檢查。
    • 如果請求符合Filter的規則,則繼續傳遞給後續的Filter,直至鏈的末端。
    • Filter的執行順序取決於它們在web.xml中的配置順序,配置在前的Filter位於鏈的前端。
    • 如果請求無法通過所有Filter,則可能在某個Filter中被處理。
  3. Filter的主要用途

    • 登錄驗證:攔截未登錄的請求,並重定向到登錄頁面。
    • 資源許可權管理:根據用戶角色或許可權,控制對特定資源的訪問。
    • 字元過濾:對請求和響應中的字元進行過濾,如去除敏感詞、統一字元編碼等。
  4. Filter的核心方法

    • doFilter方法:是Filter的核心方法,用於執行請求處理、響應操作、基於session的過濾和編碼設置等任務。
  5. Filter的配置

    • 在web.xml中配置Filter時,需要明確指定過濾器類路徑和作用對象。
    • 確保監聽器、Filter和Servlet的順序正確。
  6. Filter的生命周期

    • 實例化:由web伺服器管理,實例化時調用init方法初始化。
    • 處理請求:在doFilter方法中處理請求和響應。
    • 銷毀:當Filter不再需要時,調用destroy方法釋放資源。
  7. FilterConfig介面

    • 允許開發者為Filter配置初始化參數,如Filter名稱、參數值等。

綜上所述,Filter是web開發中非常重要的組件,通過靈活配置和使用Filter,可以實現豐富的功能擴展和安全控制。

閱讀全文

與servlet過濾器應用教程相關的資料

熱點內容
釀造冷機液氨濾芯用什麼材質 瀏覽:117
一般市政污水埋管項目毛利多少 瀏覽:904
飲水機往水桶返熱水怎麼回事 瀏覽:123
鍋爐為什麼用純水 瀏覽:76
閘北反滲透阻垢劑 瀏覽:52
離子交換層析如何裝柱 瀏覽:523
傳祺如何更換汽車空調濾芯 瀏覽:750
內置過濾器改外置 瀏覽:75
奧朗格凈水器一般多少層 瀏覽:403
彩妝污水處理 瀏覽:713
去機化鈉離子內流正反饋 瀏覽:902
自適應過濾法的程序 瀏覽:976
中國廢水淤泥怎麼提煉黃金 瀏覽:882
濾芯打開裡面是什麼 瀏覽:349
空氣凈化器組合套裝怎麼組裝 瀏覽:498
ro膜凈水器水泵壓力不足 瀏覽:138
離子交換樹脂法產生什麼廢水 瀏覽:823
飲水機外殼壞了怎麼修復 瀏覽:260
如何看污水管道施工圖 瀏覽:239
污水處理中微生物生長規律研究 瀏覽:281