Lisener监听器

Posted mrliblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  

 

以上是关于Lisener监听器的主要内容,如果未能解决你的问题,请参考以下文章

使用java的lisener,filter,servlet.

从父片段到选项卡片段的接口侦听器不起作用

listview OnItemClick 侦听器在片段中不起作用

如何使用事件侦听器来加载动画片段的循环

oracledataguardbroker如何配置?

JavaFX窗口拖动