Java Web之Servlet监听器(Listener)
1. Listener的作用:做一些初始化的内容添加工作,设置一些基本的内容,比如是一些参数或是一些固定的对象等。
2. Listener监听对象:
ServletContext:application,整个应用只存在一个
HttpSession: session,针对每一个对话
ServletRequest:request,针对每一个客户请求
2.1按照监听的对象划分
(1)用于监听应用程序环境对象(ServletContext)的事件监听器,实现ServletContextListener、ServletContextAttributeListener 接口。
(2)用于监听用户会话对象(HttpSeesion)的事件监听器,实现HttpSessionListener、HttpSessionAttributeListener接口。
(3)用于监听请求消息对象(ServletRequest)的事件监听器,实现ServletRequestListener、ServletRequestAttributeListener 接口。
3. Listener的开发流程:
1、创建一个实现监听器接口的类
2、配置web.xml文件,注册监听器
<listener>
<listener-class>完整类名</listener-class>
</listener>
3.1实现三种监听对象的接口。
(1)ServletContext的创建和销毁:contextInitialized方法和contextDestroyed方法
//实现ServletContextListener接口
public class MyApplicationListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0){
//应用销毁时的代码
}
public void contextInitialized(ServletContextEvent arg0){
//应用初始化时代码
}
}
(2)主要用途:作为定时器、加载全局属性对象、创建全局数据库连接、加载缓存信息等
(3)在web.xml中可以配置项目初始化信息,在contextInitialized方法中进行启动
<context-param>
<param-name>属性名</param-name>
<param-value>属性值</param-value>
</context-param>
(1)HttpSession的创建和销毁:sessionCreated和sessionDestroyed方法。
//实现HttpSessionListener接口
public class MySessionListener implements HttpSessionListener{
public void sessionCreated( HttpSessionEvent arg0){
//会话创建时的代码
…….
}
public void sessionDestroyed(HttpSessionEvent arg0){
//会话销毁时的代码
……
}
}
(2)主要用途:统计在线人数、记录访问日志等
(3)web.xml配置session超时参数,单位:分,session超时的时间并不是精确的
<session-config>
<session-timeout>10</session-timeout>
</session-config>
(1)ServletRequest的创建和销毁:requestInitialized和requestDestroyed方法。
//实现HttpRequestListener接口
public class MyRequestListener implements ServletRequestListener{
public void requestDestroyed( ServletRequestEvent arg0){
//请求销毁时的代码
………
}
public void requestInitialized( ServletReuqestEvent arg0){
//请求销毁时的代码
}
}
(2)主要用途:读取request参数,记录访问历史
4. 监听内容:创建、销毁、属性改变事件
5. 监听作用:可以在事件发生前、发生后进行一些处理,一般可以用来统计在线人数和在线用户、统计网站访问量、系统启动时 初始化信息等。
6.监听器的启动顺序:按照web.xml的配置顺序来启动
加载顺序:监听器>过滤器>Servlet