我有一种方法是用javascript在客户端断开的时候传回退出的信息,但是无法防止死机。
另一种方法是使用activex控件,或者是java applet。还有就是使用java web start构建一个胖客户端的程序。
我也期待有更好的解决方法。
另一种方法是使用activex控件,或者是java applet。还有就是使用java web start构建一个胖客户端的程序。
我也期待有更好的解决方法。
解决方案 »
- 请教几个另初学者混淆的关于(运行/开发)环境的概念问题?
- 实时显示数据
- 关于类文件的问题 大家指教下
- 怎样用jsp删除一个磁盘文件?
- 有法子将user的role全部list出来吗?
- 周末加班在线等待!我的程序怎么了?拜托那位大侠给看一眼吧!
- 用ForwardAction有什么好处?
- 关于taglib的配置问题!有点难度的!
- 请教:如何实现一个树型控件,就象http://expert.csdn.net/expert/forum.asp左边的。
- 我的程序为什么不能运行?
- 谁有项目让我做做?不要钱,只为学习、赚经验。或者那位高手组织一下,让菜鸟们一起做个小项目?顺便散分!!!!
- Oracle 和 Tomcat的端口(8080)冲突?
import javax.servlet.*;
import java.util.*; public class onLineUser implements HttpSessionBindingListener {
public onLineUser(){
} private Vector users=new Vector();
public int getCount(){
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName){
users.trimToSize();
boolean existUser=false;
for (int i=0;i<users.capacity();i++ )
{
if (userName.equals((String)users.get(i)))
{
existUser=true;
break;
}
}
return existUser;
} public boolean deleteUser(String userName) {
users.trimToSize();
if(existUser(userName)){
int currUserIndex=-1;
for(int i=0;i<users.capacity();i++){
if(userName.equals((String)users.get(i))){
currUserIndex=i;
break;
}
}
if (currUserIndex!=-1){
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
} public Vector getOnLineUser()
{
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
if(!existUser(e.getName())){
users.add(e.getName());
System.out.print(e.getName()+"\t 登入到系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}else
System.out.println(e.getName()+"已经存在");
} public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName=e.getName();
deleteUser(userName);
System.out.print(userName+"\t 退出系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}
} /////////////////////////////////////////////////////////////////////////////
<%
/**这是显示在线用户的jsp文件文件名为onLineUser.jsp*/
%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="onLineUser,java.util.*" %>
<jsp:useBean id="onlineuser" class="onLineUser" scope="application"/>
<html>
<head>
<title>搞定JSP在线人数</title>
</head>
<body>
<center>
<p><h1>登陆成功,欢迎您访问!</h1></p>
</center>
<% session = request.getSession(false); %>
<%
String username=request.getParameter("username");
if (onlineuser.existUser(username)){
out.println("用户<font color=red>"+username+"</font>已经登陆!");
}else{
session.setMaxInactiveInterval(50); file://Sesion有效时长,以秒为单位
session.setAttribute(username,onlineuser);
out.println("欢迎新用户:<font color=red>"+username+"</font>登陆到系统!");
}
out.println("<br>当前在线用户人数:<font color=red>"+onlineuser.getCount()+"</font><br>");
Vector vt=onlineuser.getOnLineUser();
Enumeration e = vt.elements();
out.println("在线用户列表");
out.println("<table border=1>");
out.println("<tr><td>用户名</td></tr>");
while(e.hasMoreElements()){
out.println("<tr><td>");
out.println((String)e.nextElement()+"<br>");
out.println("</td></tr>");
}
out.println("</table>");
%>
<center>
<p>elapsed制作</p>
<p> </p>
<%
out.println("<p><a href='logout.jsp?username="+username+"'>退出系统</a></p>");
%>
</center>
</body>
</html> ////////////////////////////////////////////////////////////////////////////////////
<%
/**这是用户退出的jsp文件文件名为logout.jsp*/
%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="onLineUser,java.util.*" %>
<jsp:useBean id="onlineuser" class="onLineUser" scope="application"/>
<html>
<head>
<title>搞定JSP在线人数</title>
</head>
<body>
<center>
<p><h1>登陆成功,欢迎您访问!</h1></p>
</center>
<%
String username=request.getParameter("username");
if(onlineuser.deleteUser(username))
out.println(username+"已经退出系统!");
else
out.println(username+"没有登陆到系统!");
%>
<center>
<p>elapsed制作</p>
<p> </p>
<p><a href="logout.jsp">退出系统</a></p>
</center>
</body>
如果楼上有好办法。
给我一点思路。
[email protected]
mail:[email protected]