springboot 使用 servlet 过滤器
所属分类 springboot
浏览量 1212
import java.io.IOException;
import java.time.LocalDateTime;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class TimeLogFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("TimeLogFilter init,"+LocalDateTime.now());
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
long start = System.currentTimeMillis();
filterChain.doFilter(servletRequest,servletResponse);
long end = System.currentTimeMillis();
long time = end - start;
String url = ((HttpServletRequest)servletRequest).getServletPath();
System.out.println("TimeLogFilter."+time+","+url);
}
@Override
public void destroy() {
}
}
两种注册方式
FilterRegistrationBean
ServletComponentScan 注解
TimeLogFilter 使用 FilterRegistrationBean 注册
@Bean
public FilterRegistrationBean registFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new TimeLogFilter());
registration.addUrlPatterns("/*");
registration.setName("TimeLogFilter");
registration.setOrder(1);
return registration;
}
TimeLogFilter2 使用 ServletComponentScan 注解注册
@WebFilter(urlPatterns = "/*", filterName = "logFilter2")
public class TimeLogFilter2 implements Filter {
TimeLogFilter2 没有设置顺序
@WebFilter 注解并没有指定执行顺序的属性
Filter 顺序 建议 使用 FilterRegistrationBean order 来控制
order小的先执行
例子代码
https://gitee.com/dyyx/springboothello/tree/master/src/main/java/demo/filter
上一篇
下一篇
ORC文件格式
flink基础
装逼词汇大全
springboot 使用 拦截器
问题排查命令和工具及实战案例
maven-shade-plugin 使用指南