继上次说到Listener的功效,这里就不得不说说另外一个接口HttpSessionListener了。
上次说到了ServletContextListener,它是用来监听Servlet Context的创建和销毁的状态。今天特别有兴趣在
聊聊另一个监听的接口,名字叫做HttpSessionListener。
在理解这个接口之前,先提出一个问题,就是假设我的web应用上想知道到底有多少用户在使用?
首先看一段代码。
package demo.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCounter implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
ServletContext ctx = event.getSession( ).getServletContext( );
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(1);
}
else {
int count = numSessions.intValue( );
numSessions = new Integer(count + 1);
}
ctx.setAttribute("numSessions", numSessions);
}
public void sessionDestroyed(HttpSessionEvent event) {
ServletContext ctx = event.getSession( ).getServletContext( );
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(0);
}
else {
int count = numSessions.intValue( );
numSessions = new Integer(count - 1);
}
ctx.setAttribute("numSessions", numSessions);
}
}
在这个解决方案中,任何一个Session被创建或者销毁时,都会通知SessionCounter 这个类,当然通知的原因是必须在web.xml文件中做相关的配置工作。如下面的配置代码:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd
">
<web-app>
<display-name>Struts Examples</display-name>
<listener>
<listener-class>demo.listener.SessionCounter
</listener-class>
</listener>
... rest of web.xml
分享到:
相关推荐
用HttpSessionListener实现在线人数和历史访问量的统计
主要介绍了Spring boot通过HttpSessionListener监听器统计在线人数的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...
HttpSessionListener 和HttpSessionBindingListener的区别 HttpSessionBindingListener单点登录。
jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。
主要介绍了java 在Jetty9中使用HttpSessionListener和Filter的相关资料,需要的朋友可以参考下
您好,请访问:http://msdn.microsoft.com/zh-cn/library/aa478989.aspx [^] Yours Farhad。
jsp中唯一登录,使用session控制.
基于Spring+Struts2+ibatis框架,利用 HttpSessionBindingListener接口进行监听,实现防止异地登录,配有全部代码及sql数据库表
实现在线人的显示,通过实现ServletContenxListener,HttpSessionListener,HttpSessionAttributeListener来实现在线人的展示
用户注销 非正常退出 session失效 三种情况来进行 控制 分别使用了两种方式 进行了实现1:不修改数据库使用HashMap+HttpSessionListener 2:给数据库添加online列 使用(数据库脚本包含在内)HashMap+...
使用SessionListener+持久化Session+Springmvc拦截器实现单点登录
springBoot Guava Cache(java工具类集... ... ...Nginx:反向代理服务器,Nginx搭建支持用户头像等静态资源的访问 ...Spring Admin(外部监控)、Spring Actuator(内部监控平台) ...HttpSessionListener监听器统计系统当前在线人数
实现的接口:ServletRequestListener,HttpSessionListener,ServletContextListener 工程的大致步骤: 1.自定义实现三个监听器的类 2.使用注解的方法注册监听器 3.部署工程并运行,在控制台会输出相应的信息
此类通过监听器实现了在线人数统计,其原理很简单,就是每当增加一个HttpSession时就触发了实现HttpSessionListener接口的类的SessionCreated()方法,使在线人数加1....
public class DialogHttpSessionListner implements HttpSessionListener { private static Map, HttpSession> httpssessionmap = new Hashtable, HttpSession>(); // private UserVo uservo=new UserVo(); ...
企业drp系统经典实现。 包括: v1.0 * 用户添加 v1.1 * 采用Ajax判断用户代码是否重复 v1.2 * 分页查询用户 v1.3 * 用户维护页面控制 v1.4 ... * HttpSessionListener ... * 验证码的使用
HttpSessionListener HttpUtils RequestDispatcher Servlet ServletConfig ServletContext ServletContextAttributeEvent ServletContextAttributeListener ServletContextEvent ServletContextListener ...
javax.servlet.http.HttpSessionListener javax.servlet.ServletContextAttributeEvent javax.servlet.ServletRequestAttributeEvent javax.servlet.http.HttpSessionBindingEvent javax.servlet....
2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,...