实训——显示在线人员列表

本文介绍了一个基于JavaWeb的在线人员列表实现方案,包括用户登录、在线人数统计及展示功能。通过监听会话状态,实时更新在线用户列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.在线人员列表需求描述

用户登录,登录成功后,跳转到在线人员列表,在该页面显示当前在线人员的列表以及人数统计数目。

二.模块实现

文件功能
loginForm.jsp用户登录页面,用来输入用户登录信息
loginConfig.jsp用来判断登录的用户是否合法
UserList.jsp1.显示在线人员的列表 2.显示当前在线总人数
OnlineUserListener.java1.监听Servlet上下文的创建和销毁 2.监听Http会画画的创建和销毁 3.监听HttpSession对象中属性的操作

三.程序清单

loginForm.jsp

<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
     <head>
           <title>
                 登录表格
           </title>
     </head>
     <body>
           <form action = "loginConfig.jsp" method = "post" >
                <table>
                       <tr>
                           <td>用户名:</td>
                           <td><input type = "text" name = "username" /></td>
                       </tr>
                       <tr>
                           <td>密码:</td>
                           <td><input type = "password" name = "upassword" /></td>
                       </tr>
                       <tr>
                            <td>
                                <input type = "submit" name = "submit" value = "提交" />
                                <input type = "reset" name = "reset" value = "重置" />
                            </td>
                       </tr>
                </table>
             </form>
     </body>
</html>

loginConfig.jsp

<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
     <head>
           <title>
                   用户登录判断
           </title>
     </head>
     <body>
          <%
             String username = request.getParameter("username");//获取用户名参数
             //登录判断省略
             session.setAttribute("username", username);
          %>
          <%-- 跳转到用户列表页 --%>
          <jsp:forward page = "UserList.jsp"></jsp:forward>
     </body>
</html>

UserList.jsp

<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
     <head>
          <title>
                用户列表页
          </title>
     </head>
     <body>
            <h3>在线人员列表</h3><hr> <%-- <hr>是创建一条水平线 --%>
        <h5>当前总在线人数${fn:length(applicationScope.allUser)}</h5>
        <c:forEach items = "${applicationScope.allUser}" var = "username" varStatus = "stat">
                  <c:out value = "${username}"></c:out>
                  <c:if test = "(stat.index + 1) % 5 == 0">
                      <br> <%-- 每5个一行就换行 --%>
                  </c:if>
        </c:forEach>
     </body>
</html>

OnlineUserListener.java

package com.javaweb.Listener;

import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OnlineUserListener implements ServletContextListener,
        HttpSessionListener, HttpSessionAttributeListener{
      private ServletContext application = null;//声明一个ServletContext对象
      
      public void contextInitialized(ServletContextEvent sce) {
    	// TODO Auto-generated method stub
    	ArrayList<String> allUser = new ArrayList<String>();//存储所有用户名
    	application = sce.getServletContext();//获得当前ServletContext对象
    	application.setAttribute("allUser", allUser);//设置到application范围
    }
      
      public void contextDestroyed(ServletContextEvent sce) {
    	// TODO Auto-generated method stub
    	//当ServletContext销毁时调用
   }
	
      public void sessionCreated(HttpSessionEvent se) {//session创建时调用该方法
    	// TODO Auto-generated method stub
    	
    }
      
      public void sessionDestroyed(HttpSessionEvent se) {//session销毁时调用该方法
    	// TODO Auto-generated method stub
    	
    }
      
     public void attributeAdded(HttpSessionBindingEvent se) {//session范围属性添加时调用
    	// TODO Auto-generated method stub
    	 //获得当前所有的用户
    	 ArrayList<String> allUser = (ArrayList<String>)application.getAttribute("allUser");
    	 String user = (String)se.getValue();//获得添加的用户
    	 allUser.add(user);//添加到所有用户列表中
    	 application.setAttribute("allUser", allUser);//重新设置到application范围中
    }
     
     public void attributeRemoved(HttpSessionBindingEvent se) {//session属性移除时调用
    	// TODO Auto-generated method stub
    	
    }
     
     public void attributeReplaced(HttpSessionBindingEvent se) {//session属性替换时调用
    	// TODO Auto-generated method stub
    	
    }
     
}

在web.xml配置listener

<listener>
            <listener-class>com.javaweb.Listener.OnlineUserListener</listener-class>
</listener>

摘自《Java Web 程序设计与项目实践》,电子工业出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值