Web监听器Listener

简介

监听器Listener:用户监听web应用中某些对象,信息的创建,销毁,增加,修改,删除等动作的发生,然后做出相应的响应处理.当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法.常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等.

监听器种类

生命周期监听:监听创建和销毁
属性监听:监听值的添加,修改,删除
感知监听:感知javabean是否被session存储删除和序列化反序列化

第一种监听:ServletContextListener:

void contextInitialized(ServletContextEvent sce):ServletContext创建后执行
void contextDestroyed(ServletContextEvent sce):ServletContext销毁前执行

第二种监听:ServletContextAttributeListener

void attributeAdded(ServletContextAttributeEvent event):增加属性时执行
void attributeRemoved(ServletContextAttributeEvent event):删除属性时执行
void attributeReplaced(ServletContextAttributeEvent event):修改属性时执行

第三种监听:HttpSessionListener

void sessionCreated(HttpSessionEvent se):HttpSession创建后执行
void sessionDestroyed(HttpSessionEvent se):HttpSession销毁前执行

第四种监听:HttpSessionAttributeListener

void attributeAdded(HttpSessionBindingEvent event):增加属性时执行
void attributeRemoved(HttpSessionBindingEvent event):删除属性时执行
void attributeReplaced(HttpSessionBindingEvent event):修改属性时执行

第五种监听:ServletRequesListener

void requestDestroyed(ServletRequestEvent sre):ServletRequest创建后执行
void requestInitialized(ServletRequestEvent sre):ServletRequest销毁前执行

第六种监听:ServletRequesAttributeListener

void attributeAdded(ServletRequestAttributeEvent event):增加属性时执行
void attributeRemoved(ServletRequestAttributeEvent event):删除属性时执行
void attributeReplaced(ServletRequestAttributeEvent event):修改属性时执行

第七种监听:HttpSessionBindingListener

javabean对象实现HttpSessionBindingListener接口
void valueBound(HttpSessionBindingEvent event):将javabean对象添加到session中执行
void valueUnbound(HttpSessionBindingEvent event):将javabean对象从session删除时执行

第八种监听:HttpSessionActivationListener

javabean对象实现HttpSessionActivationListener接口
void sessionDidActivate(HttpSessionEvent se):当javabean被session序列化时执行
void sessionWillPassivate(HttpSessionEvent se):当javabean被session反序列化时执行

生命周期监听的对象主要方法:

ServletContextEvent:
主要方法ServletContext getServletContext()
HttpSessionEvent:
主要方法HttpSession getSession()
ServletRequestEvent:
主要方法ServletRequest getServletRequest()和ServletContext getServletContext()

属性监听对象主要方法:

getName():获取修改的属性名
getValue():获取修改前的属性值
getServletContext():获取上下文
可通过该方法even.getServletContext().getAttribute(even.getName())获取修改后的属性值.

感知监听器介绍(与HttpSession相关)

作用在javabean上,并不是作用在三大域上
不需要注册到web.xml中
session当服务器关闭的时候消失
通常服务器启动并使用sesison的时候,会在work目录中项目目录创建SESSION.ser文件中,下次服务器重启会重新加载.
但是如果tomcat/conf/context中设置了,则不会讲session保存在本地文件中.

session的钝化和活化

如果对象需要钝化存储到本地,则对象需要实现序列化接口.
当服务器有大量的session,并且短时间无用的话可以钝化session,将至保存在文件中,需要的时候在活化该文件.
可以在tomcat/conf/context.xml中配置,对所有该tomcat的项目都有用.

<Context>
	<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
		<Store className="org.apache.catalina.session.FileStore" directory="mysession"/>
	</Manager>
</Context>

其中:maxIdleSwap="1"表示1分钟无调用该session,则钝化到文件中.
directory="mysession"表示该session钝化后存储的文件路径,相对于tomcat中本工程路径来说.

总结:

这八种监听器大部分都不常用,常用监听器为ServletContextListener,该监听器用于设置一些需要随服务启动的参数等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值