文档章节

Servlet监听器

A__17
 A__17
发布于 2017/08/21 22:53
字数 593
阅读 2
收藏 1

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的配置顺序来启动

6)注意:

加载顺序:监听器>过滤器>Servlet

© 著作权归作者所有

共有 人打赏支持
A__17
粉丝 2
博文 100
码字总数 117418
作品 0
朝阳

暂无文章

Go interface{} to string

package mainimport "fmt"func main() {var a interface{}a = "dsadjaldaldad"var b stringb = a.(string) // 话说,用人话说的话,这叫什么操作?fmt.Println(a, b)}...

taadis
10分钟前
0
0
数据库防火墙

数据库防火墙顾名思义是一款数据(库)安全设备,从防火墙这个词可以看出,其主要作用是做来自于外部的危险隔离。换句话说,数据库防火墙应该在入侵在到达数据库之前将其阻断,至少需要在入侵...

突突突酱
19分钟前
1
0
RDBMS 关系型数据库与 NoSQL 全面比较

随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 低延迟的读写速度:应用快速地反应能极大地提升用户的满...

PeakFang-BOK
28分钟前
1
0
徒弟做了一个Python的实战小项目——银行系统

国际惯例:实践是检验真理的唯一标准。 众所周知,在编程过程中理论知识再充实也需要通过项目的炼金石。下面给大家看一下我徒弟做的一个小项目实战要求,是做一个银行系统,就是我们去银行办...

无也Python
34分钟前
2
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部