SpringBoot過濾器的使用
一、什么是過濾器
過濾器是對數(shù)據(jù)進(jìn)行過濾,預(yù)處理過程,當(dāng)我們訪問網(wǎng)站時,有時候會發(fā)布一些敏感信息,發(fā)完以后有的會用*替代,還有就是登陸權(quán)限控制等,一個資源,沒有經(jīng)過授權(quán),肯定是不能讓用戶隨便訪問的,這個時候,也可以用到過濾器。過濾器的功能還有很多,例如實現(xiàn)URL級別的權(quán)限控制、壓縮響應(yīng)信息、編碼格式等等。
過濾器依賴servlet容器。在實現(xiàn)上基于函數(shù)回調(diào),可以對幾乎所有請求進(jìn)行過濾。
二、過濾器的使用
下面簡單的說說Spring Boot里面如何增加過濾器。
過濾器使用實例:具體示例代碼如下:
package com.rongrong.wiki.filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
public class LogFilter implements Filter {
private static final Logger LOG = LoggerFactory.getLogger(LogFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 打印請求信息
HttpServletRequest request = (HttpServletRequest) servletRequest;
LOG.info("------------- LogFilter 開始 -------------");
LOG.info("請求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
LOG.info("遠(yuǎn)程地址: {}", request.getRemoteAddr());
long startTime = System.currentTimeMillis();
filterChain.doFilter(servletRequest, servletResponse);
LOG.info("------------- LogFilter 結(jié)束 耗時:{} ms -------------", System.currentTimeMillis() - startTime);
}
/**
* 在銷毀Filter時自動調(diào)用。
*/
@Override
public void destroy() {
System.out.println("我是過濾器的被銷毀時調(diào)用的方法!,活不下去了................" );
}
}
過濾器里面的三個方法:
init:filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次。doFilter: 主要的業(yè)務(wù)代碼編寫方法,可以多次重復(fù)調(diào)用destroy: 在銷毀Filter時自動調(diào)用(程序關(guān)閉或者主動銷毀Filter)。
三、測試結(jié)果
重新啟動服務(wù),刷新頁面,查看結(jié)果如下圖:

到此這篇關(guān)于SpringBoot過濾器的使用的文章就介紹到這了,更多相關(guān)SpringBoot過濾器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot調(diào)用DeepSeek?API的完整操作指南
這篇文章主要為大家詳細(xì)介紹了SpringBoot調(diào)用DeepSeek?API的完整操作指南,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
Spring 實現(xiàn)excel及pdf導(dǎo)出表格示例
本篇文章主要介紹了Spring 實現(xiàn)excel及pdf導(dǎo)出表格示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Java concurrency之互斥鎖_動力節(jié)點Java學(xué)院整理
本文通過示例代碼給大家介紹了Java concurrency之互斥鎖的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-06-06
詳解Java8如何使用Lambda表達(dá)式進(jìn)行比較
Lambda表達(dá)式,也可稱為閉包,是java8的新特性,作用是取代大部分內(nèi)部類,優(yōu)化java代碼結(jié)構(gòu),讓代碼變得更加簡潔緊湊。本文將利用Lambda表達(dá)式進(jìn)行排序比較,需要的可以參考一下2022-01-01
Java Morris遍歷算法及其在二叉樹中的應(yīng)用
Morris遍歷是一種基于線索二叉樹的遍歷算法,可以在不使用?;蜻f歸的情況下,實現(xiàn)二叉樹的前序、中序和后序遍歷。該算法利用二叉樹中的空指針或線索指針,將遍歷序列嵌入到原二叉樹中,實現(xiàn)了常數(shù)級別的空間復(fù)雜度,適用于對空間要求較高的場景2023-04-04
Hadoop源碼分析四遠(yuǎn)程debug調(diào)試
本篇是Hadoop源碼分析系列文章第四篇,主要介紹一下Hadoop的遠(yuǎn)程debug調(diào)試步驟,后續(xù)本系列文章會持續(xù)更新,有需要的朋友可以借鑒參考下2021-09-09

