zoukankan      html  css  js  c++  java
  • spring boot Filter过滤器的简单使用

    springboot使用Filter过滤器有两种方式:

    一种是实现Filter接口然后通过@Component注解向项目加入过滤器

    另一种是通过配置类来配置过滤器

    @Component
    public class DemoFilter implements Filter {
        /**
         * 初始化
         * @param filterConfig
         * @throws ServletException
         */
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("filter init");
        }
    
        /**
         * 处理逻辑
         *
         * 过滤器只能拿到请求和响应  至于是请求哪个控制器,哪个方法,filter是不知道的
         *
         * 如果需要知道请求的是哪个控制器和哪个方法的时候就需要用到拦截器了
         *
         * @param servletRequest
         * @param servletResponse
         * @param filterChain
         * @throws IOException
         * @throws ServletException
         */
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("filter start");
           
            filterChain.doFilter(servletRequest,servletResponse);
            
            System.out.println("filter finish");
        }
    
        /**
         * 销毁方法
         */
        @Override
        public void destroy() {
            System.out.println("filter destroy");
        }
    }
    

      

    另一种的实现需要把@Component注解去掉然后添加一个配置类WebConfig

    /**
     * 通过配置类设置过滤器
     */
    @Configuration
    public class WebConfig {
    
    
        /**
         * 和直接使用@Component注解进行过滤不一样的是它可以指定过滤的url
         * @return
         */
        @Bean
        public FilterRegistrationBean demoFilter(){
            FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    
            DemoFilter filter = new DemoFilter();
    
            registrationBean.setFilter(filter);
    
            List<String> urls = new ArrayList<>();
    //对所有的url进行过滤 urls.add("/*");
    registrationBean.setUrlPatterns(urls); return registrationBean; } }

      

  • 相关阅读:
    在JS中,一切东东其实都是对象
    Java多维数组
    理解Java主函数中的"String[] args"
    Java中"String.equals()“和"=="的区别
    Java:新建数组
    [BOOKS]BIG DATA and DATA ANALYTICS: The Beginner's Guide to Understanding the Analytical World
    [BOOKS]Big Data: Principles and best practices of scalable realtime data systems
    Update Vim to 8.0 in Ubuntu
    Vim显示/不显示行号
    数组(R语言)
  • 原文地址:https://www.cnblogs.com/xiluonanfeng/p/10855543.html
Copyright © 2011-2022 走看看