Web监听器可以监听
客户端的请求和
服务端的操作。
监听对象包括:ServletContext、HttpSession、ServletRequest,分别对应JSP中的Application、Session、Request对象。
Web监听器是Servlet规范中定义的一种特殊类;用于监听ServletContext、HttpSession、ServletRequest等域对象的创建与销毁事件;用于监听域对象的属性发生修改的事件;可以在事件发生前、发生后做一些必要的处理。
Web监听器的用途
1、统计在线人数和在线用户
2、系统启动时加载初始化信息(定时器、数据库连接等)
3、统计网站访问量
创建Web监听器
1、创建一个实现监听器接口的类
监听器的启动顺序
一个web.xml下有多个监听器时 按注册顺序启动;
监听器、过滤器、Servlet加载顺序,优先级:监听器>过滤器>Servlet
监听器的分类
按监听对象划分:
1、用于监听应用程序环境对象( ServletContext)的事件监听器,实现ServletContextListener接口
主要用途:做定时器、加载全局属性对象、创建数据库连接。
2、用于监听用户会话对象( HttpSession)的事件监听器
主要用途:统计在线人数、记录访问日志;
3、用于监听请求消息对象( ServletRequest)的事件监听器
主要用途:读取参数、记录访问历史;
按监听事件划分:
1、监听域对象(ServletContext、HttpSession、ServletRequest)自身的创建与销毁的事件监听器
2、监听域对象中属性的增加和删除的事件监听器
3、监听绑定到HttpSession域中的某个对象的状态的事件监听器
监听对象包括:ServletContext、HttpSession、ServletRequest,分别对应JSP中的Application、Session、Request对象。
Web监听器是Servlet规范中定义的一种特殊类;用于监听ServletContext、HttpSession、ServletRequest等域对象的创建与销毁事件;用于监听域对象的属性发生修改的事件;可以在事件发生前、发生后做一些必要的处理。
Web监听器的用途
1、统计在线人数和在线用户
2、系统启动时加载初始化信息(定时器、数据库连接等)
3、统计网站访问量
创建Web监听器
1、创建一个实现监听器接口的类
2、配置web.xml进行注册package com.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class FirstListener implements ServletContextListener { public void contextInitialized(ServletContextEvent arg0) { System.out.println("contextInitialized"); } public void contextDestroyed(ServletContextEvent arg0) { System.out.println("contextDestroyed"); } }
<listener> <listener-class>com.listener.FirstListener</listener-class> </listener>
监听器的启动顺序
一个web.xml下有多个监听器时 按注册顺序启动;
监听器、过滤器、Servlet加载顺序,优先级:监听器>过滤器>Servlet
监听器的分类
按监听对象划分:
1、用于监听应用程序环境对象( ServletContext)的事件监听器,实现ServletContextListener接口
主要用途:做定时器、加载全局属性对象、创建数据库连接。
public class FirstListener implements ServletContextListener { public void contextInitialized(ServletContextEvent arg0) { String initparam = arg0.getServletContext().getInitParameter("initparam"); System.out.println("contextInitialized: initparam = "+initparam); } public void contextDestroyed(ServletContextEvent arg0) { System.out.println("contextDestroyed"); } }
web.xml
<context-param> <param-name>initparam</param-name> <param-value>dong</param-value> </context-param>
2、用于监听用户会话对象( HttpSession)的事件监听器
主要用途:统计在线人数、记录访问日志;
package com.listener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class MyHttpSessionListener implements HttpSessionListener { //用户第一次打开浏览器访问时创建 public void sessionCreated(HttpSessionEvent arg0) { System.out.println("sessionCreated"); } public void sessionDestroyed(HttpSessionEvent arg0) { System.out.println("sessionDestroyed"); } }
web.xml
<listener> <listener-class>com.listener.MyHttpSessionListener</listener-class></listener>
<session-config> <session-timeout>5</session-timeout></session-config>
3、用于监听请求消息对象( ServletRequest)的事件监听器
主要用途:读取参数、记录访问历史;
package com.listener; import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; public class MyServletRequestListener implements ServletRequestListener { public void requestInitialized(ServletRequestEvent arg0) { String name = arg0.getServletRequest().getParameter("name"); System.out.println("requestInitialized name ="+name); } //接收参数 在浏览器地址栏访问时加上参数 "?name=dong" public void requestDestroyed(ServletRequestEvent arg0) { System.out.println("requestDestroyed"); } }
web.xml
<listener> <listener-class>com.listener.MyServletRequestListener</listener-class> </listener>
按监听事件划分:
1、监听域对象(ServletContext、HttpSession、ServletRequest)自身的创建与销毁的事件监听器
2、监听域对象中属性的增加和删除的事件监听器
3、监听绑定到HttpSession域中的某个对象的状态的事件监听器