zoukankan      html  css  js  c++  java
  • Spring Boot配置过滤器的两种方式

     

    过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验、权限控制、敏感词过滤等,下面介绍下Spring Boot配置过滤器的两种方式。

    本文目录

    一、@WebFilter注解方式二、@Bean注解方式三、查看运行效果

    一、@WebFilter注解方式

    使用@WebFilter注解为声明当前类为filter,第一个参数为该filter起一个名字,第二个参数为说明要拦截的请求地址,当前类需要实现Filter接口,里面有三个方法,分别为过滤器初始化、过滤方法和过滤器销毁。

    @Slf4j
    @WebFilter(filterName = "myFilter1", urlPatterns = "/*")
    public class MyFilter1 implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            log.info(filterConfig.getFilterName() + " init");
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
            log.info("myFilter1 begin");
            try {
                log.info("业务方法执行");
                chain.doFilter(request, response);
            } catch (Exception e) {
                log.error("error!", e);
            }
            log.info("myFilter1 end");
        }

        @Override
        public void destroy() {
        }
    }

    启动类添加@ServletComponentScan注解,@ServletComponentScan注解所扫描的包路径必须包含该Filter,代码如下:

    @SpringBootApplication
    @ServletComponentScan(basePackages = "com.example.demo.filter")
    public class DemoApplication {

        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }

    二、@Bean注解方式

    新建MyFilter2.java类,不要加注解@WebFilter,代码如下:

    @Slf4j
    public class MyFilter2 implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            log.info(filterConfig.getFilterName() + " init");
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
            log.info("myFilter2 begin");
            try {
                log.info("业务方法执行");
                chain.doFilter(request, response);
            } catch (Exception e) {
                log.error("error!", e);
            }
            log.info("myFilter2 end");
        }

        @Override
        public void destroy() {
        }
    }

    新建配置类WebConfig.java,配置bean,代码如下:

    @Configuration
    public class WebConfig {

        @Bean
        public FilterRegistrationBean testFilterRegistration() {
            FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter2());
            registration.addUrlPatterns("/test"); //
            registration.setName("myFilter2");
            return registration;
        }
    }

    三、查看运行效果

    项目启动后浏览器访问http://localhost:8080/test,可以看到过滤器已生效,后台打印日志如下:

    [nio-8080-exec-1] com.example.demo.filter.MyFilter1        : myFilter1 begin
    [nio-8080-exec-1] com.example.demo.filter.MyFilter1        : 业务方法执行
    [nio-8080-exec-1] com.example.demo.filter.MyFilter1        : myFilter1 end 

    到此Spring Boot配置过滤器的两种方式已经全部实现,有问题欢迎留言沟通哦!
    完整源码地址: https://github.com/suisui2019/springboot-study

  • 相关阅读:
    [转]Understanding Integration Services Package Configurations
    [转]SSIS: Execute Package via Stored Procedure
    [转]Loading and Running a Local Package Programmatically
    [转]Mapping Stored Procedure Parameters in SSIS OLE DB Source Editor
    [转]Data Flow How-to Topics (SSIS)
    [转]Advanced Oracle SQL Developer Features
    [转]SSIS包的调用方式
    [转]oracle 11g 忘记 默认用户密码
    [转]Insert, Update, and Delete Destination table with SSIS
    [转]JS判断访问设备、客户端操作系统类型
  • 原文地址:https://www.cnblogs.com/zzsuje/p/15397003.html
Copyright © 2011-2022 走看看