簡單了解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..."); } }
@RestController public 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..."); } }
@Configuration public 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í)有所幫助,也希望大家多多支持腳本之家。
- 詳談springboot過濾器和攔截器的實現(xiàn)及區(qū)別
- SpringBoot定義過濾器、監(jiān)聽器、攔截器的方法
- springboot基于過濾器實現(xiàn)接口請求耗時統(tǒng)計操作
- springboot @WebFilter注解過濾器的實現(xiàn)
- Springboot過濾器禁止ip頻繁訪問功能實現(xiàn)
- SpringBoot實現(xiàn)過濾器、攔截器與切片的實現(xiàn)和區(qū)別
- 解決springboot中配置過濾器以及可能出現(xiàn)的問題
- 手把手教你SpringBoot過濾器N種注冊方式
- springboot 增加過濾器方法操作示例
- springboot自定義過濾器的方法
相關(guān)文章
Spring中@Transactional(rollbackFor=Exception.class)屬性用法介紹
這篇文章介紹了Spring中@Transactional(rollbackFor=Exception.class)屬性的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12WebSocket整合SSM(Spring,Struts2,Maven)的實現(xiàn)示例
這篇文章主要介紹了WebSocket整合SSM(Spring,Struts2,Maven)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01WebSocket 中使用 @Autowired 注入對應(yīng)為null的解決方案
SpringBoot集成WebSocket時,會遇到service對象為null的情況,原因是Spring默認為單例模式與WebSocket的多對象模式相沖突,當客戶端與服務(wù)器端建立連接時,會創(chuàng)建新的WebSocket對象,本文給大家介紹WebSocket 中使用 @Autowired 注入對應(yīng)為null的問題,感興趣的朋友一起看看吧2024-10-10java使用短信設(shè)備發(fā)送sms短信的示例(java發(fā)送短信)
這篇文章主要介紹了java使用短信設(shè)備發(fā)送sms短信的示例(java發(fā)送短信),需要的朋友可以參考下2014-04-04Java的Spring框架中DAO數(shù)據(jù)訪問對象的使用示例
這篇文章主要介紹了Java的Spring框架中DAO數(shù)據(jù)訪問對象的使用示例,分為在Spring中DOA與JDBC以及與Hibernate的配合使用兩種情況來進行演示,需要的朋友可以參考下2016-03-03減少代碼開發(fā)工作的Java庫lombok及注解的使用學(xué)習(xí)
不久前發(fā)現(xiàn)有一個java第三方庫可以在一定程度上幫助我們從體力勞動中解救出來,它就是lombok。它提供了一些簡單的注解,并以此來消除java中臃腫的模版代碼。本文對于一些常用到的注解做了一個簡要的記錄,希望有更多的人enjoy it2022-07-07