spring boot(18)-servlet、filter、listener

Spring Boot 实战(7)springboot 整合三大组件(Servlet、Filter、Listener) 注意:Spring Boot 2.x版本以前有一定的区别,以前是 EmbeddedServletContainerCustomizer,而在新版本中使用 WebServerFactoryCustomizer。由于 SpringBoot 默认是利用 jar 包的方式启动嵌入式的 Servle t容器来启动 SpringBoot 的web应用,没有 web.xml 文件。@Bean //一定要将这个定制器加入到容器中。//定制嵌入式的Servlet容器相关的规则。// 设置拦截uri的路径。 阅读详情

servlet、filter、listener的用法就不讲了,只讲如何在spring boot中配置它们。有两种方式,一种是从servlet3开始提供的注解方式,另一种是spring的注入方式

servlet注解方式

servlet3.0以前,servlet、filter、listener需要在web.xml中配置,从servlet3.0开始,支持通过类注解进行配置。在spring boot中如果要支持这种注解,必须在配置类增加一个@ServletComponentScan注解,来扫描servlet的注解
@ServletComponentScan
@SpringBootApplication

servlet注解配置,urlPatterns就是这个servlet的请求路径,相当于spring mvc的mapping

@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {
filter注解配置,urlPatterns就是这个过滤器要过滤哪些路径
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
listener注解配置,监听器都是全局性的,不需要配置路径
@WebListener
public class MyListener implements ServletContextListener {

spring的注入方式

	//servlet
	@Bean
	public ServletRegistrationBean myServlet() {
		//配置servlet及其请求路径
		return new ServletRegistrationBean(new MyServlet(), "/hello");
	}
	//过滤器
	@Bean
	public FilterRegistrationBean myFilter() {
		FilterRegistrationBean myFilter =new FilterRegistrationBean();
		//配置过滤器
		myFilter.setFilter(new MyFilter());
		//配置过滤路径
		myFilter.addUrlPatterns("/*");
		return myFilter;
	}
	//监听器
	@Bean
	public ServletListenerRegistrationBean<MyListener> myListener() {
		return new ServletListenerRegistrationBean<MyListener>(new MyListener());
	}

id命名冲突

上面的spring注入方法我都是用my*来命名,在第二篇中我讲过,这个方法名就是在spring中注册的bean的id。有一种习惯就是用类名的首字母小写来命名id,如下
	@Bean
	public ServletRegistrationBean servletRegistrationBean() {
如果你的项目中配置了我在11篇讲的druid监控,这个方法名id已经被druid使用了,这个配置也将无法生效。这就是不使用spring boot默认组件可能会引发的一些冲突问题,所以如非必要,建议优先使用spring boot默认的各种组件,稳定性兼容性更高。

servlet注解还是spring注入

servlet注解不会有上面的冲突问题,而且简单易用。更主要的是,servlet是出自java官方的web技术,如tomcat之类的服务器,只知道有servlet,而不知道spring为何物。所有对spring mvc控制层的请求,都是通过一个servlet也就是DispatchServlet进行分发的。请求首先到达servlet,分发以后才会到spring,如果不分发也就没spring什么事了。spring需要依赖servlet才能处理请求,将你所依赖的东西整合到你自己的框架内部,是不是有点本末倒置?所以,使用servlet注解才是原味的servlet


Spring Boot集成SM4国密算法:基于Servlet Filter的统一加解密方案 在Web应用开发中,数据传输安全是核心需求之一,对称加密算法是保障数据机密性的关键技术。SM4作为我国商用密码标准算法,采用分组密码原理,通过多轮非线性变换实现数据加密,其安全性与国际通用的AES算法相当。在技术价值上,SM4能满足金融、政务等对国密算法有合规要求的场景,实现自主可控的数据安全保护。应用场景广泛,尤其适用于HTTP API接口中敏感数据的传输加密。本文聚焦于如何在Spring Boot框架中,通过Servlet Filter这一标准组件,以非侵入方式实现请求与响应的统一SM4加解密,从而将加 阅读详情

相关推荐

Spring Boot内置Tomcat版本修改实战:原理、方法与避坑指南

在Java Web开发中,Servlet容器是承载Web应用运行的核心组件,负责处理HTTP请求、管理会话和提供运行时环境。Spring Boot通过自动配置和Starter机制,默认集成了Tomcat作为嵌入式容器,实现了开箱即用的便捷性。其原理在于依赖管理,由spring-boot-dependencies统一控制版本号。这种设计在提升开发效率的同时,也带来了灵活性挑战,例如当需要修复安全漏洞、适配特定环境或利用新特性时,开发者必须掌握修改内置Tomcat版本的能力。通过覆盖Maven属性或调整Grad

weixin_30843605的博客 501

SpringBoot之Listener

springBoot监听器的主要分为两类: 运行时监听器和上下文监听器都是定义在spring.factories文件中。 1)运行时监听器 org.springframework.boot.SpringApplicationRunListener=\ org.springframework.boot.context.event.EventPublishingRunListener 2)上下文监...

weixin_44601714的博客 2195

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。

father_yingying的博客 1181

【SpringBoot】SpringBoot中使用监听器(Listener)

前言     监听器(Listener)就是监听对象的创建、销毁等状态的变化以及定义一些事件发生后接下来要进行的动作;主要监听的三个域对象为:ServletRequest域、HttpSession域 和ServletContext域     在目前的Servlet API中提供的web事件监听器接口有如下所示的几个: 1.ServletContextListener -- 监听servletContext对象的创建以及销毁 1.1 contextInitialized(ServletConte

qgnczmnmn的博客 8627

【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1107

芯片级IO (Pad) Ring &IP Checklist

芯片级IO Ring,PAD Ring 和IP Checklist检查项目

weixin_37584728的博客 3573

SpringBoot启动之监听器listener分析(一)

继续调试,发现还有个文件:springframework/boot/spring-boot-autoconfigure/2.2.7.RELEASE/spring-boot-autoconfigure-2.2.7.RELEASE.jar!在Springboot程序启动的过程中,就能看到监听器listener的身影,下面来看一下在程序启动过程中,listerner是如何工作的。接下来进入SpringApplication的构造函数中,请注意,该构造函数中也是有一些处理逻辑的,刚开始时就忽略了,幸好后来发现了。

jiangjunpingguo的博客 2037

ICC2 实战秘籍:create_workspace 命令全解析

必选项:工作区名称,这可是创建工作区的 “身份证”,必不可少。技术数据选项匹配:优先考虑用 -technology 直接加载技术文件,这是获取最新、最准确技术数据的首选路径;要是已经有合适的技术库了,那 -use_technology_lib 引用现有技术库也能快速上手。精度设置优先规则:技术文件自动配置排在第一位,能自动适配就别手动操心;要是自动配置不理想,那就显式指定 scale_factor;实在没要求,就用默认配置,但得清楚它的精度限制。

weixin_50820814的博客 1126

【Spring Boot系列】- Spring Boot侦听器Listener

什么事Web监听器?web监听器就是Servlet中特殊的类,他们能帮助开发者监听web中的特定事件,比如ServletContext、HttpSession、ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控等等。web监听器的使用场景有很多;Spring的监听器是一种观察者模式,它能实现事件与事件监听者直接的解耦;

记录总结工作过往 1188

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4638

pytorch实现手语识别

连续手语识别项目,中文数据集CSL

masteryi-0018的博客 1万+

SpringBoot——Listener(监听器)的使用

常用的监听器接口 1.ServletContextListener – 监听servletContext对象的创建以及销毁 1.1 contextInitialized(ServletContextEvent arg0) -- 创建时执行 1.2 contextDestroyed(ServletContextEvent arg0) -- 销毁时执行 2.HttpSessionListener – 监听session对象的创建以及销毁 2.2 sessionCreated(Http

weixin_43085797的博客 1168

硬件笔记——HDMI接口

HDMI可以同时传输视频信号、音频信号和控制信号。其中高速信号有四组:从Data TX到Data RX有3组差分数据信号(TMDS_DATA0~2)和一组差分时钟信号(TMDS_CLOCK)。以及若干低速线。脚编号信号名称信号类型功能说明1热插拔检测连接状态检测。接收端通过此引脚向源端发送高电平信号,通知其已连接并可以开始读取EDID。2UTILITY车载用途悬空3TMDS数据通道2差分信号正极,用于传输视频像素、音频和数据包。4TMDS数据2屏蔽。

2501_94625908的博客 545

18.Spring Boot 注册Servlet、Filter、Listener

在Servlet 3.0之前我们都是使用web.xml进行配置,需要增加Servlet、Filter或者Listener都是在web.xml增加相应的配置即可。这里我们使用的是使用Java配置来注册Servlet、Filter、Listener。

编码语言Codelang 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

18. Spring Boot 、注册Servlet三大组件Servlet、Filter、Listener

由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件 public class MyServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp)...

weixin_33774883的博客 151

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

18. 注入 Servlet、Filter、Listener

考虑到实际开发业务非常复杂和兼容,Spring-Boot 支持将 Servlet、Filter、Listener 注入 Spring 容器,成为 Spring bean也就是说 Spring-Boot 开放了和原生 WEB 组件(Servlet、Filter、Listener)的兼容。

要学就学灰太狼的博客 294

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

第03章 Spring-Boot 应用 Servlet、Filter、listener 配置

第03章 Spring-Boot 应用 Servlet、Filter、listener 配置 文章目录第03章 Spring-Boot 应用 Servlet、Filter、listener 配置前言目标环境配置简单介绍三种配置的定义方式在启动类中以java bean方式进行依赖注入启动类实现接口 `ServletContextInitializer `方式在启动类上增加注解 `@ServletComponentScan `生效自定义异常配置处理自定义异常处理类404 异常配置处理500 异常配置处理5xx异

Kony的专栏 221

springboot中定制自己的servlet filter listener

public class MyServlet extends HttpServlet { //处理get请求 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } ...

xdy3008的专栏 305

springboot之servlet注入

使用场景:在有些场景下,比如我们要使用hystrix-dashboard,这时候就需要注入HystrixMetricsStreamServlet(第三方的servlet),该servlet是hystrix的组件。 Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、Filter、Listener、Interceptor 等等。

ForeverLove的博客 1179

SpringBoot(四)-- 整合Servlet、Filter、Listener

来源:https://www.cnblogs.com/xbq8080/p/7768916.html SpringBoot中有两种方式可以添加 Servlet、Filter、Listener。 1.代码注册  通过ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制。   ...

rentian1的博客 228

【Spring Boot】(18)、Spring Boot配置嵌入式Servlet容器

Spring Boot默认使用Tomcat作为嵌入式的Servlet容器,只要引入了spring-boot-start-web依赖,则默认是用Tomcat作为Servlet容器:1、定制和修改Servlet容器的相关配置1)、修改和server有关的配置(ServerProperties,它其实也是EmbeddedServletContainerCustomizer的子类):server.port...

caychen的博客 1803

Spring Boot 18——注册Servlet三大组件

1、概述       Servlet三大组件       Servlet:ServletRegistrationBean       Filter:FilterRegistrationBean       Listener:ServletListenerRegistrationBean 2、Servlet组件 3、Filter组件 4、Listener组件 ...

菜园子丶For丨丶Tomorrow的博客 281
上一篇: maven(19)-生命周期和内置插件
下一篇: spring boot(19)-拦截器
free_java
博客等级 码龄10年 664粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值