亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解

 更新時間:2024年01月04日 11:28:19   作者:時間不會賴著不走  
這篇文章主要介紹了Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解,有些朋友可能不了解過濾器、監(jiān)聽器和攔截器的區(qū)別,本文就來詳細講一下,相信看完你會有所收獲,需要的朋友可以參考下

Filter:過濾器

當訪問服務器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能。

過濾器細節(jié)

web.xml配置

		<filter>
	        <filter-name>demo1</filter-name>
	        <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
	    </filter>
	    <filter-mapping>
	        <filter-name>demo1</filter-name>
			<!-- 攔截路徑 -->
	        <url-pattern>/*</url-pattern>
	    </filter-mapping>

過濾器執(zhí)行流程

1. 執(zhí)行過濾器

2. 執(zhí)行放行后的資源

3. 回來執(zhí)行過濾器放行代碼下邊的代碼

過濾器生命周期方法

1. init:在服務器啟動后,會創(chuàng)建Filter對象,然后調(diào)用init方法。只執(zhí)行一次。用于加載資源

2. doFilter:每一次請求被攔截資源時,會執(zhí)行。執(zhí)行多次

3. destroy:在服務器關(guān)閉后,F(xiàn)ilter對象被銷毀。如果服務器是正常關(guān)閉,則會執(zhí)行destroy方法。只執(zhí)行一次。用于釋放資源

過濾器配置詳解

* 攔截路徑配置:

1. 具體資源路徑: /index.jsp 只有訪問index.jsp資源時,過濾器才會被執(zhí)行

2. 攔截目錄: /user/* 訪問/user下的所有資源時,過濾器都會被執(zhí)行

3. 后綴名攔截: .jsp 訪問所有后綴名為jsp資源時,過濾器都會被執(zhí)行

4. 攔截所有資源:/ 訪問所有資源時,過濾器都會被執(zhí)行

* 攔截方式配置:資源被訪問的方式

* 注解配置:

* 設(shè)置dispatcherTypes屬性

1. REQUEST:默認值。瀏覽器直接請求資源

2. FORWARD:轉(zhuǎn)發(fā)訪問資源

3. INCLUDE:包含訪問資源

4. ERROR:錯誤跳轉(zhuǎn)資源

5. ASYNC:異步訪問資源

* web.xml配置

* 設(shè)置標簽即可

過濾器鏈(配置多個過濾器)

* 執(zhí)行順序:如果有兩個過濾器:過濾器1和過濾器2

1. 過濾器1

2. 過濾器2

3. 資源執(zhí)行

4. 過濾器2

5. 過濾器1

* 過濾器先后順序問題:

1. 注解配置:按照類名的字符串比較規(guī)則比較,值小的先執(zhí)行

* 如: AFilter 和 BFilter,AFilter就先執(zhí)行了。

2. web.xml配置: 誰定義在上邊,誰先執(zhí)行

使用步驟

  1. 定義一個類,實現(xiàn)接口Filter
  2. 復寫方法
  3. 配置攔截路徑
    • web.xml
    • 注解
	@WebFilter("/*")//訪問所有資源之前,都會執(zhí)行該過濾器
		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被執(zhí)行了....");
		           //放行
		        filterChain.doFilter(servletRequest,servletResponse);
		    }
		    @Override
		    public void destroy() {
		
		    }
		}

Listener 監(jiān)聽器

概念:web的三大組件之一。

  • 事件監(jiān)聽機制
  •  事件 :一件事情
  • 事件源 :事件發(fā)生的地方
  • 監(jiān)聽器 :一個對象
  • 注冊監(jiān)聽:將事件、事件源、監(jiān)聽器綁定在一起。 當事件源上發(fā)生某個事件后,執(zhí)行監(jiān)聽器代碼

Interceptor 攔截器

它依賴于web框架,在SpringMVC中就是依賴于SpringMVC框架。在實現(xiàn)上,基于Java的反射機制,屬于面向切面編程(AOP)的一種運用,就是在service或者一個方法前,調(diào)用一個方法,或者在方法后,調(diào)用一個方法,比如動態(tài)代理就是攔截器的簡單實現(xiàn),在調(diào)用方法前打印出字符串(或者做其它業(yè)務邏輯的操作),也可以在調(diào)用方法后打印出字符串,甚至在拋出異常的時候做業(yè)務邏輯的操作。由于攔截器是基于web框架的調(diào)用,因此可以使用Spring的依賴注入(DI)進行一些業(yè)務操作,同時一個攔截器實例在一個controller生命周期之內(nèi)可以多次調(diào)用。攔截器可以對靜態(tài)資源的請求進行攔截處理。

Interceptor 攔截器和 Filter:過濾器區(qū)別

1.攔截器(Interceptor)是基于Java的反射機制,而過濾器(Filter)是基于函數(shù)回調(diào)。從靈活性上說攔截器功能更強大些,F(xiàn)ilter能做的事情,都能做,而且可以在請求前,請求后執(zhí)行,比較靈活。Filter主要是針對URL地址做一個編碼的事情、過濾掉沒用的參數(shù)、安全校驗(比較泛的,比如登錄不登錄之類),太細的話,還是建議用interceptor。不過還是根據(jù)不同情況選擇合適的。

2.觸發(fā)時機不同

在這里插入圖片描述

過濾器Filter是在請求進入容器后,但在進入servlet之前進行預處理,請求結(jié)束是在servlet處理完以后。

攔截器 Interceptor 是在請求進入servlet后,在進入Controller之前進行預處理的,Controller 中渲染了對應的視圖之后請求結(jié)束。

到此這篇關(guān)于Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解的文章就介紹到這了,更多相關(guān)過濾器、監(jiān)聽器和攔截器的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入了解Java中成員變量與局部變量的使用與區(qū)別

    深入了解Java中成員變量與局部變量的使用與區(qū)別

    成員變量和局部變量在每種編程語言中都有涉及,本文將通過示例為大家詳細講講Java中成員變量與局部變量的使用與區(qū)別,感興趣的可以了解一下
    2022-08-08
  • Java深度復制功能與用法實例分析

    Java深度復制功能與用法實例分析

    這篇文章主要介紹了Java深度復制功能與用法,簡單講述了深度復制的概念、功能并結(jié)合實例形式分析了java實現(xiàn)深度復制的具體操作技巧,需要的朋友可以參考下
    2018-01-01
  • 解決maven update project 后項目jdk變成1.5的問題

    解決maven update project 后項目jdk變成1.5的問題

    下面小編就為大家?guī)硪黄鉀Qmaven update project 后項目jdk變成1.5的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧
    2016-11-11
  • Java設(shè)計模式之命令模式(Command模式)介紹

    Java設(shè)計模式之命令模式(Command模式)介紹

    這篇文章主要介紹了Java設(shè)計模式之命令模式(Command模式)介紹,本文講解了Command模式的定義、如何使用命令模式等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Java SoftReference類案例詳解

    Java SoftReference類案例詳解

    這篇文章主要介紹了Java SoftReference類案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Kotlin 開發(fā)環(huán)境詳解及簡單實例

    Kotlin 開發(fā)環(huán)境詳解及簡單實例

    這篇文章主要介紹了 Kotlin 開發(fā)環(huán)境詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java獲取本地文件和遠程文件的方式代碼示例

    java獲取本地文件和遠程文件的方式代碼示例

    這篇文章主要給大家介紹了關(guān)于java獲取本地文件和遠程文件的方式,我們項目開發(fā)的時候,經(jīng)常會讀取文件,如果文件在本服務器,則直接用new File()讀取即可,但是有時候需要遠程讀取文件,需要的朋友可以參考下
    2023-08-08
  • IDEA配置Gradle及Gradle安裝的實現(xiàn)步驟

    IDEA配置Gradle及Gradle安裝的實現(xiàn)步驟

    本文主要介紹了IDEA配置Gradle及Gradle安裝的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • SpringBoot整合分布式鎖redisson的示例代碼

    SpringBoot整合分布式鎖redisson的示例代碼

    這篇文章主要介紹了SpringBoot整合分布式鎖redisson,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • RabbitMQ 的七種隊列模式和應用場景

    RabbitMQ 的七種隊列模式和應用場景

    最近學習RabbitMQ,本文就記錄一下RabbitMQ 的七種隊列模式和應用場景,方便以后使用,也方便和大家共享,相互交流
    2021-05-05

最新評論