簡單了解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è)務(wù)代碼編寫方法 */ @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 相關(guān)的組件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è)務(wù)代碼編寫方法 */ @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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Vue 實現(xiàn)對quill-editor組件中的工具欄添加title2. 使用Python webdriver圖書館搶座自動預(yù)約的正確方法3. 在線php代碼縮進、代碼美化工具:PHP Formatter4. ASP.NET MVC使用jQuery ui的progressbar實現(xiàn)進度條5. Python 合并拼接字符串的方法6. Linux刪除系統(tǒng)自帶版本Python過程詳解7. Python3 json模塊之編碼解碼方法講解8. Python字符串到字節(jié)的轉(zhuǎn)換。雙反斜杠問題9. Android 簡單的實現(xiàn)滑塊拼圖驗證碼功能10. ASP基礎(chǔ)知識VBScript基本元素講解

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