最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot 過(guò)濾器 Filter使用實(shí)例詳解

 更新時(shí)間:2022年10月08日 09:53:56   作者:后端Q  
這篇文章主要為大家介紹了SpringBoot 過(guò)濾器Filter使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

過(guò)濾器是AOP(面向切面編程)思想的具體實(shí)現(xiàn)??梢赃^(guò)濾瀏覽器發(fā)出的請(qǐng)求,并且決定放行請(qǐng)求還是中斷請(qǐng)求。

在瀏覽器對(duì)服務(wù)器發(fā)起請(qǐng)求或者服務(wù)器對(duì)瀏覽器響應(yīng),都會(huì)經(jīng)過(guò)過(guò)濾器。

基于過(guò)濾器的機(jī)制,我們可以在過(guò)濾器中對(duì)請(qǐng)求和響應(yīng)做一些處理,可以在過(guò)濾器中決定是否放行,例如:校驗(yàn)請(qǐng)求中有沒(méi)有敏感字符串,校驗(yàn)有沒(méi)有Session,實(shí)現(xiàn)URL級(jí)別的權(quán)限控制、壓縮響應(yīng)信息、編碼格式等。

用法

在spring的應(yīng)用中我們存在兩種過(guò)濾的用法,一種是攔截器、另外一種當(dāng)然是過(guò)濾器。我們這里介紹過(guò)濾器在springboot的用法,在springmvc中的用法基本上一樣,只是配置上面有點(diǎn)區(qū)別。

功能

filter功能,它使用戶(hù)可以改變一個(gè) request和修改一個(gè)response. Filter 不是一個(gè)servlet,它不能產(chǎn)生一個(gè)response,它能夠在一個(gè)request到達(dá)servlet之前預(yù)處理request,也可以在離開(kāi) servlet時(shí)處理response.換種說(shuō)法,filter其實(shí)是一個(gè)”servlet chaining”(servlet 鏈).

Filter接口中有一個(gè)doFilter方法,當(dāng)開(kāi)發(fā)人員編寫(xiě)好Filter類(lèi)實(shí)現(xiàn)doFilter方法,并配置對(duì)哪個(gè)web資源進(jìn)行攔截后,WEB服務(wù)器每次在調(diào)用web資源的service方法之前(服務(wù)器內(nèi)部對(duì)資源的訪(fǎng)問(wèn)機(jī)制決定的),都會(huì)先調(diào)用一下filter的doFilter方法。

實(shí)現(xiàn)

Filter的執(zhí)行由Servlet容器回調(diào)完成,因此我們不需要再額外引包。

新建MyFilter類(lèi)

@Slf4j
@Order(1)
@WebFilter(filterName = "myFilter", urlPatterns = {"/user/*"})
public class MyFilter implements Filter {
    @Autowired
    private SysUserService sysUserService;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("過(guò)濾器初始化");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        log.info("請(qǐng)求處理");
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        log.info("MyFilter, URL:{}", request.getRequestURI());
        if (request.getRequestURI().contains("login")) {
            filterChain.doFilter(servletRequest, servletResponse);
        } else {
            log.info("非法URL:{}", request.getRequestURI());
            response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
            PrintWriter writer = response.getWriter();
            writer.print("no access");
        }
    }
    @Override
    public void destroy() {
        log.info("過(guò)濾器銷(xiāo)毀");
    }
}

用@WebFilter注解,指定攔截路徑以及一些參數(shù),同時(shí)需要在啟動(dòng)類(lèi)使用@ServletComponentScan掃描帶@WebFilter、@WebServlet、@WebListener并將幫我們注入bean

@ServletComponentScan
@SpringBootApplication
public class DevRootApplication {
    public static void main(String[] args) {
        SpringApplication.run(DevRootApplication.class, args);
    }
}

當(dāng)有多個(gè)過(guò)濾器之后,就需要規(guī)定各個(gè)過(guò)濾器的指定順序了。

使用@Order()注解

以上就是SpringBoot 過(guò)濾器 Filter使用實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Filter過(guò)濾器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot集成echarts實(shí)現(xiàn)k線(xiàn)圖功能

    SpringBoot集成echarts實(shí)現(xiàn)k線(xiàn)圖功能

    ECharts是一款基于JavaScript的數(shù)據(jù)可視化圖表庫(kù),提供直觀(guān),生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表,本文給大家介紹了SpringBoot集成echarts實(shí)現(xiàn)k線(xiàn)圖功能,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)

    java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)

    這篇文章主要介紹了java編程之單元測(cè)試(Junit),結(jié)合實(shí)例形式較為詳細(xì)的分析總結(jié)了Java單元測(cè)試的原理、步驟及相關(guān)注意事項(xiàng),并附帶了完整代碼供讀者下載參考,需要的朋友可以參考下
    2015-11-11
  • SpringMVC之簡(jiǎn)單的增刪改查示例(SSM整合)

    SpringMVC之簡(jiǎn)單的增刪改查示例(SSM整合)

    本篇文章主要介紹了SpringMVC之簡(jiǎn)單的增刪改查示例(SSM整合),這個(gè)例子是基于SpringMVC+Spring+Mybatis實(shí)現(xiàn)的。有興趣的可以了解一下。
    2017-03-03
  • SpringCloud Nacos集群搭建過(guò)程詳解

    SpringCloud Nacos集群搭建過(guò)程詳解

    Nacos集群不僅僅是服務(wù)注冊(cè)中心,還在微服務(wù)架構(gòu)中發(fā)揮著關(guān)鍵的角色,支持多種場(chǎng)景下的服務(wù)治理和協(xié)調(diào),本文介紹了如何在SpringCloud環(huán)境中搭建Nacos集群,為讀者提供了一份清晰而詳盡的指南,通過(guò)逐步演示每個(gè)關(guān)鍵步驟,讀者能夠輕松理解并操作整個(gè)搭建過(guò)程
    2024-02-02
  • 設(shè)計(jì)模式之原型模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    設(shè)計(jì)模式之原型模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了設(shè)計(jì)模式之原型模式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 關(guān)于Kafka消費(fèi)者訂閱方式

    關(guān)于Kafka消費(fèi)者訂閱方式

    這篇文章主要介紹了關(guān)于Kafka消費(fèi)者訂閱方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java多線(xiàn)程之線(xiàn)程安全問(wèn)題詳情

    Java多線(xiàn)程之線(xiàn)程安全問(wèn)題詳情

    這篇文章主要介紹了Java多線(xiàn)程之線(xiàn)程安全問(wèn)題詳情,線(xiàn)程安全問(wèn)題是指因多線(xiàn)程搶占式執(zhí)行而導(dǎo)致程序出現(xiàn)bug的問(wèn)題。內(nèi)容介紹詳細(xì)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • spring?boot寫(xiě)java?web和接口

    spring?boot寫(xiě)java?web和接口

    這篇文章主要介紹了spring?boot寫(xiě)java?web和接口,Spring?Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置,下面詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-01-01
  • Nacos1.4.0 Windows10單機(jī)模式啟動(dòng)和集群?jiǎn)?dòng)過(guò)程解析

    Nacos1.4.0 Windows10單機(jī)模式啟動(dòng)和集群?jiǎn)?dòng)過(guò)程解析

    這篇文章主要介紹了Nacos1.4.0 Windows10單機(jī)模式啟動(dòng)和集群?jiǎn)?dòng),第一次使用nacos,廢話(huà)不多說(shuō),記錄下自己?jiǎn)?dòng)Nacos遇到的坑,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • maven繼承父工程統(tǒng)一版本號(hào)的實(shí)現(xiàn)

    maven繼承父工程統(tǒng)一版本號(hào)的實(shí)現(xiàn)

    這篇文章主要介紹了maven繼承父工程統(tǒng)一版本號(hào)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論

泸州市| 曲周县| 桐城市| 利津县| 襄垣县| 揭东县| 大庆市| 河北区| 慈利县| 特克斯县| 柘城县| 瓦房店市| 麟游县| 博白县| 谢通门县| 大新县| 墨脱县| 和林格尔县| 晋州市| 嘉兴市| 崇阳县| 宁晋县| 昌黎县| 正镶白旗| 太仓市| 明光市| 安徽省| 高淳县| 沂源县| 南汇区| 通州市| 兴城市| 介休市| 宁阳县| 南川市| 武冈市| 霍山县| 东乌珠穆沁旗| 上高县| 甘南县| 孟连|