servlet监听器用于监听一些重要的事件,可以在事件发生前,后作
处理.
Listener 接口 Event类
HttpSessionListener HttpSessionEvent
HttpSessionActivationListener
HttpSessionAttributeListener HttpSessionBindingEvent
HttpSessionBindingListener
ServletContextListener ServletContextEvent
ServletContextAttributeListener ServletContextAttributeEvent
ServletRequestListener ServletRequestEvent
ServletRequestAttributeListener ServletRequestAttributeEvent
1.HttpSessionBindingListener接口是一个唯一不需要在容器的
web.xml中设定的listener,当类实现了HttpSessionBindingListener
接口后,只要session调用setAttribute或removeAttribute的时候,
容器自动会执行valueBound()和valueUnbound()
2.HttpSessionAttributeListener接口
用于监听HttpSession中属性的操作
当在session中增加一个属性时,调用attributeAdded()方法,
修改时调用attributeReplaced()方法;
删除时调用attributeRemoved()方法;
3.HttpSessionActivationListener接口主要用于同一个session
转移到不同的JVM的情形.
4.HttpSessionListener接口
用于监听HttpSession的操作.
当创建一个session时,调用sessionCreated()方法;
当销毁一个session时,调用sessionDestroyed()方法;
可以实现 网站在线人数统计功能
1.ServletContext:ServletContext实例可以存取应用程序的
全局对象以及初始化阶段的变量.
在jsp中,application就是sevletContext的实例.在tomcat启动时
生成.
ServletContextListener监听ServletContext,
当application初始化时调用contextInitialized()方法;
当application销毁时调用contextDestroyed()方法;
2.ServletContextAttributeListener:用户监听web属性的修改
如属性的增删改.
attributeAdded()
attributeReplaced()
attributeRemoved()
3.ServletRequestListener类似ServletContextListener,
将context换成request即可
4.ServletRequestAttributeListener类似ServletContextAttributeListener
将context换成request即可
一.servlet对象的作用域
1.ServletContext(application) 服务器启动时产生,服务器关闭时销毁,作用全局,
相当于静态变量.
2.HttpSession(session) 在客户端第一次请求时产生,session过期或退出网站销毁,
作用域同一个客户端,相当于成员变量.
3.ServletRequest(request) 每次请求产生一个对象,请求结束时销毁,作用于同一次
请求,相当于局部变量.
如何使用监听器:
a.确定事件(application,session,request)
b.写一个类,实现监听器接口,写接口中方法.
c.在web.xml中进行配置
<listener>
<listener-class>监听器类</listener-class>
</listener>
d.只要触发事件,监听器就调用相应方法.