Spring Boot使用過濾器Filter過程解析
這篇文章主要介紹了Spring Boot使用過濾器Filter過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
首先我們說說什么是過濾器,過濾器是對數(shù)據(jù)進行過濾,預處理過程,當我們訪問網(wǎng)站時,有時候會發(fā)布一些敏感信息,發(fā)完以后有的會用*替代,還有就是登陸權限控制等,一個資源,沒有經(jīng)過授權,肯定是不能讓用戶隨便訪問的,這個時候,也可以用到過濾器。過濾器的功能還有很多,例如實現(xiàn)URL級別的權限控制、壓縮響應信息、編碼格式等等。
過濾器依賴servlet容器。在實現(xiàn)上基于函數(shù)回調,可以對幾乎所有請求進行過濾。下面簡單的說說Spring Boot里面如何增加過濾器。
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、建立過濾器程序
@Order(1):表示過濾器的順序,假設我們有多個過濾器,你如何確定過濾器的執(zhí)行順序?這個注解就是規(guī)定過濾器的順序。
@WebFilter:表示這個class是過濾器。
里面的參數(shù),filterName 為過濾器名字,urlPatterns 為過濾器的范圍,initParams 為過濾器初始化參數(shù)。
過濾器里面的三個方法
init : filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次。
doFilter : 主要的業(yè)務代碼編寫方法,可以多次重復調用
destroy : 在銷毀Filter時自動調用(程序關閉或者主動銷毀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對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次。
* @param filterConfig
* @throws ServletException
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.url = filterConfig.getInitParameter("URL");
System.out.println("我是過濾器的初始化方法!URL=" + this.url + ",生活開始.........");
}
/**
* 主要的業(yè)務代碼編寫方法
* @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("我是過濾器的執(zhí)行方法,客戶端向Servlet發(fā)送的請求被我攔截到了");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("我是過濾器的執(zhí)行方法,Servlet向客戶端發(fā)送的響應被我攔截到了");
}
/**
* 在銷毀Filter時自動調用。
*/
@Override
public void destroy() {
System.out.println("我是過濾器的被銷毀時調用的方法!,活不下去了................" );
}
}
3、建立Contoller類
這個類比較簡單,不做特別說明
@RestController
public class PiceaContoller {
@RequestMapping("/query")
public void asyncTask() throws Exception {
System.out.println("我是控制類里面的方法,我正在思考...............");
}
}
4、啟動類中增加注解,自動注冊Filter
@ServletComponentScan :在SpringBootApplication上使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通過@WebServlet、@WebFilter、@WebListener注解自動注冊,無需其他代碼。
@SpringBootApplication
@ServletComponentScan
public class SpringBootFiFilterApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootFiFilterApplication.class, args);
}
}
5、測試結果
好吧,又到了看療效的時候了。
在瀏覽中輸入:http://localhost:2001/query
這個時候控制臺的輸入為如下圖片。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java數(shù)據(jù)結構與算法之稀疏數(shù)組與隊列深入理解
這篇文章主要介紹了Java數(shù)據(jù)結構與算法之稀疏數(shù)組與隊列深入理解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
maven?插件?assembly?打tar.gz包的詳細過程
這篇文章主要介紹了maven插件assembly打tar.gz包的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
Spring WebFlux實現(xiàn)參數(shù)校驗的示例代碼
請求參數(shù)校驗,在實際的應用中很常見,網(wǎng)上的文章大部分提供的使用注解的方式做參數(shù)校驗。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來校驗請求的參數(shù)。感興趣的可以了解一下2021-08-08
基于HttpClient在HTTP協(xié)議接口測試中的使用(詳解)
下面小編就為大家?guī)硪黄贖ttpClient在HTTP協(xié)議接口測試中的使用(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
IDEA提示:Boolean method ‘xxx‘ is always&nb
這篇文章主要介紹了IDEA提示:Boolean method ‘xxx‘ is always inverted問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08

