如何使用过滤器Filter
如果对整个工程进行一些参数设置,功能扩展,那么可以采用定义过滤器的方式,比如
字符集过滤器 系统性能监控的过滤器 避免sql注入的过滤器
开发步骤:
需求,统计请求的花费时间
1.定义一个过滤器
/**
* 定义过滤器一定要实现Filter接口,细一点,这是servlet的规范
* 功能:记录请求花费时间,
* @author Mary
*
*/
public class LogCostFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
long start=System.currentTimeMillis();//开始时间
chain.doFilter(request, response);//请求该干嘛干嘛去
System.out.println("cost Time:"+(System.currentTimeMillis()-start));//请求调用结束之后输出花费时间
}
}
2.注册过滤器,还是使用注解@Configuration
以前的web工程,Filter定义好了之后在web.xml中注册,使用springboot之后,需要使用FilterRegistrationBean来完成配置
@Configuration
public class FilterConfig {
//进行Filter配置的配置类不需要实现任何接口,不需要继承任何类
@Bean
public FilterRegistrationBean<LogCostFilter> regisFilter()
{
FilterRegistrationBean<LogCostFilter> registrationBean=new FilterRegistrationBean<>();
registrationBean.setFilter(new LogCostFilter());//注册一个filter
registrationBean.addUrlPatterns("/*");//设置过滤器对哪些请求过滤
registrationBean.setName("LogCostFilter");//设置该过滤器的名字
registrationBean.setOrder(1);//这个记录花费时间的过滤器的调用顺序
return registrationBean;
}