zoukankan      html  css  js  c++  java
  • Springboot添加filter方法

    在springboot添加filter有两种方式:

      (1)、通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加cookie可能会存在写不进前端情况)

      (2)、通过注解@WebFilter的方式

    一、通过创建FilterRegistrationBean的方式创建多个filter以及设置执行顺序:

       1、创建两个实现Filter接口的类TestFilter1 、TestFilter2

    package com.aoxun.core.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class TestFilter1 implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {}
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            chain.doFilter(request, response);
        }
    
        @Override
        public void destroy() {}
    
    }
    package com.aoxun.core.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class TestFilter2 implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {}
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            chain.doFilter(request, response);
        }
    
        @Override
        public void destroy() {}
    
    }

    2、创建配置类

          有多个filter就创建多个FilterRegistrationBean ,若需注明filter的执行顺序,可通过registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE - 1)配置,值越大,执行顺序越靠后

    package com.aoxun.config.web;
    
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import com.aoxun.core.filter.TestFilter1;
    import com.aoxun.core.filter.TestFilter2;
    
    /**
     * filter配置
     * @author zcj
     *
     */
    @Configuration
    public class FilterConfig2 {
    
        @Bean
        public FilterRegistrationBean companyUrlFilterRegister() {
            FilterRegistrationBean registration = new FilterRegistrationBean();
            //注入过滤器
            registration.setFilter(new TestFilter1());
            //拦截规则
            registration.addUrlPatterns("/*");
            //过滤器名称
            registration.setName("testFilter1");
            //过滤器顺序
            registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE);
            return registration;
        }
        
        @Bean
        public FilterRegistrationBean outLinkSecurityFilterRegister() {
            FilterRegistrationBean registration = new FilterRegistrationBean();
            //注入过滤器
            registration.setFilter(new TestFilter2());
            //拦截规则
            registration.addUrlPatterns("/*");
            //过滤器名称
            registration.setName("testFilter2");
            //过滤器顺序
            registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE - 1);
            return registration;
        }
        
    }

    二、通过注解@WebFilter的方式

       1、在启动类上增加@ServletComponentScan注解,自动扫描带有过滤器注解的包

       2、在类上使用@WebFilter和@Order组合实现

    package com.aoxun.core.filter;
    
    import java.io.IOException;
    
    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.annotation.WebFilter;
    
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.core.annotation.Order;
    
    @WebFilter(filterName="testFilter1",urlPatterns= {"/*"})
    @Order(FilterRegistrationBean.LOWEST_PRECEDENCE)
    public class TestFilter1 implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
    
            chain.doFilter(request, response);
    
        }
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
    
        }
    
    }

    (转自:https://www.cnblogs.com/begin2016/p/8947887.html

  • 相关阅读:
    Android 架构 1.架构
    Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式
    RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第三篇【实例】
    RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第二篇【原理】
    RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】
    选择日期控件
    robot Framework控制浏览器
    botot framework选择下拉框
    soapui测试接口使用步骤
    使用python实现appium的屏幕滑动
  • 原文地址:https://www.cnblogs.com/myf008/p/10783906.html
Copyright © 2011-2022 走看看