用HttpSessionListener统计在线人数 去网上找例子 去
解决方案 »
- 询问一个问题,Myeclipse集成spket-1.6.23 后出现的问题,那位帮忙看看。
- unbuntu下配置grails?
- 如何根据选择按钮的不同加不同的参数!!
- 这个是什么原因引起的。怎么解决
- 请问struts中如何做编缉?
- www.jhost.cn 支持ssh,mysql,php免费空间 邀请码更新
- 在Tomcat + Oracle中的中文乱码问题????
- 求用java开发的界面控制小程序,100分奉上............急等
- .1+jb9在编译时出现APPC问题,请教各种高手
- 有人知道weblogic.ejbc这个工具吗,怎么使用?
- tomcat5.5.23配置问题,兄弟们赐教!
- 关于struts的一个异常信息
是这样的效果么?
只不过是写了一个 filter 对所有页面进行了过滤
效率上,目前为止,还不错
[email protected]
<head>
<title>登录页面</title>
</head>
<body>
<form action="online" method="post">
<table>
<tr>
<td>请输入用户名:</td>
<td><input type="text" name="user"></td>
</tr>
<tr>
<td>请输入密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="reset" value="重填"></td>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</body>
</html>*********** OnlineUser.java ************package org.sunxin.lesson.jsp.ch09.online;import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;
import java.util.Enumeration;public class OnlineUser extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException,IOException
{
req.setCharacterEncoding("gb2312");
String name=req.getParameter("user");
String pwd=req.getParameter("password");
if(null==name || null==pwd || name.equals("") || pwd.equals(""))
{
resp.sendRedirect("login.html");
}
else
{
HttpSession session=req.getSession();
User user=(User)session.getAttribute("user");
if(null==user || !name.equals(user.getName()))
{
user=new User(name);
session.setAttribute("user",user);
}
resp.setContentType("text/html;charset=gb2312");
PrintWriter out=resp.getWriter();
out.println("欢迎用户<b>"+name+"</b>登录");
UserList ul=UserList.getInstance();
out.println("<br/>当前在线的用户列表:<br/>");
Enumeration<String> enums=ul.getUserList();
int i=0;
while(enums.hasMoreElements())
{
out.println(enums.nextElement());
out.println(" ");
if(++i==10)
{
out.println("<br/>");
}
}
out.println("<br/>当前在线的用户数:"+i);
out.println("<p><a href=logout>退出登录</a>");
out.close();
}
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException,IOException
{
doGet(req,resp);
}
}*********** LogoutServlet.java ************package org.sunxin.lesson.jsp.ch09.online;import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;public class LogoutServlet extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException,IOException
{
resp.setContentType("text/html;charset=gb2312");
HttpSession session=req.getSession();
User user=(User)session.getAttribute("user");
session.invalidate();
PrintWriter out=resp.getWriter();
out.println("<html><head><title>退出登录</title></head><body>");
out.println(user.getName()+",你已退出登录<br/>");
out.println("<a href=login.html>重新登录</a>");
out.println("</body></html>");
out.close();
}
}
*********** User.java ************package org.sunxin.lesson.jsp.ch09.online;import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;public class User implements HttpSessionBindingListener
{
private String name;
private UserList ul=UserList.getInstance();
public User()
{
}
public User(String name)
{
this.name=name;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void valueBound(HttpSessionBindingEvent event)
{
ul.addUser(name);
}
public void valueUnbound(HttpSessionBindingEvent event)
{
ul.removeUser(name);
}
}*********** UserList.java ************
package org.sunxin.lesson.jsp.ch09.online;import java.util.Vector;
import java.util.Enumeration;public class UserList
{
private static final UserList userList=new UserList();
private Vector<String> v;
private UserList()
{
v=new Vector<String>();
}public static UserList getInstance()
{
return userList;
}
public void addUser(String name)
{
if(name!=null)
v.addElement(name);
}
public void removeUser(String name)
{
if(name!=null)
v.remove(name);
}
public Enumeration<String> getUserList()
{
return v.elements();
}
public int getUserCount()
{
return v.size();
}
}
****************************
主要思想是将所有登陆用户放到集合中。
用户登陆成功就添加到用户列表,用户退出就从用户列表中移出。
注意User类所实现的接口以及其中以下两个方法: //对象被绑定到session中时通知该对象
public void valueBound(HttpSessionBindingEvent event)
{
ul.addUser(name);
} //从session中删除对象时通知该对象
public void valueUnbound(HttpSessionBindingEvent event)
{
ul.removeUser(name);
}