Servlet监听器

Servlet监听器

	1)概念:
	
		1)监听ServletContext、HttpSession和ServletRequest等域对象的创建事件、销毁事件、域对象中属性发生改变的事件。
		2)当域对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。
		
	2)监听对象:
	
		1)ServletContext
		2)HttpSession
		3)ServletRequest
		
	3)监听内容:
	
		监听对象的创建、销毁以及对象属性发生改变的事件

	4)分类:

		按监听的对象划分:
		
			1)ServletContext对象监听器:	实现ServletContextListener、ServletContextAttributeListener接口
				应用:作为定时器、加载全局属性对象、创建全局数据库连接、加载缓存信息等
				
			2)HttpSession对象监听器:		实现HttpSessionListener、HttpSessionAttributeListener接口
			
				web.xml中配置session超时时间(单位:分):
				<session-config>
					<session-timeout>10</session-timeout>
				</session-config>
			
				应用:统计在线人数、记录访问日志等
				
			3)ServletRequest对象监听器:	实现ServletRequestListener、ServletRequestAttributeListener接口
				应用:读取request参数,记录访问历史
				
		按监听的事件划分:
		
			1)监听域对象的创建事件、销毁事件的监听器:
				实现ServletContextListener、HttpSessionListener、ServletRequestListener接口
				
			2)监听域对象中属性的增加事件、属性的删除事件的监听器:
				实现ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。
				
			3)监听绑定到HttpSeesion中的某个对象的状态变化事件的监听器(创建普通JavaBean):
				实现接口及方法:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法)
			
			  HttpSession中的对象状态:
				  绑定:  	通过setAttribute()方法将bean保存到session对象中
				  解除绑定:	通过removeAttribue()方法解除绑定
				
				  钝化(序列化):  	将session对象持久化到存储设备上
				  活化(反序列化):	将session对象从存储设备上进行恢复

			  session钝化机制:
			    1)把服务器不常使用的session对象暂时序列化到系统文件或者是数据库中,当使用时反序列化到内存中,整个过程由服务器自动完成;
			    2)session的钝化机制由SessionManager管理,创建一个普通的JavaBean绑定和解除需要实现HttpSessionBindingListener接口
					3)JavaBean必须实现Serializable接口

	5)实现:
	
		web.xml
			<listener>
				<listener-class>完整类名</listener-class>
			</listener>
			
		举例:
			<listener>
				<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
			</listener>
			
			<listener>
				<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
			</listener>
			
			<listener>
				<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
			</listener>
			
			<session-config>
				<session-timeout>60</session-timeout>
			</session-config>
			
			监听器的启动顺序:按照web.xml的配置顺序来启动
		
		使用:
			HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
		
	6)注意:
	
		加载顺序:监听器>过滤器>Servlet
		

		


	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值