【Java】Filter過濾器初識

      剛學習了過濾器Filter,感覺有必要記錄一下,後面有空了回去完善一下,明天有點兒重要的事情要辦,今晚得準備一下的,所以大概簡略的寫了下Filter的基本用法以及相關的代碼註釋。

      下面是過濾器內容,注意和Servlet的區別:

import javax.servlet.Filter

public class MyFilter implements Filter {

    private String filterParamValue;// 保存從web.xml中獲取的過濾器參數

    // 複寫的方法,銷燬該過濾器時調用
    @Override
    public void destroy(){

    }

    // 過濾器過濾處理邏輯
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        req.setCharacterEncoding(filterParamValue);// 設置編碼格式

        // 。。 可以在頁面相應之前進行用戶登錄與否的操作從而實現身份權限

        chain.doFilter(req, res);// 執行頁面響應
    }

    // 過濾器初始化
    @Override
    public void init(FilterConfig cfg) throws ServletException {
        String s = cfg.getInitParameter("filterparam");// 通過初始化參數名來獲取該參數的值
        if(s != null || (!"".equals(s.trim()))) {// 如果參數值不爲空
            filterParamValue = s;// 獲取參數
        } else {
            filterParamValue = "UTF-8";// 默認編碼爲UTF-8格式
        }
    }
}

      而這的下面是Filter在web.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
         id="WebApp_ID" 
         version="3.0">

    <filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>cn.com.dnyy.filter.MyFilter</filter-class><!-- 過濾器所在包目錄 -->
        <init-param><!-- 設置初始化Filter的參數列表 -->
            <param-name>filterparam</param-name><!-- 參數名 -->
            <param-value>UTF-8</param-value><!-- 參數值 -->
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>MyFilter</filter-name><-- 兩個filter-name要統一 -->
        <url-pattern>/*</url-pattern><!-- 所有頁面均需要經過過濾器處理 -->
    </filter-mapping>
</web-app>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章