SpringBoot 2 快速整合 Filter过程解析
程序员文章站
2022-05-04 19:18:07
概述
springboot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 filter 。但是我们可以通过 javaconfig(@co...
概述
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。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。