Spring Boot配置过滤器的2种方式示例

发布时间:2020-10-01 15:49:06 作者:java_lover
来源:脚本之家 阅读:179

前言

过滤器(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 Cloud Gateway - 扩展
  2. 第二代微服务网关组件 - Spring Cloud Gateway

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot 配置 过滤器

上一篇:Python更新所有已安装包的操作

下一篇:pandas 数据结构之Series的使用方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》