——这里 我上传一个 关于监听器的一个小小案例,练手的监听器例子(统计在线用户人数和信息)
——————————————————————————————从不同浏览器等,访问我的网页时,统计的用户人数和用户信息。。用户信息只完成了 用户IP 用户第一次访问该网页的时间,用户的sessionId
以下链接 点击打开链接
JSP监听器——概述————简单说下
1、监听器:指专门用于对其他对象身上发生的【事件或状态改变】进行监听和相应处理的对象。当被监听的对象【发生变化】时,立即采取相应的行动。注意:必须发生变化才能调用
2、监听对象:ServletContext:application(整个应用只存在一个)、HttpSession:session(针对每一个会话)、ServletRequest:request(客户请求)
3、监听内容:创建、销毁、属性改变事件
4、可以在时间发生前、发生后进行一些处理
监听器的启动顺序是根据 注册xml时的先后顺序来 加载启动的
优先级 监听器 过滤器 servlet的顺序进行启动
监听器的小例子:
1、实现ServicelContextListener接口
contextInitialized()
contextDestoryed()
2web.xml中注册
<listener>
<listener-class>类的完整路径</listener>
</listener>
按照监听的对象划分 可以分为三类
一,ServletContext 监听服务器上下文对象
二,HttpSession 监听用户回话对象
三,ServletRequest 监听浏览器请求对象
HttpSession对象的创建和销毁监控
Session销毁的三种情况:
1:程序调用销毁Session的方法,来销毁Session
2:关闭浏览器时销毁
3:Session超时自动销毁——注意,配置的事件可能不那么准确
session这个对象是非常有用的,对于登录登出的控制尤为重要。
ServletRequest的事件监听器
实现ServletRequestListener接口用于监听它的创建和销毁事件
一个ServletRequest可以注册多个ServletRequestListener接口,
有两个事件处理方法:
requestInitialized方法:
public void requestInitialized(ServletRequestEvent sre)
request创建时调用
参数ServletRequestEvent可以获取ServletRequest对象 ServletRequest sr = sre.getServletRequest()
进而获取初始化参数:sr.getInitParmeter("")
requestDestroyed方法:
public void requestDestroyed(ServletRequestEvent sre)
request销毁时调用
ServletRequest的主要用途:
读取参数
记录访问历史
request监听的是用户的每一个访问请求
按照监听的对象的属性变化的监听器,以及监听器中的方法的使用。
还是针对ServletContext/HttpSession/ServletRequest三个对象,此时不是针对这三个对象的创建和销毁的监听了,是针对这三个对象的属性的变化的监听了。对应的也有三个接口,每个接口中有三类针对属性不同变化的监听方法。
Servlet规范中提供的两个监听器,用于实现Session的绑定、解除绑定、钝化、活化四个方法。
需要注意的是,这两个监听器不需要注册到web.xml文件中
当在Session对象中添加这个对象作为Session的属性或者将这个对象从Session对象中清楚,都会触发对应的方法——绑定或者解除绑定的方法,这说明程序中的每个动作都应该是可控的可见的可监视的,只是有些是Web容器负责的事情,作为程序员我们了解的稍微少一些。
绑定、解除绑定、钝化、活化四个方法都是一样的,都是有关Session对象的变化的监控,绑定、解除绑定是对Session对象的属性的添加和清除的监控,钝化、活化是对Session对象持久化和反持久化的一个监控,注意,对应钝化、活化需要序列化这个过程,所以,需要实现Serializable接口——序列化的接口
另外,就是这两个监听器不需要配置在web.xml文件中但是Tomcat容器照样能知道,一定是在某个地方配置好了。
HttpServletRequest对象.getSession().getId();//获取session的ID
HttpServletRequest对象..getRemoteAddr();//获取用户ip地址
最后是我学习 监听器时的 笔记和练习 代码
附上链接 希望对你们有所帮助!!! 也请大家多多关照!!