17-listener监听器
17-listener监听器
概述
监听器也是我之前一直难以理解的一个东西,一回生二回熟,第二次再听得时候也就能很快接收这个理念了
监听器就是后台的一个一直启动的线程,在监听着它所关注的东西
实践
写一个监听网站当前在线人数的监听器, 只是一个简单的例子,后续需深入研究
SessionCountListener.java
package com.kuang.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 功能描述
*
* @since 2022-08-24
*/
public class SessionCountListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer sessionCount = (Integer) context.getAttribute("SessionCount");
if (sessionCount == null) {
sessionCount = new Integer(1);
} else {
sessionCount += 1;
}
context.setAttribute("SessionCount", sessionCount);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
HttpSessionListener.super.sessionDestroyed(se);
}
}
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>当前<span><%=request.getSession().getServletContext().getAttribute("SessionCount")%></span> 人在线</h1>
</body>
</html>
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">
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>com.kuang.servlet.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/s1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet/s1</url-pattern>
</servlet-mapping>
<filter>
<filter-name>f1</filter-name>
<filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>f1</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.kuang.listener.SessionCountListener</listener-class>
</listener>
</web-app>
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术