SpringBoot過濾器的使用
一、什么是過濾器
過濾器是對(duì)數(shù)據(jù)進(jìn)行過濾,預(yù)處理過程,當(dāng)我們訪問網(wǎng)站時(shí),有時(shí)候會(huì)發(fā)布一些敏感信息,發(fā)完以后有的會(huì)用*替代,還有就是登陸權(quán)限控制等,一個(gè)資源,沒有經(jīng)過授權(quán),肯定是不能讓用戶隨便訪問的,這個(gè)時(shí)候,也可以用到過濾器。過濾器的功能還有很多,例如實(shí)現(xiàn)URL
級(jí)別的權(quán)限控制、壓縮響應(yīng)信息、編碼格式等等。
過濾器依賴servlet
容器。在實(shí)現(xiàn)上基于函數(shù)回調(diào),可以對(duì)幾乎所有請(qǐng)求進(jìn)行過濾。
二、過濾器的使用
下面簡單的說說Spring Boot
里面如何增加過濾器。
過濾器使用實(shí)例:具體示例代碼如下:
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 { // 打印請(qǐng)求信息 HttpServletRequest request = (HttpServletRequest) servletRequest; LOG.info("------------- LogFilter 開始 -------------"); LOG.info("請(qǐng)求地址: {} {}", request.getRequestURL().toString(), request.getMethod()); LOG.info("遠(yuǎn)程地址: {}", request.getRemoteAddr()); long startTime = System.currentTimeMillis(); filterChain.doFilter(servletRequest, servletResponse); LOG.info("------------- LogFilter 結(jié)束 耗時(shí):{} ms -------------", System.currentTimeMillis() - startTime); } /** * 在銷毀Filter時(shí)自動(dòng)調(diào)用。 */ @Override public void destroy() { System.out.println("我是過濾器的被銷毀時(shí)調(diào)用的方法!,活不下去了................" ); } }
過濾器里面的三個(gè)方法:
init
:filter
對(duì)象只會(huì)創(chuàng)建一次,init
方法也只會(huì)執(zhí)行一次。doFilter
: 主要的業(yè)務(wù)代碼編寫方法,可以多次重復(fù)調(diào)用destroy
: 在銷毀Filter
時(shí)自動(dòng)調(diào)用(程序關(guān)閉或者主動(dòng)銷毀Filter
)。
三、測試結(jié)果
重新啟動(dòng)服務(wù),刷新頁面,查看結(jié)果如下圖:
到此這篇關(guān)于SpringBoot過濾器的使用的文章就介紹到這了,更多相關(guān)SpringBoot過濾器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
面試官:java ThreadLocal真的會(huì)造成內(nèi)存泄露嗎
ThreadLocal,java面試過程中的“釘子戶”,在網(wǎng)上也充斥著各種有關(guān)ThreadLocal內(nèi)存泄露的問題,本文換個(gè)角度,先思考ThreadLocal體系中的ThreadLocalMap為什么要設(shè)計(jì)成弱引用2021-08-08利用Maven實(shí)現(xiàn)將代碼打包成第三方公共jar包
在項(xiàng)目開發(fā)過程中,我們經(jīng)常需要將一些公共方法提取出來,然后單獨(dú)封裝成一個(gè)第三方公共jar包,采用普通的方式打包后的jar,依賴的工程執(zhí)行編譯時(shí),卻提示找不到對(duì)應(yīng)的依賴包,那么如何將工程打包為可執(zhí)行jar包呢?下面向大家分享三種方法2022-10-10基于Java方式實(shí)現(xiàn)數(shù)據(jù)同步
這篇文章主要為大家詳細(xì)介紹了基于Java方式實(shí)現(xiàn)數(shù)據(jù)同步,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08詳解Java程序啟動(dòng)時(shí)-D指定參數(shù)是什么
java服務(wù)啟動(dòng)的時(shí)候,都會(huì)指定一些參數(shù),下面這篇文章主要給大家介紹了關(guān)于Java程序啟動(dòng)時(shí)-D指定參數(shù)是什么的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12java中double類型運(yùn)算結(jié)果異常的解決方法
下面小編就為大家?guī)硪黄猨ava中double類型運(yùn)算結(jié)果異常的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12hadoop運(yùn)行java程序(jar包)并運(yùn)行時(shí)動(dòng)態(tài)指定參數(shù)
這篇文章主要介紹了hadoop如何運(yùn)行java程序(jar包)并運(yùn)行時(shí)動(dòng)態(tài)指定參數(shù),使用hadoop 運(yùn)行 java jar包,Main函數(shù)一定要加上全限定類名,需要的朋友可以參考下2021-06-06