您的位置:首页技术文章
文章详情页

简单了解SpringBoot过滤器及使用方式

【字号: 日期:2023-05-20 15:09:30浏览:6作者:猪猪

过滤器简介

过滤器依赖Servlet容器,属于Servlet规范的一部分。 在实现上基于Servlet容器的函数回调,可以对几乎所有请求进行过滤。 Filter的生命周期由Servlet容器管理。

过滤器执行流程

简单了解SpringBoot过滤器及使用方式

过滤器配置使用方式一

@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; }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Spring
相关文章: