大量内容来源于:http://www.tuicool.com/articles/bIJJvuE
一,前言
1,什么是web监听器?
web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控。
2,监听器常用的用途
通常使用Web监听器做以下的内容:
统计在线人数,利用HttpSessionLisener
加载初始化信息:利用ServletContextListener
统计网站访问量
实现访问监控
3,监听器的分类
1)按照监听的对象划分:
ServletContext监控——对应监控application内置对象的创建和销毁。(当web容器开启时,执行contextInitialized方法,当容器关闭或重启时,执行contextDestroyed方法!)
HttpSession监控——对应监控session内置对象的创建和销毁。(当打开一个新的页面时,开启一个session会话,执行sessionCreated方法;当页面关闭session过期时,或者容器关闭销毁时,执行sessionDestroyed方法!)
ServletRequest监控——对应监控request内置对象的创建和销毁。(当访问某个页面时,发出一个request请求,执行requestInitialized方法,当页面关闭时,执行requestDestroyed方法!)
2)按照监听事件划分:
监听事件自身的创建和销毁——同上面的按对象划分。
监听属性的新增、删除和修改——按上面的对象划分,ServletContextAttributeListener接口、SessionAttributeListener接口、ServletRequestAttributeListener接口,分别有attributeAdded方法、attributeRemoved方法、attributeReplaced方法需要去实现。
二,接下来看看一个监听器的创建以及执行过程
1,首先需要创建一个监听器,实现某种接口,例如我想实现一个对在线人数的监控,可以创建如下的监听器:
public class MyListener implements HttpSessionListener{ private int userNumber = 0; public void sessionCreated(HttpSessionEvent arg0){ userNumber++; arg0.getSession().setAttribute("userNumber", userNumber); } public void sessionDestroyed(HttpSessionEvent arg0){ userNumber--; arg0.getSession().setAttribute("userNumber", userNumber); } }
然后在web.xml中配置该监听器,在web-app中添加:
<listener> <listener-class>com.test.MyListener</listener-class> </listener>
在JSP中添加访问人数:
<body> 在线人数:<%=session.getAttribute("userNumber") %><br/> </body>
2,以下两种情况下就会发生sessionDestoryed(会话销毁)事件:
1)执行session.invalidate()方法时 。
既然LogoutServlet.java中执行session.invalidate()时,会触发sessionDestory()从在线用户 列表中清除当前用户,我们就不必在LogoutServlet.java中对在线列表进行操作了,所以LogoutServlet.java的内容现在是 这样。
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // 销毁session request.getSession().invalidate(); // 成功 response.sendRedirect("index.jsp"); }
2)
如果用户长时间没有访问服务器,超过了会话最大超时时间 ,服务器就会自动销毁超时的session。
会话超时时间可以在web.xml中进行设置,为了容易看到超时效果,我们将超时时间设置为最小值。
<session-config> <session-timeout>1</session-timeout> </session-config>
时间单位是一分钟,并且只能是整数,如果是零或负数,那么会话就永远不会超时。
三,HttpSessionBindingListener方法的使用
1,捕获Session事件的意义:记录网站的客户登录日志(登录,退出信息等!)
2,Session代表客户的会话过程,客户登录时,往Session中传入一个对象,即可跟踪客户的会话:
在Servlet中,传入Session的对象如果是一个实现HttpSessionBindingListener接口的对象(方便起见,此对象称为监听器),则在传入的时候(即调用HttpSession对象的setAttribute方法的时候)和移去的时候(即调用HttpSession对象的removeAttribute方法的时候或Session Time out的时候)Session对象会自动调用监听器的valueBound和valueUnbound方法。(由此可知,登录日志也就不难实现了!)
相关推荐
web监听器代码web监听器代码web监听器代码web监听器代码web监听器代码web监听器代码
Web页面的过滤与监听 了解Filter基本概念和适用场合 掌握使用Filter的基本步骤 会定义和使用Filter 掌握全局对象监听器的使用和应用 掌握会话对象监听器的使用和应用
二、 使用 Spring 的器监听器 ContextLoaderListener o1. maven依赖pom.xml o2. 注册监听器 ContextLoaderListener o3. 指定 Spring 配置文件的位置 o4. 获取Spring容器对象 在 Web 项目中使用 Spring 框架,首先...
Listener监听器 JavaBean Servlet Jsp XML HTML JAVA WEB开发技术 Listener监听器 事件监听器用于对程序中发生的事件进行监听,在监听的过程中会涉及几个重要组成部分: 事件(Event) 事件源 事件处理器 事件监听器...
servlet监听器案例,web.xml,加jsp,listener的配置和使用
该demo只是实现定时监听、周期性执行任务的功能,而邮件发送、文件删除等自定义功能需要自行添加上去,只需在run方法下修改邮件发送、文件删除等功能即可;
本文主要介绍了java web监听器统计在线用户及人数的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧
主要是过滤器的设置,在WEB里面设置了过滤的IP地址,就能看到过滤器的作用了,监听器的模板!
主要介绍了Java Web监听器Listener接口原理及用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
这个webListener 有大部分的web监听器的是使用方法实例
Servlet监听器在基于移动Web在线考试系统中的应用.pdf
完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT...
1、proxool官网,下载最新的proxool-...3、创建自定义数据库连接池监听 4、整合Struts2、Spring和proxool,配置Web服务启动配置文件[web.xml] 5、整合Spring和proxool,配置应用上下文配置文件[applicationContext.xml]
NULL 博文链接:https://gaojiewyh.iteye.com/blog/1759566
Java Web应用开发 53 课堂案例-应用监听器统计在线人数.docx 学习资料 复习资料 教学资源
web.xml配置详解、过滤器配置、监听器配置
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
java web使用过滤器的案列, 含过滤器案列和监听器案列, 有监听器案列之用户踢人的案列, 和过滤器30天自动登陆的案列, 以及过滤器乱码的情况处理
NULL 博文链接:https://zisefeiniao.iteye.com/blog/400523