tomcat中的几种监听器

本文详细介绍了Tomcat的监听器接口,如ServletContextListener、HttpSessionListener和ServletRequestListener,以及它们在服务器启动、关闭和请求处理过程中的作用。同时,对比了MQ的观察者模式,指出MQ的监听器主要用于内部回调,而Tomcat的监听器则是为开发者提供扩展点。此外,还讨论了Session的创建、存活时间以及浏览器关闭后Session的销毁机制,提出使用WebSocket进行实时通信的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先,tomcat只提供监听器规范(接口),事件源(tomcat)注册监听器list集合,这个需要我们自己注册 监听器实现类才行,但是不是所有组件都是没有监听器实现类的,只是tomcat这些个监听器接口,主要目的是提供给我们开发者使用的,它自己规定了一些事件对象创建的时机,这时如果我们想做一些增添,那么可以使用它的监听器规范,自己去注册一些 对应的事件对象的,监听器实现类

2.mq的 观察者模式和tomcat是完全不一样的,mq的主要目的是解决 自己组件的 监听回调问题,它的监听器是给自己使用的,都有其实现类的,简单来说 mq(事件源)以及内部注册好了,listenerList实现类,当消费者消费后,mq创建一个 消费信息Event,这时mq(事件源)将 event传给,listener去执行回调,这一步是异步的

tomcat几种监听器接口规范

	(1) ServletContextListener  

		用于监听服务器的启动与关闭,简单来说服务器启动,servletContext被创建,将servletContextEvent传给 监听器
		服务器关闭,servletContext被 销毁,将servletContextEvent传给 监听器
	 
	
	(2) HttpSessionListener
		用于监听session的创建与销
		
	(3)ServletRequestListener
		用于监听每一次请求 request 的开始【初始化】 与结束【销毁】

	4. (1) 服务器开启,servletcontextListener首先被使用。servletcontext被创建了;
	       服务器关闭的前一刻才会触发其销毁监听内容
	
	(2)  网页向controller请求,ServletRequestListener 首先检测出来,
	执行了他的requestInitialized 方法,即初始化request;等待contronller事务结束后,才出发servletRequestListener的销毁事件
	
	(3)并不是每次前端向服务器请求 都会 验证要不要创建Session  ,而是当服务器调用了HttpServletRequest.getSession(true) 后,
	   才会创建一个服务器内独一无二的session会话  ,其session id 则是自动分配一个无序的字符串,[得到两个一样的几率非常低]
	   然后才保存在前端[一般在cookie里面]。
	
	(4)session 可以设置存活时间,到期后自动注销 ,但往往都是默认值,每当前端浏览器关闭后,session才开始以默认期限倒计时,
	等待时间到后才销毁,并不是浏览器一关闭,就会销立马销毁 ,当然,也没必要手动对其销毁,让其自毁自灭就行,
	根据这一特性,就无法让服务器判断前端用户是否仍在,想要实现这个功能,只能使用websocket 或者长轮询,长轮询太消耗资源了,不建议使用,
	websocket则是最好的方式!!!
	
	(5) 从Tomcat设置的cookie路径来看,它对不同的应用程序设置的cookie路径是不同的,这样不同的应用程序所用的session id是不同的,因此即使在
	同一个浏览器窗口里访问不同的应用程序,发送给服务器的session id也可以是不同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值