前言

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

快速演示操作

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

@WebFilter(urlPatterns="/*")
public class URLFilter implements Filter{private Logger log = LoggerFactory.getLogger(AnnotationFilter.class);@Overridepublic 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 {@Beanpublic 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 代码如下:

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

测试

通过游览器访问 http://localhost:8080/sbe/hello.html 如下图所示:

后台日志输入信息如下:

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 注解版相关推荐

  1. 玩转 SpringBoot 2 快速整合 Filter

    概述 SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter .但是我们可以通过 javaConfig(@Configuration +@Bea ...

  2. 玩转 SpringBoot 2 快速整合 | RESTful Api 篇

    概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...

  3. 玩转 SpringBoot 2 快速整合拦截器

    概述 首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器(HandlerInterceptor).使用SpringMVC 拦截器需要做如下操作: 创建拦截器类需要实现 HandlerInt ...

  4. 玩转 SpringBoot 2 快速整合 | JSP 篇

    前言 JavaServer Pages(JSP)技术使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面.作为Java技术系列的一部分,JSP技术可以快速开发独立 ...

  5. 玩转 SpringBoot 2 快速整合 Listener

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

  6. 玩转 SpringBoot 2 快速整合 Servlet

    前言 本文主要介绍如何在SpringBoot 2 中使用 Servlet 的快速搭建教程,阅读前需要你必须了解 Servlet 的基础使用以及如何搭建 SpringBoot 项目. 快速演示操作 第一 ...

  7. 玩转 SpringBoot 2 快速整合 | 丝袜哥(Swagger)

    概述 首先让我引用 Swagger 官方的介绍: Design is the foundation of your API development. Swagger makes API design ...

  8. 玩转 SpringBoot 2 快速整合 | Thymeleaf 篇

    前言 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用 ...

  9. 玩转 SpringBoot 2 快速整合 | FreeMarker篇

    FreeMarker 介绍 Apache FreeMarker™是一个模板引擎:一个Java库,用于根据模板和更改数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等).模板是用FreeMar ...

最新文章

  1. 2018中国自动驾驶市场专题分析
  2. boost::fruchterman_reingold_force_directed_layout用法的测试程序
  3. CSS各种选择符的优先级
  4. 计算机与材料化学应用背景介绍,计算机在材料工程中的应用.ppt
  5. Cell | 大规模多组织转录组学研究揭示长非编码RNA与人类复杂疾病的联系
  6. 机电传动控制大作业第一阶段
  7. 在家或者公司如何登录服务器
  8. 常用数字音频功放芯片-音频放大器
  9. 安卓设备投影到电脑PC端的简单实现
  10. 克拉默法则的理解记忆方法
  11. 高效C++ Effective C++
  12. windows下根据端口号查杀进程脚本(BAT脚本)
  13. Python爬虫《自动化学报》数据爬取与数据分析
  14. Java入坑指南,学Java需要具备哪些前提条件?
  15. 计算机考研数学一用哪些书,2019计算机考研数学:常见三类参考书的使用方法...
  16. 如何使用AirPods Pro 更换取下和安装耳塞
  17. 如何批量修改多个文件的后缀名!
  18. 网页批量更新快照软件-百度快照更新优化
  19. WinCE 系统界面修改偏方 一
  20. 微信小程序之排行榜功能实现

热门文章

  1. cuda cudnn tensorflow对应_Ubuntu18.04下安装Tensorflow+cuda+cudnn+pytorch
  2. OpenGL学习(一)OpenGL基本介绍
  3. (四)训练用于口罩检测的YOLOv5模型
  4. JDK/Java 14 可能带来什么新特性?
  5. css 瀑布流布局_CSS-瀑布流布局
  6. azw3转换为pdf_干货:如何Java 将 Word 文档转换为 PDF
  7. js 滚动条自动滚动到最底部
  8. 以下不属于时序逻辑电路的有_静态时序分析圣经翻译计划——附录B:SDF
  9. mybatis-generator配置流程(详细) 2021-05-15
  10. win8系统如何开服务器,Win8.1怎么打开IIS服务器?Win8.1专业版64位系统中打开IIS服务器的方法...