深入瞭解Java中的過濾器Filter和監聽器Listener
Filter:過濾器
概念
生活中的過濾器:凈水器,空氣凈化器,土匪、 web中的過濾器:當訪問服務器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能。 過濾器的作用:
一般用於完成通用的操作。如:登錄驗證、統一編碼處理、敏感字符過濾…
快速入門
步驟
1.定義一個類,實現接口Filter
2.復寫方法
3.配置攔截路徑
- web.xml
- 註解
代碼
@WebFilter("/*")//訪問所有資源之前,都會執行該過濾器 public class FilterDemo1 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("filterDemo1被執行瞭...."); //放行 filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
過濾器細節
web.xml配置
<filter> <filter-name>demo1</filter-name> <filter-class>cn.zjq.web.filter.FilterDemo1</filter-class> </filter> <filter-mapping> <filter-name>demo1</filter-name> <!-- 攔截路徑 --> <url-pattern>/*</url-pattern> </filter-mapping>
過濾器執行流程
- 執行過濾器
- 執行放行後的資源
- 回來執行過濾器放行代碼下邊的代碼
過濾器生命周期方法
- init:在服務器啟動後,會創建Filter對象,然後調用init方法。隻執行一次。用於加載資源
- doFilter:每一次請求被攔截資源時,會執行。執行多次
- destroy:在服務器關閉後,Filter對象被銷毀。如果服務器是正常關閉,則會執行destroy方法。隻執行一次。用於釋放資源
過濾器配置詳解
攔截路徑配置:
- 具體資源路徑: /index.jsp 隻有訪問index.jsp資源時,過濾器才會被執行
- 攔截目錄: /user/* 訪問/user下的所有資源時,過濾器都會被執行
- 後綴名攔截: *.jsp 訪問所有後綴名為jsp資源時,過濾器都會被執行
- 攔截所有資源:/* 訪問所有資源時,過濾器都會被執行
攔截方式配置:資源被訪問的方式
註解配置:
- 設置dispatcherTypes屬性
- REQUEST:默認值。瀏覽器直接請求資源
- FORWARD:轉發訪問資源
- INCLUDE:包含訪問資源
- ERROR:錯誤跳轉資源
- ASYNC:異步訪問資源
web.xml配置 設置標簽即可
過濾器鏈(配置多個過濾器)
執行順序:如果有兩個過濾器:過濾器1和過濾器2
- 過濾器1
- 過濾器2
- 資源執行
- 過濾器2
- 過濾器1
過濾器先後順序問題:
- 註解配置:按照類名的字符串比較規則比較,值小的先執行
如: AFilter 和 BFilter,AFilter就先執行瞭。 2. web.xml配置: 誰定義在上邊,誰先執行
Listener:監聽器
概念:web的三大組件之一。 事件監聽機制
- 事件:一件事情
- 事件源 :事件發生的地方
- 監聽器 :一個對象
- 註冊監聽:將事件、事件源、監聽器綁定在一起。 當事件源上發生某個事件後,執行監聽器代碼
ServletContextListener:監聽ServletContext對象的創建和銷毀 方法: void contextDestroyed(ServletContextEvent sce)
:ServletContext對象被銷毀之前會調用該方法 void contextInitialized(ServletContextEvent sce)
:ServletContext對象創建後會調用該方法 步驟:
- 定義一個類,實現ServletContextListener接口
- 復寫方法
- 配置
web.xml
<listener> <listener-class>cn.zjq.web.listener.ContextLoaderListener</listener-class> </listener>
指定初始化參數
註解:
@WebListener
到此這篇關於深入瞭解Java中的過濾器Filter和監聽器Listener的文章就介紹到這瞭,更多相關Java過濾器 監聽器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Web三大組件之Filter,Listener和Servlet詳解
- 詳細瞭解java監聽器和過濾器
- Java中使用Filter過濾器的方法
- 詳解JavaWeb中的過濾器Filter
- SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener)