欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot使用過(guò)濾器Filter過(guò)程解析

 更新時(shí)間:2020年01月22日 15:55:44   作者:panchanggui  
這篇文章主要介紹了Spring Boot使用過(guò)濾器Filter過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Spring Boot使用過(guò)濾器Filter過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先我們說(shuō)說(shuō)什么是過(guò)濾器,過(guò)濾器是對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,預(yù)處理過(guò)程,當(dāng)我們?cè)L問(wèn)網(wǎng)站時(shí),有時(shí)候會(huì)發(fā)布一些敏感信息,發(fā)完以后有的會(huì)用*替代,還有就是登陸權(quán)限控制等,一個(gè)資源,沒(méi)有經(jīng)過(guò)授權(quán),肯定是不能讓用戶(hù)隨便訪(fǎng)問(wèn)的,這個(gè)時(shí)候,也可以用到過(guò)濾器。過(guò)濾器的功能還有很多,例如實(shí)現(xiàn)URL級(jí)別的權(quán)限控制、壓縮響應(yīng)信息、編碼格式等等。

過(guò)濾器依賴(lài)servlet容器。在實(shí)現(xiàn)上基于函數(shù)回調(diào),可以對(duì)幾乎所有請(qǐng)求進(jìn)行過(guò)濾。下面簡(jiǎn)單的說(shuō)說(shuō)Spring Boot里面如何增加過(guò)濾器。

1、引入spring-boot-starter-web

在pom.xml 中引入spring-boot-starter-web包。

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

2、建立過(guò)濾器程序

@Order(1):表示過(guò)濾器的順序,假設(shè)我們有多個(gè)過(guò)濾器,你如何確定過(guò)濾器的執(zhí)行順序?這個(gè)注解就是規(guī)定過(guò)濾器的順序。

@WebFilter:表示這個(gè)class是過(guò)濾器。

里面的參數(shù),filterName 為過(guò)濾器名字,urlPatterns 為過(guò)濾器的范圍,initParams 為過(guò)濾器初始化參數(shù)。

過(guò)濾器里面的三個(gè)方法

init : filter對(duì)象只會(huì)創(chuàng)建一次,init方法也只會(huì)執(zhí)行一次。

doFilter : 主要的業(yè)務(wù)代碼編寫(xiě)方法,可以多次重復(fù)調(diào)用

destroy : 在銷(xiāo)毀Filter時(shí)自動(dòng)調(diào)用(程序關(guān)閉或者主動(dòng)銷(xiāo)毀Filter)。

@Order(1)
@WebFilter(filterName = "piceaFilter", urlPatterns = "/*" , initParams = {
    @WebInitParam(name = "URL", value = "http://localhost:8080")})
public class PiceaFilter implements Filter {

  private String url;
  /**
   * 可以初始化Filter在web.xml里面配置的初始化參數(shù)
   * filter對(duì)象只會(huì)創(chuàng)建一次,init方法也只會(huì)執(zhí)行一次。
   * @param filterConfig
   * @throws ServletException
   */
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    this.url = filterConfig.getInitParameter("URL");
    System.out.println("我是過(guò)濾器的初始化方法!URL=" + this.url + ",生活開(kāi)始.........");
  }

  /**
   * 主要的業(yè)務(wù)代碼編寫(xiě)方法
   * @param servletRequest
   * @param servletResponse
   * @param filterChain
   * @throws IOException
   * @throws ServletException
   */
  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("我是過(guò)濾器的執(zhí)行方法,客戶(hù)端向Servlet發(fā)送的請(qǐng)求被我攔截到了");
    filterChain.doFilter(servletRequest, servletResponse);
    System.out.println("我是過(guò)濾器的執(zhí)行方法,Servlet向客戶(hù)端發(fā)送的響應(yīng)被我攔截到了");
  }

  /**
   * 在銷(xiāo)毀Filter時(shí)自動(dòng)調(diào)用。
   */
  @Override
  public void destroy() {
    System.out.println("我是過(guò)濾器的被銷(xiāo)毀時(shí)調(diào)用的方法!,活不下去了................" );
  }
}

3、建立Contoller類(lèi)

這個(gè)類(lèi)比較簡(jiǎn)單,不做特別說(shuō)明

@RestController
public class PiceaContoller {

  @RequestMapping("/query")
  public void asyncTask() throws Exception {
    System.out.println("我是控制類(lèi)里面的方法,我正在思考...............");
  }
}

4、啟動(dòng)類(lèi)中增加注解,自動(dòng)注冊(cè)Filter

@ServletComponentScan :在SpringBootApplication上使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通過(guò)@WebServlet、@WebFilter、@WebListener注解自動(dòng)注冊(cè),無(wú)需其他代碼。

@SpringBootApplication
@ServletComponentScan
public class SpringBootFiFilterApplication {

  public static void main(String[] args) {
    SpringApplication.run(SpringBootFiFilterApplication.class, args);
  }

}

5、測(cè)試結(jié)果

好吧,又到了看療效的時(shí)候了。

在瀏覽中輸入:http://localhost:2001/query

這個(gè)時(shí)候控制臺(tái)的輸入為如下圖片。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)與算法之稀疏數(shù)組與隊(duì)列深入理解

    Java數(shù)據(jù)結(jié)構(gòu)與算法之稀疏數(shù)組與隊(duì)列深入理解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之稀疏數(shù)組與隊(duì)列深入理解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • maven?插件?assembly?打tar.gz包的詳細(xì)過(guò)程

    maven?插件?assembly?打tar.gz包的詳細(xì)過(guò)程

    這篇文章主要介紹了maven插件assembly打tar.gz包的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Spring WebFlux實(shí)現(xiàn)參數(shù)校驗(yàn)的示例代碼

    Spring WebFlux實(shí)現(xiàn)參數(shù)校驗(yàn)的示例代碼

    請(qǐng)求參數(shù)校驗(yàn),在實(shí)際的應(yīng)用中很常見(jiàn),網(wǎng)上的文章大部分提供的使用注解的方式做參數(shù)校驗(yàn)。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來(lái)校驗(yàn)請(qǐng)求的參數(shù)。感興趣的可以了解一下
    2021-08-08
  • 詳解Java打包及上傳到私服務(wù)的方法

    詳解Java打包及上傳到私服務(wù)的方法

    這篇文章主要介紹了Java打包及上傳到私服務(wù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 基于HttpClient在HTTP協(xié)議接口測(cè)試中的使用(詳解)

    基于HttpClient在HTTP協(xié)議接口測(cè)試中的使用(詳解)

    下面小編就為大家?guī)?lái)一篇基于HttpClient在HTTP協(xié)議接口測(cè)試中的使用(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Jenkins之Log Parse使用方法詳解

    Jenkins之Log Parse使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Jenkins插件Log Parse使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • IDEA提示:Boolean method ‘xxx‘ is always inverted問(wèn)題

    IDEA提示:Boolean method ‘xxx‘ is always&nb

    這篇文章主要介紹了IDEA提示:Boolean method ‘xxx‘ is always inverted問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • MyBatis-Plus實(shí)現(xiàn)分頁(yè)的方法使用詳解

    MyBatis-Plus實(shí)現(xiàn)分頁(yè)的方法使用詳解

    這篇文章主要為大家介紹了MyBatis-Plus的分頁(yè)的方法使用,包括:不傳參數(shù)時(shí)的默認(rèn)結(jié)果、查詢(xún)不存在的數(shù)據(jù)、手動(dòng)包裝page和自定義SQL,需要的可以參考一下
    2022-03-03
  • MyBatis-Plus將字段修改為空值的解決方案

    MyBatis-Plus將字段修改為空值的解決方案

    這篇文章主要介紹了MyBatis-Plus將字段修改為空值的解決方案,本文給大家分享三種常用的解決方案,感興趣的朋友一起看看吧
    2023-12-12
  • springmvc 參數(shù)綁定總結(jié)

    springmvc 參數(shù)綁定總結(jié)

    本篇文章主要介紹了詳解springmvc 參數(shù)綁定,詳細(xì)的介紹了springmvc各種參數(shù)綁定的情況,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03

最新評(píng)論