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

网友投稿 284 2022-12-28


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

前言

过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验、权限控制、敏感词过滤等,下面介绍下SprihytMXiLing 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

puhttp://blic 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/sprhttp://ingboot-study

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信在线接口测试工具(微信在线检测)
下一篇:Spring Security基于JWT实现SSO单点登录详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~