簡單了解SpringBoot過濾器及使用方式
過濾器簡介
過濾器依賴Servlet容器,屬于Servlet規(guī)范的一部分。 在實現(xiàn)上基于Servlet容器的函數(shù)回調(diào),可以對幾乎所有請求進行過濾。 Filter的生命周期由Servlet容器管理。過濾器執(zhí)行流程

過濾器配置使用方式一
@Order(1) // 指定過濾器的執(zhí)行順序@WebFilter(filterName = 'CostTimeFilter', urlPatterns = '/*' , initParams = { @WebInitParam(name = 'URL', value = 'http://localhost:8080')})public class CostTimeFilter implements Filter { private String url; /** * filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次。 */ @Override public void init(FilterConfig filterConfig) throws ServletException { this.url = filterConfig.getInitParameter('URL'); System.out.println('Filter init...'); } /** * 主要的業(yè)務代碼編寫方法 */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { long start = System.currentTimeMillis(); System.out.println(start + ' Filter doFilter before...'); filterChain.doFilter(servletRequest, servletResponse); long end = System.currentTimeMillis(); System.out.println(end + 'Filter doFilter after...'); } /** * 在銷毀Filter時自動調(diào)用。 */ @Override public void destroy() { System.out.println('Filter destroy...'); }}
@RestControllerpublic class IndexContoller { @RequestMapping('/query') public void query() throws Exception { System.out.println('IndexContoller query...'); }}
@SpringBootApplication@ServletComponentScan // 掃描 Servlet 相關的組件public class SpringBootFilterApplication { public static void main(String[] args) { SpringApplication.run(SpringBootFilterApplication.class, args); }}
過濾器配置方式二
public class CostTimeFilter implements Filter { private String url; /** * filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次。 */ @Override public void init(FilterConfig filterConfig) throws ServletException { this.url = filterConfig.getInitParameter('URL'); System.out.println('Filter init...'); } /** * 主要的業(yè)務代碼編寫方法 */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { long start = System.currentTimeMillis(); System.out.println(start + ' Filter doFilter before...'); filterChain.doFilter(servletRequest, servletResponse); long end = System.currentTimeMillis(); System.out.println(end + 'Filter doFilter after...'); } /** * 在銷毀Filter時自動調(diào)用。 */ @Override public void destroy() { System.out.println('Filter destroy...'); }}
@Configurationpublic class FilterConfig { @Bean public FilterRegistrationBean registFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new CostTimeFilter()); registration.addUrlPatterns('/*'); registration.setName('CostTimeFilter'); registration.setOrder(1); return registration; }}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關文章:
1. 解決Django響應JsonResponse返回json格式數(shù)據(jù)報錯問題2. python怎么運行代碼3. Java MultipartFile實現(xiàn)上傳文件/上傳圖片4. Java基礎之詳解HashSet的使用方法5. Java基礎之容器Vector詳解6. python 貪心算法的實現(xiàn)7. Python使用paramiko連接遠程服務器執(zhí)行Shell命令的實現(xiàn)8. 通過vue如何設置header9. IntelliJ IDEA創(chuàng)建普通的Java 項目及創(chuàng)建 Java 文件并運行的教程10. Python 實現(xiàn)將某一列設置為str類型

網(wǎng)公網(wǎng)安備