JSP实例程序:统计当前在线人数

  • 来源: 天新网 作者: 若水   2008-04-25/14:36
  •  
     

    /**这是管理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>登陆成功,欢迎您访问Webjx.com!</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(); #p#分页标题#e#
    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>yuking制作</p>
    <p>&nbsp;</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>登陆成功,欢迎您访问webjx.com!</h1></p>
    </center>
    <%
    String username=request.getParameter("username");
    if(onlineuser.deleteUser(username))
    out.println(username+"已经退出系统!");
    else
    out.println(username+"没有登陆到系统!");
    %>
    <center>
    <p>webjx.com制作</p>
    <p>&nbsp;</p>
    <p><a href="logout.jsp">退出系统</a></p>
    </center>
    </body>
    </html>


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多