簡單了解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. ASP.NET MVC通過勾選checkbox更改select的內容2. IntelliJ IDEA設置默認瀏覽器的方法3. idea設置提示不區分大小寫的方法4. HTTP協議常用的請求頭和響應頭響應詳解說明(學習)5. phpstudy apache開啟ssi使用詳解6. ASP中實現字符部位類似.NET里String對象的PadLeft和PadRight函數7. .NET SkiaSharp 生成二維碼驗證碼及指定區域截取方法實現8. 存儲于xml中需要的HTML轉義代碼9. CentOS郵件服務器搭建系列—— POP / IMAP 服務器的構建( Dovecot )10. 使用IntelliJ IDEA 配置安卓(Android)開發環境的教程詳解(新手必看)
