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)文章
面試官:java ThreadLocal真的會造成內(nèi)存泄露嗎
ThreadLocal,java面試過程中的“釘子戶”,在網(wǎng)上也充斥著各種有關(guān)ThreadLocal內(nèi)存泄露的問題,本文換個角度,先思考ThreadLocal體系中的ThreadLocalMap為什么要設(shè)計成弱引用2021-08-08利用Maven實現(xiàn)將代碼打包成第三方公共jar包
在項目開發(fā)過程中,我們經(jīng)常需要將一些公共方法提取出來,然后單獨封裝成一個第三方公共jar包,采用普通的方式打包后的jar,依賴的工程執(zhí)行編譯時,卻提示找不到對應(yīng)的依賴包,那么如何將工程打包為可執(zhí)行jar包呢?下面向大家分享三種方法2022-10-10java中double類型運(yùn)算結(jié)果異常的解決方法
下面小編就為大家?guī)硪黄猨ava中double類型運(yùn)算結(jié)果異常的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12hadoop運(yùn)行java程序(jar包)并運(yùn)行時動態(tài)指定參數(shù)
這篇文章主要介紹了hadoop如何運(yùn)行java程序(jar包)并運(yùn)行時動態(tài)指定參數(shù),使用hadoop 運(yùn)行 java jar包,Main函數(shù)一定要加上全限定類名,需要的朋友可以參考下2021-06-06