尋找寫程式碼感覺(八)之SpringBoot過濾器的使用
阿新 • • 發佈:2021-10-27
一、什麼是過濾器?
過濾器是對資料進行過濾,預處理過程,當我們訪問網站時,有時候會發布一些敏感資訊,發完以後有的會用*替代,還有就是登陸許可權控制等,一個資源,沒有經過授權,肯定是不能讓使用者隨便訪問的,這個時候,也可以用到過濾器。過濾器的功能還有很多,例如實現URL級別的許可權控制、壓縮響應資訊、編碼格式等等。
過濾器依賴servlet容器。在實現上基於函式回撥,可以對幾乎所有請求進行過濾。
二、過濾器的使用
下面簡單的說說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("遠端地址: {}", request.getRemoteAddr()); long startTime = System.currentTimeMillis(); filterChain.doFilter(servletRequest, servletResponse); LOG.info("------------- LogFilter 結束 耗時:{} ms -------------", System.currentTimeMillis() - startTime); } /** * 在銷燬Filter時自動呼叫。 */ @Override public void destroy() { System.out.println("我是過濾器的被銷燬時呼叫的方法!,活不下去了................" ); } }
過濾器裡面的三個方法
- init : filter物件只會建立一次,init方法也只會執行一次。
- doFilter : 主要的業務程式碼編寫方法,可以多次重複呼叫
- destroy : 在銷燬Filter時自動呼叫(程式關閉或者主動銷燬Filter)。
三、測試結果
重新啟動服務,重新整理頁面,檢視結果如下圖:
到此,SpringBoot過濾器的使用介紹完,有興趣的同學自行嘗試。
優秀不夠,你是否無可替代
軟體測試交流QQ群:721256703,期待你的加入!!
歡迎關注我的微信公眾號:軟體測試君