首页 > 其他 > 详细

过滤器

时间:2019-12-19 16:58:52      阅读:96      评论:0      收藏:0      [点我收藏+]

三种添加方式

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

3 通过 @WebFilter 添加过滤器,可以配置过滤url 、配置优先级

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

过滤器

原文:https://www.cnblogs.com/tekken-wang/p/12068686.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!