Spring Boot配置过滤器的两种方式
过滤器(filter)是servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验、权限控制、敏感词过滤等,下面介绍下spring boot配置过滤器的两种方式。
本文目录
一、@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相关资料,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo/kafka、hadoop、hbase、flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:
上一篇: 中渎穴的正确按摩手法,位置在哪儿
下一篇: 红毛丹产妇能吃吗?红毛丹有哪些功效?