玩转 SpringBoot 2 快速整合 Filter 注解版

前言

本文主要介绍如何在SpringBoot 2 中使用 Filter 的快速搭建教程,阅读前需要你必须了解 Filter 的基础使用以及如何搭建 SpringBoot 项目。

快速演示操作

第一步: 编写 Filter 类并且在 Filter 类上声明 @WebFilter注解,并通过 @WebFilter 注解 urlPatterns 属性来者是需要拦截访问路径。具体代码如下:

@WebFilter(urlPatterns="/*")
public class URLFilter implements Filter{
	
	private Logger log = LoggerFactory.getLogger(AnnotationFilter.class);

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest httpServeltRequest = (HttpServletRequest)request;
		String requestURI = httpServeltRequest.getRequestURI();
		log.info("访问地址:"+requestURI);
		chain.doFilter(request, response);
	}

}

第二步:通过 JavaConfig 方式将编写的 URLFilter 类注入到 Spring 的上下文中。

将我们自定义 URLFilter 传入到 FilterRegistrationBean的构造中,然后创建 FilterRegistrationBean Bean实例,具体代码如下:

@Configuration
public class WebApplicationConfig {
	@Bean
	public FilterRegistrationBean<AnnotationFilter>  userServlet(){
		return new FilterRegistrationBean<AnnotationFilter>(new AnnotationFilter());
	}
}

或者在启动类上声明 @ServletComponentScan 注解,具体代码如下:

@SpringBootApplication
@ServletComponentScan
public class SpringbootExamplesApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootExamplesApplication.class, args);
	}
}

JavaConfig 方式 或者声明@ServletComponentScan 方式选择一种即可。

src/main/resource static 目录下hello.html 代码如下:


<html>
<head>
<meta charset="UTF-8">
<title>Insert title heretitle>
head>
<body>
Hello spring boot!
body>
html>

测试

通过游览器访问 http://localhost:8080/sbe/hello.html 如下图所示:
玩转 SpringBoot 2 快速整合 Filter 注解版_第1张图片
后台日志输入信息如下:

2019-10-04 01:25:45.152  INFO 17736 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-10-04 01:25:45.161  INFO 17736 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 9 ms
2019-10-04 01:25:45.192  INFO 17736 --- [nio-8080-exec-1] cn.lijunkui.filter.URLFilter             : 访问地址:/sbe/hello.html

小结

SpringBoot 中整合 Filter 步骤如下:

  1. 需要在 Filter 上声明 @WebFilter
  2. 在启动类上声明@ServletComponentScan注解或者将
    Filter 通过 FilterRegistrationBean 进行包装然后通过 JavaConfig
    方式将其注入到Spring上下文中。

代码示例

我本地环境如下:

SpringBoot Version: 2.1.0.RELEASE
Apache Maven Version: 3.6.0
Java Version: 1.8.0_144
IDEA:Spring Tools Suite (STS)

整合过程如出现问题可以在我的GitHub 仓库 springbootexamples 中模块名为 spring-boot-2.x-annotation-filter 项目中进行对比查看

GitHub:https://github.com/zhuoqianmingyue/springbootexamples

参考文献

Springboot 系列(六)web 开发之拦截器和三大组件 By 雪漫士兵

玩转 SpringBoot 2 快速整合 Filter 注解版_第2张图片

你可能感兴趣的:(【SpringBoot】)