服务器Servlet端

package com.sxt.mvcpro.servlet;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class OnlineNumberServlet extends HttpServlet{
private Set<String> names=new HashSet<>();
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //编码修改为utf-8(需要中文显示不乱码必须设置)req.setCharacterEncoding("utf-8");//获取操作路径请求String pathInfo=req.getPathInfo();//登录请求if ("/login".equals(pathInfo)) {this.login(req,resp);}//登出请求else if ("/logout".equals(pathInfo)) {this.logout(req,resp);}}//实现登录统计的方法
public void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username=req.getParameter("username");//如果为null则表示还没有登录if (req.getSession().getAttribute("username")==null) {if (!"".equals(username)) {//只有输入的用户名不能为空字符串才能进行操作req.getSession().setAttribute("username", username);//将用户名保存到set集合中
            names.add(username);//再将names集合保存到application内置对象中req.getServletContext().setAttribute("users", names);              //集合大小即为人数多少req.getServletContext().setAttribute("count", names.size());    }}//继续跳转到在线显示的页面resp.sendRedirect("/Mvcpro/pages/online.jsp");
}//实现注销的方法
public void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{//移除当前用户输入的用户名names.remove(req.getSession().getAttribute("username"));//销毁当前用户的session内置对象
    req.getSession().invalidate();req.getServletContext().setAttribute("count", names.size());resp.sendRedirect("/Mvcpro/pages/online.jsp");
}@Override//通过doPost来调用doGet方法可以使账号不在地址栏显示protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);}}

TomCat配置文件xml的修改

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>Mvcpro</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!--容器中配置出 路径对应的servlet-->
<servlet> <servlet-name>lineNumberServlet</servlet-name> <servlet-class>com.sxt.mvcpro.servlet.OnlineNumberServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet> 
 <!--定义出上面的servlet处理路径 这个路径叫做servlet的映射路径-->
<servlet-mapping> <servlet-name> lineNumberServlet</servlet-name> <url-pattern>/online/*</url-pattern> </servlet-mapping> </web-app>

客户端(前端)

由于需要传动态参数所以采用jsp格式而不是html(注意编码统一为utf-8以防止乱码)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<base href="/Mvcpro/">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><h1>在线人数为:${count==null? 0:count}</h1>${users}<form action="online/login"  method="post"><fieldset><legend>请登录</legend>用户名:<input  type="text" name="username"><br><br><input type="submit" value="登陆"></fieldset></form><a  href="online/logout">注销</a>
</body>
</html>

效果图

后期会在加入其他功能(敬请期待!!!)

转载于:https://www.cnblogs.com/Nick7/p/Nick.html

多用户在线人数监听(基于TomCat)相关推荐

  1. Tomcat主线程监听SHUTDOWN,如何远程关闭Tomcat?守护线程守护了谁?

    首发CSDN:徐同学呀,原创不易,转载请注明源链接.我是徐同学,用心输出高质量文章,希望对你有所帮助.本篇文章有些简单,周末水了水了... 文章目录 一.前言 守护线程守护了谁 二.Tomcat主线程 ...

  2. 基于Golang的监听读取配置文件的程序包开发——simpleConfig_v1

    基于Golang的监听&读取配置文件的程序包开发--simpleConfig_v1 [阅读时间:约10分钟] 一.配置文件概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 ...

  3. 6月27日任务 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

    2019独角兽企业重金招聘Python工程师标准>>> 16.4 配置Tomcat监听80端口 1. vim /usr/local/tomcat/conf/server.xml Co ...

  4. linux监听9080,基于UPnP发现与组播技术的IPTV终端实现

    摘 要:本文设计并实现的终端系统工作在mClinux操作系统下,通过应用UPnP中的SSDP服务发现协议,实现在局域网中IPTV终端的自动发现, 并使用IP组播技术将TV视频信号及本地的AV视频信号. ...

  5. 简单读!tomcat源码(一)启动与监听

    tomcat 作为知名的web容器,很棒! 本文简单了从其应用命令开始拆解,让我们对他有清晰的了解,揭开神秘的面纱!(冗长的代码流水线,给你一目了然) 话分两头: 1. tomcat是如何启动的? 2 ...

  6. 配置Tomcat监听80端口 配置Tomcat虚拟主机 Tomcat日志

    配置Tomcat监听80端口 • vim /usr/local/tomcat/conf/server.xml Connector port="8080" protocol=&quo ...

  7. Android事件的响应,Android 开发事件响应之基于监听的事件响应

    Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事 ...

  8. 基于高德地图的描点操作,监听地图缩放,展示合理数量的marker

    原文:基于高德地图的描点操作,监听地图缩放,展示合理数量的marker 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lx583274568/art ...

  9. Tomcat(1)介绍、jdk安装、安装Tomcat ​ 配置Tomcat监听80端口

    Tomcat介绍 (使用yum 下载安装的openjdk下载以后就可以使用) 以下实验用的是在官网下载程序包. Tomcat是一个中间键,要解析java相关的东西,需要先下载JDK 下载jdk 1.下 ...

最新文章

  1. ID3、C4.5、CART树算法简介,这几个算法有什么区别?对于异常值和分类值有什么需要注意的?
  2. UITableView 重用机制
  3. WP7 应用数据存储Tombstoning(墓碑化)篇
  4. python 期货交易_Python期货量化交易基础教程(8)
  5. 采购定价过程字段解析
  6. 打开MSN提示Windows Live Communication Platform遇到问题需要关闭错误的解决方法
  7. Apache实验-目录别名
  8. 可穿戴在线展持续升温:聚焦产业热点 畅谈核心技术发展
  9. 邮政管理部门发话:未获用户同意投放快递柜属违法行为
  10. windows linux复制文件夹命令,ubuntu下复制目录和文件的指令以及和windows下的copy方式...
  11. python内置对象是什么_Python的内置对象类型——元组、文件,python
  12. “十亿赌约”,雷军输,董明珠胜?
  13. (转)Scala中的Some和Option
  14. 盒子横向排列-初识浮动Float(HTML、CSS)
  15. 如何在 iPhone、iPad、Mac 和 PC 上设置 iCloud 照片共享?
  16. 互联网大厂的“中台战略”到底是什么?
  17. R语言中5种正态性检验的方法
  18. python 路径格式化_「原创」「python自学笔记」python编码规范
  19. 认识CleanMyMac 3破解版的危害
  20. 知道创宇优质混合云解决方案,点击了解~

热门文章

  1. SQL注入分类,一看你就明白了。SQL注入点/SQL注入类型/SQL注入有几种/SQL注入点分类
  2. 文件上传漏洞原理/方式/防护
  3. 以太坊ETH不能转账,状态一直是pending状态原因和解决方法
  4. 关于nginx keep-alive 参数的验证和心得
  5. HTML5本地存储——IndexedDB
  6. [NOIP2003] 提高组 洛谷P1041 传染病控制
  7. 关于share prefrences功能的一些理解
  8. PHP 使用header函数设置HTTP头的示例方法 表头(转)
  9. centos---centos配置svn
  10. php json_encode options,json_encode($json,$option) 对变量进行 JSON 编码说明