Java 中的 Filter 過濾器

過濾器

過濾器是處於客戶端與服務器資源文件之間的一道過濾網,在訪問資源文件之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應。

Filter也稱之為過濾器,它是Servlet技術中最實用的技術,WEB開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp, Servlet, 靜態圖片文件或靜態 html 文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞彙、壓縮響應信息等一些高級功能。

它主要用於對用戶請求進行預處理,也可以對HttpServletResponse 進行後處理。使用Filter 的完整流程:Filter 對用戶請求進行預處理,接著將請求交給Servlet 進行處理並生成響應,最後Filter 再對服務器響應進行後處理。

Java 中的 Filter 過濾器

建立Filter

CharsetEncodingFilter.java

package com.drp.filter;

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;

/**採用filter統一處理filter

* @author Danny

*

*/

public class CharsetEncodingFilter implements Filter {

@Override

public void destroy() {}

@Override

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

System.out.println("CharsetEncodingFilter---->>>>Filter開始");

request.setCharacterEncoding("utf-8"); //設置字符集

chain.doFilter(request, response); //繼續執行

System.out.println("CharsetEncodingFilter---->>>>Filter結束");

}

@Override

public void init(FilterConfig config) throws ServletException {}

}

Java 中的 Filter 過濾器

此過濾器CharsetEncodingFilter實現了javax.servlet.Filter接口(任何filter過濾器也必須實現這個接口);在服務器創建此filter並進行初始化執行init方法時,讀取配置文件並存入FilterConfigure的對象中;實現doFilter方法,在請求到達jsp之前將字符集編碼設置為utf-8,chain.doFiler()方法的作用是在對request對象進行處理之後,跳轉到被攔截的servlet繼續執行,執行完之後還要回到此處,chain.doFilter()下面還可以對response對象進行處理。

尚學堂立志解決中國教育不公平和低效率問題,幫助千千萬萬被傳統教育方式耽誤的人,傳授實用、前沿的知識,成就學員個人理想,為愛你的人和你愛的人創造美好的生活。尚學堂12大精英團隊+各類實戰項目,真正實現1+1>10的目標效果。幫助學員迅速成長,持久騰飛,成就學員“高富帥”人生。


分享到:


相關文章: