中國廣電 5G 核心網重慶節點開工
1 概念:
當訪問伺服器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能
過濾器的作用:
一般用於完成通用的操作,如:登入驗證、統一編碼處理、敏感字元過濾...
2 快速入門:
1 步驟:
1 定義一個類,實現介面filter
2 複寫方法
3 配置攔截路徑
1 web.xml
2 註解
@WebFilter("/*")//訪問所有資源之前,都會執行該過濾器 public class filter implements Filter{ @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throws IOException, ServletException { // TODO Auto-generated method stub System.out.println("demo1被執行了"); //放行 arg2.doFilter(arg0, arg1); } }
3 過濾器細節
1 過濾器執行流程
1 執行過濾器
2 執行放行後的資源
3 回來執行過濾器放行程式碼下邊的程式碼
2 過濾器生命週期方法
1 init:再伺服器啟動之後,會建立Filter物件,然後呼叫init方法。只執行一次,用於載入資源
2 doFilter:每一次請求被攔截時,會執行。執行多次
3 destroy:在伺服器關閉後,Filter物件被銷燬。如果伺服器是正常關閉,則會執行destroy方法
3 過濾器配置詳解
1 攔截路徑配置:
1 具體資源路徑: /index.jsp 只有訪問index.jsp時,才會被執行
2 攔截目錄: /user/* 訪問/user下的所有資源時,過濾器都會被執行
3 字尾名攔截: *.jsp 訪問所有後綴名為jsp的資源時,過濾器都會被執行
4 攔截所有資源 /*
2 攔截方式配置:資源被訪問的方式
註解配置
設定dispatcherTypes屬性
1 REQUEST:預設值 瀏覽器直接請求資源
@WebFilter(value="/index.jsp",dispatcherTypes=DispatcherType.REQUEST)
2 FORWORD:轉發訪問資源
3 INCLUDE:包含訪問資源
4 ERROR:錯誤跳轉資源
5 ASYNC:非同步訪問資源
web.xml配置
4 過濾器鏈(配置多個過濾器)
執行順序:如果有兩個過濾器:過濾器1和過濾器2
1 過濾器1
2 過濾器2
3 資源執行
4 過濾器2
5 過濾器1
過濾器先後順序問題:
1 註解配置:按照類名的字串比較規則比較,值小的先執行
如:AFilter和BFilter AFilter先執行
2 web.xml配置:誰定義在上面,誰先執行