国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 過濾器 @WebFilter 詳解

這篇具有很好參考價值的文章主要介紹了Java 過濾器 @WebFilter 詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

簡單介紹

@WebFilter注解是JavaEE中的一種注解,用于標(biāo)識一個類為過濾器(Filter)。過濾器用于對請求進(jìn)行過濾和處理,可以在請求到達(dá)目標(biāo)資源之前或之后執(zhí)行一些操作。
使用**@WebFilter**注解可以將一個類聲明為過濾器,并指定過濾器的名稱、URL模式、Servlet名稱等。

優(yōu)勢

簡化配置:不再需要在web.xml文件中手動配置過濾器,而是通過注解直接配置在過濾器類上。
可讀性高:注解方式可以將過濾器的相關(guān)信息直接寫在過濾器類上,使得代碼更加簡潔和可讀。
方便管理:通過注解方式,可以更方便地管理和組織過濾器,減少了配置文件的復(fù)雜性。

方法

@WebFilter注解提供了以下屬性來配置過濾器:

filterName:指定過濾器的名稱,可選屬性。
urlPatterns:指定過濾器攔截的URL模式,可以是一個字符串?dāng)?shù)組,表示多個URL模式。
value:urlPatterns的別名屬性,可以用來指定過濾器攔截的URL模式。
servletNames:指定過濾器攔截的Servlet名稱,可以是一個字符串?dāng)?shù)組,表示多個Servlet名稱。
dispatcherTypes:指定過濾器的調(diào)度類型,可以是DispatcherType枚舉類型的數(shù)組,默認(rèn)為REQUEST。
asyncSupported:指定過濾器是否支持異步請求,默認(rèn)為false。
initParams:指定過濾器的初始化參數(shù),以@WebInitParam注解的數(shù)組形式提供。

過濾器原理

當(dāng)我們使用過濾器時,過濾器會對游覽器的請求進(jìn)行過濾,過濾器可以動態(tài)的分為3個部分,1.放行之前的代碼,2.放行,3.放行后的代碼,這3個部分分別會發(fā)揮不同作用

第一部分代碼會對游覽器請求進(jìn)行第一次過濾,然后繼續(xù)執(zhí)行
第二部分代碼就是將游覽器請求放行,如果還有過濾器,那么就繼續(xù)交給下一個過濾器
第三部分代碼就是對返回的Web資源再次進(jìn)行過濾處理
@webfilter注解,java,開發(fā)語言

創(chuàng)建過濾器

創(chuàng)建MyFilter,只需要實現(xiàn)Filter接口就行,并且加一個WebFIlter注解
@webfilter注解,java,開發(fā)語言

代碼演示

Filter的三個階段就對應(yīng)著Filter的3個方法,init方法會在Filter創(chuàng)建時調(diào)用,doFilter方法會在請求和攔截匹配時調(diào)用,destroy方法會在Filter銷毀時調(diào)用。

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import java.io.IOException;

@WebFilter(initParams = {@WebInitParam(name = "aaa", value = "sss")})
public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("調(diào)用01過濾器");
        String aaa = filterConfig.getInitParameter("aaa");
        System.out.println(aaa);
    }


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("對01 request 進(jìn)行過濾");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("對01 response 過濾");
    }

    @Override
    public void destroy() {
        System.out.println("01 調(diào)用了destroy方法");
    }
}

啟動服務(wù)器控制臺輸出
@webfilter注解,java,開發(fā)語言
進(jìn)行攔截時控制臺輸出
@webfilter注解,java,開發(fā)語言
關(guān)閉服務(wù)器控制臺輸出 **
@webfilter注解,java,開發(fā)語言
到此,我們就成功驗證了Filter的生命周期。 filterConfig.getInitParameter()是獲取我們注解配置得參數(shù)值value。根據(jù)上面圖解,大家可能會有個疑問為什么會有
02**這個過濾器。那我們接下來就講一下。

多個過濾器

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/*")
public class MyFilter2 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("調(diào)用02過濾器");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("對02 request 進(jìn)行過濾");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("對02 response 過濾");
    }

    @Override
    public void destroy() {
        System.out.println("02 調(diào)用了destroy方法");
    }
}

@webfilter注解,java,開發(fā)語言

我們可以看見Filter01先進(jìn)行過濾,然后交給Filter02,然后訪問資源,然后Filter02對響應(yīng)進(jìn)行過濾,然后Filter01對響應(yīng)進(jìn)行過濾。
@webfilter注解,java,開發(fā)語言

多個Filter的執(zhí)行順序

如果我們是使用@WebFilter進(jìn)行配置的,那么執(zhí)行順序就是字符比較順序來執(zhí)行,例如有2個過濾器,一個是AFilter,一個是BFilter,那么AFilter就會先執(zhí)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-770961.html

到了這里,關(guān)于Java 過濾器 @WebFilter 詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Fiddler過濾器 Filters 詳解

    Fiddler過濾器 Filters 詳解

    目錄 前言: 一、 Hosts 過濾?(較常用) 二、Client Process 過濾(客戶端進(jìn)程過濾,通過配置只過濾/不過濾哪些進(jìn)程的請求。用的不多) 三、Request Headers?(根據(jù)請求頭信息進(jìn)行過濾。常用) 四、Breakpionts 設(shè)置斷點(diǎn)(很少用,畢竟可以通過 bpu、bpafter以及改寫規(guī)則js設(shè)置斷點(diǎn))

    2024年02月12日
    瀏覽(28)
  • Spring Security內(nèi)置過濾器詳解

    Spring Security內(nèi)置過濾器詳解

    相關(guān)文章: OAuth2的定義和運(yùn)行流程 Spring Security OAuth實現(xiàn)Gitee快捷登錄 Spring Security OAuth實現(xiàn)GitHub快捷登錄 Spring Security的過濾器鏈機(jī)制 Spring Security OAuth Client配置加載源碼分析 根據(jù)前面的示例,我們已經(jīng)知道啟動時會加載18個過濾器,并且已經(jīng)知道了請求會匹配到DefaultSecurityF

    2024年02月05日
    瀏覽(26)
  • gateway之過濾器(Filter)詳解

    gateway之過濾器(Filter)詳解

    在Spring Cloud中,過濾器(Filter)是一種關(guān)鍵的組件,用于在微服務(wù)架構(gòu)中處理和轉(zhuǎn)換傳入請求以及傳出響應(yīng)。過濾器位于服務(wù)網(wǎng)關(guān)或代理中,并通過攔截請求和響應(yīng)流量來提供各種功能。 過濾器在請求的不同生命周期階段執(zhí)行特定的操作,例如鑒權(quán)、認(rèn)證、請求轉(zhuǎn)發(fā)、限流、

    2024年02月05日
    瀏覽(20)
  • Spring Cloud Gateway 過濾器詳解

    Spring Cloud Gateway 過濾器詳解

    Spring Cloud Gateway根據(jù)作用范圍劃分為:GatewayFilter和GlobalFilter 由filter工作流程點(diǎn),可以知道filter有著非常重要的作用,在“pre”類型的過濾器可以做參數(shù)校驗、權(quán)限校驗、流量監(jiān)控、日志輸出、協(xié)議轉(zhuǎn)換等,在“post”類型的過濾器中可以做響應(yīng)內(nèi)容、響應(yīng)頭的修改,日志的輸

    2023年04月08日
    瀏覽(24)
  • 設(shè)計模式詳解-過濾器模式(標(biāo)準(zhǔn)模式)

    在軟件開發(fā)中,我們常常需要對大量的數(shù)據(jù)進(jìn)行篩選或過濾。例如,在一個電子商務(wù)網(wǎng)站中,我們可能需要根據(jù)用戶的喜好、價格區(qū)間、商品類型等條件來篩選出符合用戶需求的商品列表。為了實現(xiàn)這樣的功能,過濾器模式就派上了用場。 過濾器模式是一種結(jié)構(gòu)型設(shè)計模式,

    2024年02月12日
    瀏覽(24)
  • [Java]過濾器(Filter)

    [Java]過濾器(Filter)

    一、什么是過濾器 過濾器是Servlet的高級特性之一,是實現(xiàn)Filter接口的Java類! 過濾器的執(zhí)行流程: ? 從上面的圖我們可以發(fā)現(xiàn),當(dāng)瀏覽器發(fā)送請求給服務(wù)器的時候, 先執(zhí)行過濾器,然后才訪問Web的資源。服務(wù)器響應(yīng)Response,從Web資源抵達(dá)瀏覽器之前,也會途徑過濾器。 過濾

    2024年02月11日
    瀏覽(18)
  • java過濾器(Filter)

    java過濾器(Filter)

    原文鏈接: java過濾器(Filter – 編程屋 目錄 1 過濾器簡介 2 Filter詳細(xì)介紹 3 Filter的用法 3.1 用法1 ?3.2 用法2 filter也稱之為過濾器,它是javaWeb三大組件之一(Servlet程序、Listener監(jiān)聽器、Filter過濾器) 作用: 既可以對請求進(jìn)行攔截,也可以對響應(yīng)進(jìn)行處理。 常見場景: 權(quán)限檢

    2024年02月20日
    瀏覽(30)
  • Java實現(xiàn)布隆過濾器

    Java實現(xiàn)布隆過濾器

    背景: 為預(yù)防大量黑客故意發(fā)起非法的時間查詢請求,造成緩存擊穿,建議采用布隆過濾器的方法解決。布隆過濾器通過一個很長的二進(jìn)制向量和一系列隨機(jī)映射函數(shù)(哈希函數(shù))來記錄與識別某個數(shù)據(jù)是否在一個集合中。如果數(shù)據(jù)不在集合中,能被識別出來,不需要到數(shù)據(jù)

    2024年02月01日
    瀏覽(25)
  • Vue2中過濾器的用法詳解

    Vue2中過濾器的用法詳解

    目錄 一、過濾器的概念 二、過濾器的使用位置 三、過濾器的分類 1、全局過濾器 2、本地過濾器 四、過濾器應(yīng)用實例 1、使用過濾器實現(xiàn)省略號 2、使用過濾器處理時間戳 五、Vue3中已廢棄過濾器? 過濾器 是vue中的一個特性,作用是用于對文本進(jìn)行格式化的作用。分為全局過

    2024年02月07日
    瀏覽(16)
  • SpringBoot之過濾器Filter詳解及登錄校驗

    SpringBoot之過濾器Filter詳解及登錄校驗

    目錄 1 快速入門 2.Filter詳解 2.1 執(zhí)行流程 2.2 攔截路徑 2.3 過濾器鏈 3.登錄校驗-Filter 3.1 分析 3.2 具體流程 3.3 代碼實現(xiàn) 什么是Filter? Filter表示過濾器,是 JavaWeb三大組件(Servlet、Filter、Listener)之一。 過濾器可以把對資源的請求攔截下來,從而實現(xiàn)一些特殊的功能 使用了過濾器

    2024年02月04日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包