JavaWeb-监听器入门
2020-04-29 16:05:57来源:博客园 阅读 ()
JavaWeb-监听器入门
监听器
目录
OnlineCountListener.java
package com.huangdekai.JavaWeb.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @Autord: HuangDekai
* @Date: 2020/4/28 22:41
* @Version: 1.0
* @since: jdk11
*/
public class OnlineCountListener implements HttpSessionListener {
// 创建session监听
// 一旦创建Session就会触发一次这个事件
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
if (onlineCount == null) {
onlineCount = 1;
}
else{
onlineCount += 1;
}
servletContext.setAttribute("OnlineCount",onlineCount);
}
// 销毁session监听
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
if (onlineCount == null) {
onlineCount = 0;
}
else {
onlineCount -= 1;
}
servletContext.setAttribute("OnlineCount",onlineCount);
}
}
思路就是从ServeletContext获取一个键为OnlineCount的值,由于Session监听器是每创建一个Session就会触发一次sessionCreated,则当有Session创建时(表示有了一个在线)就对其获取,如果为空,证明没有Session,创建一个,设值为1;如果不为空,证明有Session,键为OnlinCount的值+1。最后将更新的值提交到ServletContext上。
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>当前在线人数:<span><%=getServletConfig().getServletContext().getAttribute("OnlineCount")%></span></h2>
</body>
</html>
前端页面将该值展示。
web.xml
类似于servlet或者过滤器,要在web.xml中配置路径。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<listener>
<listener-class>com.huangdekai.JavaWeb.listener.OnlineCountListener</listener-class>
</listener>
</web-app>
配置好后启动Tomcat。
结果
可以看到,在线人数是2(有其他是3的情况),此处涉及到的问题未曾得解。推测是Tomcat内部的一些关闭浏览器后重启的操作。
可以通过热部署->刷新的方式消除。
根据Session的特性,同个浏览器多次访问这个页面:
用另一个浏览器访问:
再刷新原来的浏览器:
原文链接:https://www.cnblogs.com/duzhuan/p/12799429.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Maven下载与安装
下一篇:java和python的比较
- logstash系列-入门整理 2020-06-10
- Java 入门教程 2020-06-09
- RocketMQ4.4 入门进阶+实战 2020-06-08
- 因为 MongoDB 没入门,我丢了一份实习工作 2020-06-07
- Java 从入门到精通-反射机制 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash