zoukankan      html  css  js  c++  java
  • springboot @WebFilter过滤器的使用

    过滤器的用法就不多说了

    新建Filter的继承类:MemberFilter(放置包需要注意)

    @WebFilter(urlPatterns = "/*")
    @Order(1)
    public class MemberFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.err.println("自定义过滤器MemberFilter->doFilter");
        }
    
        @Override
        public void destroy() {
    
        }
    }

    配合@order使用,生命排序。

    过滤器不在启动类扫描范围时,需要注意的是在启动类需要添加@ServletComponentScan扫描,其中包名自定义

    @ServletComponentScan(basePackages = {"com.example.controller.filter"})

    使用bean的情况下,jar打包是可以直接@Autowired使用的,转换war打包方式部署,获取的bean为null,这时候只能手动添加了

    新建@Configuration注解类:FilterRegistrationConfig

    @Configuration
    public class FilterRegistrationConfig {
    
        @Bean
        public MemberFilter memberFilter() {
            return new MemberFilter();
        }
    
        @Bean
        public FilterRegistrationBean filterProxy() {
            FilterRegistrationBean registrationBean = new FilterRegistrationBean();
            DelegatingFilterProxy httpBasicFilter = new DelegatingFilterProxy();
            registrationBean.setFilter(httpBasicFilter);
            Map<String, String> m = new HashMap<String, String>();
            m.put("targetBeanName", "memberFilter");
            m.put("targetFilterLifecycle", "true");
            registrationBean.setInitParameters(m);
            List<String> urlPatterns = new ArrayList<String>();
            urlPatterns.add("/*");
            registrationBean.setUrlPatterns(urlPatterns);
            return registrationBean;
        }
    }
    

     这时候还需要注意假若使用了shiro,况且上述注册的过滤器有使用到的情况下,shiroFiler的过滤必须定义在前(解决shiro报错找不到原因)

        @Bean
        public FilterRegistrationBean delegatingFilterProxy() {
            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
            DelegatingFilterProxy proxy = new DelegatingFilterProxy();
            proxy.setTargetFilterLifecycle(true);
            proxy.setTargetBeanName("shiroFilter");
            filterRegistrationBean.setFilter(proxy);
            return filterRegistrationBean;
        }
    

      

  • 相关阅读:
    基于redis的分布式锁实现方案
    nginx 配置文件详解
    Linux 下安装Nginx
    Nginx简介
    Spring Boot 整合 Spring Security 示例实现前后分离权限注解 + JWT 登录认证
    idea2020.1版本下载安装与激活
    Cloud Alibaba --Nacos
    spring Cloud Alibaba 简介
    Eclipse中SVN更改连接用户
    Win7(64bit)搭建SVN
  • 原文地址:https://www.cnblogs.com/skyLogin/p/9203540.html
Copyright © 2011-2022 走看看