首頁  >  文章  >  Java  >  Java中的過濾器Filter和監聽器Listener怎麼使用

Java中的過濾器Filter和監聽器Listener怎麼使用

王林
王林轉載
2023-05-20 08:58:111419瀏覽

    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怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除