簡(jiǎn)單了解SpringBoot過濾器及使用方式
過濾器簡(jiǎn)介
過濾器依賴Servlet容器,屬于Servlet規(guī)范的一部分。 在實(shí)現(xiàn)上基于Servlet容器的函數(shù)回調(diào),可以對(duì)幾乎所有請(qǐng)求進(jìn)行過濾。 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對(duì)象只會(huì)創(chuàng)建一次,init方法也只會(huì)執(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時(shí)自動(dòng)調(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對(duì)象只會(huì)創(chuàng)建一次,init方法也只會(huì)執(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時(shí)自動(dòng)調(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; }}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 簡(jiǎn)述JAVA同步、異步、阻塞和非阻塞之間的區(qū)別2. Python TestSuite生成測(cè)試報(bào)告過程解析3. Java JTable 實(shí)現(xiàn)日歷的示例4. python excel和yaml文件的讀取封裝5. 深入了解JAVA 軟引用6. 利用php來自動(dòng)調(diào)用不同服務(wù)器上的flash7. springboot的yml配置文件通過db2的方式整合mysql的教程8. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法9. 解決AJAX返回狀態(tài)200沒有調(diào)用success的問題10. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法
