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

网友投稿 204 2022-12-08


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

过滤器简介

过滤器依赖Servlet容器,属于Servlet规范的一部分。http://

在实现上基于Servlet容器的函数WksYCFMy回调,可以对几乎所有请求进行过滤。

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...");

}

}

@RestController

public class IndexContoller {

@RequestMapping("/query")

public void query() throws Exception {

System.out.println("IndexContoller query...");

}

}

@SpringBootApplication

@ServletComponentScan // 扫描 Servlet 相关的组件

public class Shttp://pringBootFilterApplication {

public static void main(String[] args) {

SpringApplication.run(SpringBootFilterApplication.class, args);

}

}

过滤器配置方式二

public class CostTimeFilter implements Filter {

private String url;

/**

* filter对象只会创建一次,init方法也只会执行一次。

*/

@Override

public void http://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...");

}

}

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

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java如何设置系统参数和运行参数
下一篇:SpringBoot拦截器原理解析及使用方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~