三种添加方式
1 实现 Filter 添加 @Component 注解, 此方式过滤所有 url, 可以在代码中判断过滤那些
- @Component
- @Order(1) // 优先级, 最顶级
- public class TimeFilter implements Filter {
- @Override
- public void destroy() {
- System.out.println("time filter destroy");
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- System.out.println("time filter start");
- long start = new Date().getTime();
- String url = request.getRequestURL().toString();
- if (url.contains("XXX")) {
- // 过滤逻辑
- ......
- } else {
- // 不过滤
- filterChain.doFilter(servletRequest, servletResponse);
- }
- chain.doFilter(request, response);
- System.out.println("time filter 耗时:"+ (new Date().getTime() - start));
- System.out.println("time filter finish");
- }
- @Override
- public void init(FilterConfig arg0) throws ServletException {
- System.out.println("time filter init");
- }
- }
2 @Configuration 配置类中通过 FilterRegistrationBean 注册 , 可以配置过滤 url , 配置优先级
- @Configuration
- public class webConfig {
- @Bean
- public FilterRegistrationBean timeFilter() {
- FilterRegistrationBean registrationBean = new FilterRegistrationBean();
- TimeFilter timeFilter = new TimeFilter();
- registrationBean.setFilter(timeFilter);
- List<String> urls = new ArrayList<>();
- urls.add("/*"); // 可以配置过滤 url
- registrationBean.setUrlPatterns(urls);
- registrationBean.setOrder(1);// 优先级, 最顶级
- return registrationBean;
- }
- }
- @WebFilter(urlPatterns = "/*") // 可以配置过滤 url
- @Order(1) // 优先级, 最顶级
- public class TimeFilter implements Filter {
- @Override
- public void destroy() {
- System.out.println("time filter destroy");
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- System.out.println("time filter start");
- long start = new Date().getTime();
- chain.doFilter(request, response);
- System.out.println("time filter 耗时:"+ (new Date().getTime() - start));
- System.out.println("time filter finish");
- }
- @Override
- public void init(FilterConfig arg0) throws ServletException {
- System.out.println("time filter init");
- }
- }
来源: http://www.bubuko.com/infodetail-3339573.html