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

玩转 SpringBoot 2 快速整合 Filter

程序员文章站 2022-05-20 22:08:57
概述 SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter 。但是我们可以通过 JavaConfig(@Configuration +@Bean)方式进行配置。通过FilterRegistrationBean 将自定义 Filter 添加到 ......

概述

springboot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 filter 。但是我们可以通过 javaconfig(@configuration +@bean)方式进行配置。通过filterregistrationbean 将自定义 filter 添加到 springboot 的过滤链中。

实战操作

实战操作通过定义一个拦截所有访问项目的url的 filter来进行演示的。

首先定义一个统一访问 url 拦截的 filter。代码如下:

public class urlfilter implements filter {
    private logger log =  loggerfactory.getlogger(urlfilter.class);
 
    @override
    public void dofilter(servletrequest request, servletresponse response, filterchain chain)
            throws ioexception, servletexception {
    httpservletrequest httpservletrequest = (httpservletrequest) request;
        string requesturi = httpservletrequest.getrequesturi();
        stringbuffer requesturl = httpservletrequest.getrequesturl();
        log.info("requesturi:" +requesturi+" "+"requesturl:"+requesturl);
        chain.dofilter(httpservletrequest, response);
    }
 
}

通过 javaconfig方式配置 springboot 过滤链类 filterregistrationbean,具体代码如下:

@configuration
public class filterconfig {
    @bean
    public filterregistrationbean filterregistration() {
        filterregistrationbean registration = new filterregistrationbean();
        registration.setfilter(new urlfilter());
        list<string> urllist = new arraylist<string>();
        urllist.add("/*");
        registration.seturlpatterns(urllist);
        registration.setname("urlfilter");
        registration.setorder(1);
        return registration;
    }
}

filterregistrationbean 中方法介绍:

registration.setfilter(filter filter):设置我们自定义filter对象。

registration.seturlpatterns(collection urlpatterns):设置自定义filter需要拦截的url的集合。

registration.setname(string name): 设置自定义filter名称。

registration.setorder(int order):设置自定义filter拦截顺序。

测试

启动 spirngboot 项目并通过游览器访问我们的项目下的 index.html。
玩转 SpringBoot 2 快速整合 Filter
玩转 SpringBoot 2 快速整合 Filter