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

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

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

簡介

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

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

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

用法

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

功能

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

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

實(shí)現(xiàn)

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

新建MyFilter類

@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("過濾器初始化");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        log.info("請求處理");
        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("過濾器銷毀");
    }
}

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

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

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

使用@Order()注解

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

相關(guān)文章

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

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

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

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

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

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

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

    SpringCloud Nacos集群搭建過程詳解

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

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

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

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

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

    Java多線程之線程安全問題詳情

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

    spring?boot寫java?web和接口

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

    Nacos1.4.0 Windows10單機(jī)模式啟動和集群啟動過程解析

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

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

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

最新評論

玉门市| 东方市| 且末县| 嘉祥县| 四平市| 泽库县| 安岳县| 黑河市| 通江县| 海伦市| 响水县| 桐城市| 郁南县| 九龙坡区| 云浮市| 晴隆县| 临潭县| 临海市| 溧阳市| 新丰县| 尼玛县| 龙胜| 南郑县| 小金县| 崇仁县| 肥城市| 新巴尔虎左旗| 视频| 樟树市| 八宿县| 德化县| 桐柏县| 滕州市| 隆林| 临湘市| 安阳市| 临澧县| 明星| 大渡口区| 永嘉县| 辽宁省|