/**
這是管理user信息的類
文件名為onLineUser.java
*/
import javax.servlet.http.*;
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>
</html>