欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring Boot配置过滤器的两种方式

程序员文章站 2023-11-18 19:43:04
过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验、权限控制、敏感词过滤等,下面介绍下Spring Boot配置过滤器的两种方式。 本文目录 一、@WebFilter注解方式二、@Bean注解方式三、查看运行效果 ......

过滤器(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

推荐阅读

1.spring boot统一异常处理实战
2.从技术的角度分析下为什么不要在网上发“原图”
3.利用spring boot+zxing,生成二维码还能这么简单
4.spring boot之profile--快速搞定多环境使用与切换
5.利用spring boot+wxjava实现网站集成微信登录功能


限时领取免费java相关资料,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo/kafka、hadoop、hbase、flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:

Spring Boot配置过滤器的两种方式java碎碎念公众号