簡單了解SpringBoot過濾器及使用方式
過濾器簡介
過濾器依賴Servlet容器,屬于Servlet規范的一部分。 在實現上基于Servlet容器的函數回調,可以對幾乎所有請求進行過濾。 Filter的生命周期由Servlet容器管理。過濾器執行流程
過濾器配置使用方式一
@Order(1) // 指定過濾器的執行順序@WebFilter(filterName = 'CostTimeFilter', urlPatterns = '/*' , initParams = { @WebInitParam(name = 'URL', value = 'http://localhost:8080')})public class CostTimeFilter implements Filter { private String url; /** * filter對象只會創建一次,init方法也只會執行一次。 */ @Override public void init(FilterConfig filterConfig) throws ServletException { this.url = filterConfig.getInitParameter('URL'); System.out.println('Filter init...'); } /** * 主要的業務代碼編寫方法 */ @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時自動調用。 */ @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對象只會創建一次,init方法也只會執行一次。 */ @Override public void init(FilterConfig filterConfig) throws ServletException { this.url = filterConfig.getInitParameter('URL'); System.out.println('Filter init...'); } /** * 主要的業務代碼編寫方法 */ @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時自動調用。 */ @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; }}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. IntelliJ IDEA2020.2.2創建Servlet方法及404問題2. docker /var/lib/docker/aufs/mnt 目錄清理方法3. Python的Tqdm模塊實現進度條配置4. Python 多線程之threading 模塊的使用5. Python中Selenium模塊的使用詳解6. Python基于smtplib模塊發送郵件代碼實例7. CSS代碼檢查工具stylelint的使用方法詳解8. IDEA巧用Postfix Completion讓碼速起飛(小技巧)9. Python如何批量獲取文件夾的大小并保存10. CSS3中Transition屬性詳解以及示例分享
