JavaWeb之Filter與Listener使用解析
一、Filter
1.1 Filter概述
- 概念:Filter表示過濾器,是JavaWeb三大組件 (Servlet、Filter、Listener) 之一
- 過濾器可以把對資源的請求攔截下來,從而實現一些特殊的功能
- 過濾器一般完成一些通用的操作,比如:權限控制、統一編碼處理、敏感字符處理等等
1.2 Filter快速入門
進行 Filter 開發(fā)分成以下三步實現
定義類,實現Filter接口,并重寫其所有方法
配置Filter攔截資源的路徑:在類上定義 @WebFilter 注解。而注解的value屬性值 /* 表示攔截所有的資源
在doFilter方法中輸出一句話,并放行
package com.learn.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; /** * @author 咕咕貓 * @version 1.0 */ @WebFilter("/*") public class FilterDemo implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //放行前,對request數據進行處理 System.out.println("1. FilterDemo...."); //放行 filterChain.doFilter(servletRequest,servletResponse); //放行后,對response數據進行處理 System.out.println("3. FilterDemo...."); } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } }
1.3 Filter執(zhí)行流程
Filter的執(zhí)行流程如下:
1.4 Filter攔截的路徑配置
攔截路徑表示 Filter 會對請求的哪些資源進行攔截,使用 @WebFilter 注解進行配置。如: @WebFilter("攔截路徑")
攔截路徑有如下四種配置方式:
- 攔截具體的資源: /index.jsp:只有訪問index.jsp時才會被攔截
- 目錄攔截:/user/*:訪問/user下的所有資源,都會攔截
- 后綴名攔截:*. jsp:訪問后綴名為jsp 的所有資源,都會被攔截
- 攔截所有:/*:訪問所有資源,都會被攔截
1.5 過濾器鏈
過濾器鏈是指在一個Web應用,可以配置多個過濾器,這多個過濾器稱為過濾器鏈。
代碼案例中為什么是先執(zhí)行 FilterDemo ,后執(zhí)行 FilterDemo2 呢?
- 我們現在使用的是注解配置Filter,而這種配置方式的優(yōu)先級是按照過濾器類名(字符串)的自然排序。
- 比如有如下兩個名稱的過濾器 : BFilterDemo 和 AFilterDemo 。那一定是 AFilterDemo 過濾器先執(zhí)行。
二、Listener
2.1 概述
- Listener表示監(jiān)聽器,是JavaWeb三大組件(Servlet、Filter、Listener) 之一
- 監(jiān)聽器可以監(jiān)聽就是在 application , session , request 三個對象創(chuàng)建、銷毀或者往其中添加修改刪除屬性時自動 執(zhí)行代碼的功能組件。
application 是 ServletContext 類型的對象。
ServletContext 代表整個web應用,在服務器啟動的時候,tomcat會自動創(chuàng)建該對象。在服務器關閉時會自動銷毀該 對象。
2.2 分類
JavaWeb 提供了8個監(jiān)聽器:
這里面只有 ServletContextListener 這個監(jiān)聽器后期會接觸到, ServletContextListener 是用來監(jiān)聽 ServletContext 對象的創(chuàng)建和銷毀。
2.3 ServletContextListener的使用
1. 定義類,實現 ServletContextListener 接口并重寫所有的抽象方法
2. 在類上添加 @WebListener 注解
package com.learn.web.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; /** * @author 咕咕貓 * @version 1.0 */ @WebListener public class ContextLoaderListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { //加載資源 System.out.println("ContextLoaderListener..."); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { //釋放資源 } }
到此這篇關于JavaWeb之Filter與Listener使用解析的文章就介紹到這了,更多相關Filter與Listener使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于SpringMVC攔截器實現接口耗時監(jiān)控功能
本文呢主要介紹了基于SpringMVC攔截器實現的接口耗時監(jiān)控功能,統計接口的耗時情況屬于一個可以復用的功能點,因此這里直接使用 SpringMVC的HandlerInterceptor攔截器來實現,需要的朋友可以參考下2024-02-02SpringMVC使用JsonView針對統一實體返回不同信息
這篇文章主要為大家介紹了SpringMVC使用JsonView針對統一實體返回不同信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03JavaSE面試題之this與super關鍵字的區(qū)別詳解
this關鍵字用于引用當前對象的引用,super關鍵字用于引用父類對象的引用,下面這篇文章主要給大家介紹了關于JavaSE面試題之this與super關鍵字區(qū)別的相關資料,需要的朋友可以參考下2023-12-12