SpringBoot之過濾器配置和應用
阿新 • • 發佈:2018-11-10
一、建立過濾器
單獨建立一個filter的類繼承Filter介面,重寫接口裡面的init()、doFilter()、destory()方法即可。
public class LoginFilter implements Filter { private static Logger logger = LoggerFactory.getLogger(LoginFilter.class); private FilterConfig config; @Override public void init(FilterConfig filterConfig) { this.config =filterConfig; logger.info("--------------------init----------------------"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { logger.info("--------------------doFilter----------------------"); ServletContext context = this.config.getServletContext(); long before = System.currentTimeMillis(); context.log("開始過濾..."); HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; context.log("Filter已經攔截使用者請求地址:"+httpServletRequest.getServletPath()); filterChain.doFilter(servletRequest, servletResponse); //---------下面程式碼用於對伺服器響應執行後處理--------- long after = System.currentTimeMillis(); //記錄日誌 context.log("過濾結束"); //再次記錄日誌 context.log("請求被定位到" + httpServletRequest.getRequestURI() + "所花的時間為: " + (after - before)); } @Override public void destroy() { this.config = null; logger.info("--------------------destroy----------------------"); } }
二、配置過濾器
配置過濾器有兩種方法:1、通過在上面建立的類上添加註解的方式進行配置;2、通過在springboot的啟動類中通過@bean進行註解配置。我主要使用的是第一種。第一種在配置完後需要在啟動類新增@ServletComponentScan註解使springboot幫助我們找到配置好的過濾器
@Order(1) //過濾器優先順序
@WebFilter(urlPatterns = "/*",filterName = "LoginFilter")
public class LoginFilter implements Filter {
}
@SpringBootApplication @ServletComponentScan //註解讓SpringBoot幫助我們掃到Filter public class PkApplication { public static void main(String[] args) { SpringApplication.run(PkApplication.class, args); } }
三、結束語
現在執行springboot就可通過日誌列印觀察到過濾器的生命週期,需要通過過濾器完成相應需求的小夥伴們,將方法寫到過濾器的doFilter()方法中即可。