同 上文 一样,这个接口也是用于监听服务器端变化的,不过它监听的是HttpSession的变化。那么这个HttpSession是干嘛的呢?大家可以参看这里: 深入理解HTTP Session http://lavasoft.blog.51cto.com/62575/275589
从我链接的那篇文章里可以知道每当有一个用户访问JSP页面,服务器端便可创建一个Session,而这个Session的消失时间一般都用户不进行任何动作20分钟之后,或者是你服务器端直接关闭,不过这种可能性很小。 所以基于上述原理我们就可以写一个统计在线人数的小Demo: 首先建一个实体类Counter.java来记录在线人数:
.. code:: java
package com.listener;
/**
* 当前在线人数实体类
* @author 胡阳
*
*/
public class Counter {
private static long online = 0;
public static long getOnline() {
return online;
}
public static void raise(){
online++;
}
public static void reduce(){
online--;
}
}
接着就是HttpSessionListener接口的实现OnlineCounterListener.java:
.. code:: java
package com.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 统计在线人数
* @author 胡阳
*
*/
public class OnlineCounterListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent arg0) {
//增加一个
Counter.raise();
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
//减少一个
Counter.reduce();
}
}
其实在这段代码里面,你可以对当前登录人数进行判断,也就是判断Session中的值是否是已注册成员。这里只是简单的统计在线人数。
然后还是配置web.xml文件:
::
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listener-class>com.listener.OnlineCounterListener</listener-class>
</listener>
</web-app>
接着是index.jsp:
::
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="com.listener.*" %>
<%
long num = Counter.getOnline();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
我是打酱油的,当前在线人数为:<%=num %>
<body>
</body>
</html>
这样就完成了当前在线人数的统计,你可以测试一下,用chrome访问一个这个index.jsp,然后用ie在访问一下看看结果。
- from the5fire.com
----EOF-----
微信公众号:Python程序员杂谈
微信公众号:Python程序员杂谈