一.介绍
web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控。
二.作用
- 通常使用Web监听器做以下的内容:
- 统计在线人数,利用HttpSessionLisener
- 加载初始化信息:利用ServletContextListener
- 统计网站访问量
- 实现访问监控
三.监听器的分类
1)ServletContext监控:对应监控application内置对象的创建和销毁。
当web容器开启时,执行contextInitialized方法;当容器关闭或重启时,执行contextDestroyed方法。
实现方式:直接实现ServletContextListener接口:
public class MyServletContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent sce) {
}
public void contextInitialized(ServletContextEvent sce) {
}
}
2)HttpSession监控:对应监控session内置对象的创建和销毁。
当打开一个新的页面时,开启一个session会话,执行sessionCreated方法;当页面关闭session过期时,或者容器关闭销毁时,执行sessionDestroyed方法。
实现方式:直接实现HttpSessionListener接口:
public class MyHttpSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent arg0) {
}
public void sessionDestroyed(HttpSessionEvent arg0) {
}
}
3)ServletRequest监控:对应监控request内置对象的创建和销毁。
当访问某个页面时,出发一个request请求,执行requestInitialized方法;当页面关闭时,执行requestDestroyed方法。
实现方式,直接实现ServletRequestListener接口:
public class MyServletRequestListener implements ServletRequestListener{
public void requestDestroyed(ServletRequestEvent arg0) {
}
public void requestInitialized(ServletRequestEvent arg0) {
}
}
四.扩展
1)从获取到数据的来源来说:
1.getAttribtue获取到的是web容器中的值,比如:
我们在Servlet中通过setAttribute设定某个值,这个值存在于容器中,就可以通过getAttribute方法获取;
2.getParameter获取到的是通过http传来的值,比如这样一个http请求:
http:localhost:8080/test/test.html?username=xingoo
还有其他的GET和POST方式,都可以通过getParameter来获取。
2)从获取到的数据类型来说:
1.getAttribute返回的是一个对象,Object。
2.getParameter返回的是,前面页面中某个表单或者http后面参数传递的值,是个字符串。