Lisener 监听器

Listener时Servlet的监听器
监听客户端的请求和服务器的操作
通过实现Listener接口的类可以在监听到特定事件后激发一些操作
HttpSessionBindingListener监听器
HttpSessionBindingListener
当一个实现了该接口的对象捆绑到session中或从session中被解放的时候启用此监听
session创建和销毁时分别触发valueBound()和ValueUnbound()方法
HttpSessionBindingListener监听器实现在线用户的统计步骤
创建实现HttpSessionBindingListener接口
在valueBound()和ValueUnbound()方法中实现用户数量统计
将其实例添加到session作用域

public class User implements HttpSessionBindingListener {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void valueBound(HttpSessionBindingEvent event) {
OnlineNum.NUMBERS++;
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
OnlineNum.NUMBERS--;
}
}

session创建
当服务器接受到浏览器的第一次会话时就会立刻创建会话的session, 运用session.setAttribut();只不过是向已经存在色session里放入一个属性

HttpSessionListener统计在线人数
HttpSessionBindingListener统计:她统计的是绑定某一个特定对象的单个session
HttpSessionListener统计:它统计的是该项目的所有session
创建监听类UserCountListener, 重写session创建和销毁的方法
重写session创建方法
通过session事件获取session对象, 在通过session对象获取ServletContext对象,再获取ServletContext里的count值(第一次值为空,为空的话需要自己设置初始值,并把count属性设置到ServletContext里)
session销毁方法 如果为空count设置为0, 如果不为空count--, 然后在把count重新设置进ServletContext属性里
然后配置web.xml,把你写的监听器类全名配置到里边
ServletContext对象作用与整个web容器,整个web容器共享的数据,当一个客户端发起第一次会话时创建一个session对象的时候ServletContext的count属性加一,当有session对象销毁时count属性的值减一,通过这种思想来统计整个web容器的存在session对象的个数来确定在线人数
再登录成功页面可以输入<%=session.getServletContext().getAttribute("count")%> 来获取ServletContext的属性值,来显示在线人数

 1 public class UserCountListener implements HttpSessionListener {
 2
 3 @Override
 4 public void sessionCreated(HttpSessionEvent se) {
 5 Integer count = (Integer) se.getSession().getServletContext().getAttribute("count");
 6 if (count == null) {
 7 count = 1;
 8 } else {
 9 count++;
10 }
11 se.getSession().getServletContext().setAttribute("count", count);
12 System.out.println("+++++++++++++++session创建,在线人数加1+++++++++++++++++++");
13 }
14
15 @Override
16 public void sessionDestroyed(HttpSessionEvent se) {
17 Integer count = (Integer) se.getSession().getServletContext().getAttribute("count");
18 if (count == null) {
19 count = 0;
20 } else {
21 count--;
22 }
23 se.getSession().getServletContext().setAttribute("count", count);
24 System.out.println("+++++++++++++++session销毁,在线人数减1+++++++++++++++++++");
25
26 }
27
28 }
29
30  

原文地址:https://www.cnblogs.com/MrliBlog/p/11002564.html

时间: 2024-11-02 09:05:23

Lisener 监听器的相关文章

Servlet监听器Listener

Listener实在servlet2.3中加入的,主要用于对Session,request,context等进行监控. 使用Listener需要实现响应的接口.触发Listener事件的时候,tomcat会自动调用Listener的方法. 在web.xml中配置标签,一般要配置在<servlet>标签前面,可配置多个,同一种类型也可配置多个 <listener> <listener-class>com.xxx.xxx.ImplementListener</list

Java Web(五) 监听器Listener

监听器概述 在上一篇里介绍了过滤器Filter,而Listener是Servlet的另一个高级特性.Listener用于监听Java Web程序中的事件,例如创建,修改,删除Session,request,context等,并触发相应的事件.Listener主要用于对Session,request,context等进行监控,目前共有8种Listener,分别完成对不同事件的监听. 使用Listener不需要关注事件是怎样触发的或者怎么调用相应的Listener,只要记住该类事件触发时一定会调用相

javaweb监听器

监听器的理解:对对象以及对象的状态实行监控,并对相应的改变执行相关的程序. 按照监听的对象可以分为:监听ServletContext(应用程序环境对象)的事件监听器 ServletContextListener HttpSession(用户会话对象)的事件监听器  HttpSessionListener ServletRequest(请求消息对象)的事件监听器  ServletRequsetListener Session何时被销毁? 关闭服务器的时候 与服务器有连接,但长期没有交互的时候 关闭

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

Servlet监听器

简介 监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动. 监听器的分类: 1) 监听域对象自身的创建和销毁的事件监听器 2) 监听域对象中的属性的增加和删除的事件监听器 3) 监听绑定到 HttpSession 域中的某个对象的状态的事件监听器 如何编写监听器: 1) 编写实现了监听器接口的Java 类 public class HelloServletContextListner implements ServletCon

javaweb学习总结(四十五)——监听器(Listener)学习二

一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器. 这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换

SpringFramework4系列之SpringJMS:(四)异步接收消息 2.构建监听器

构建实现接口的监听器 编写监听器类并且实现监听器接口 public class ListenerDemo implements MessageListener {     public void onMessage(Message message) {         System.out.println(message.toString());     } } 注册MDP <!-- this is the Message Driven POJO (MDP) --> <bean id=&

监听器

八种web监听器详解 a)Web中有三个事件源,分别是ServletContext->HttpSession->ServletRequest 要在web.xml中进行事件源注册事件监听器 b)ServletContext对象        Context对象    实现的接口是没有适配器的     在初始化工作中使用的非常多 >>创建和销毁:ServletContextListener,Web容器部署时产生,Web容器重新部署时销毁原ServletContext对象 >>

过滤器、监听器、拦截器的区别

1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request.Response)统一设置编码,简化操作:同时还可进行逻辑判断,如用户是否已经登陆.有没有权限访问该页面等等工作.它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用