Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)
Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)
摘要:本实验基于Jakarta EE框架,使用IntelliJ IDEA 2025.2创建项目,实现一个简易的Web聊天室系统,重点强调Servlet Filter和Listener的应用。实验严格遵循您提供的目的、要求和关键实现点。
注意:
- 本实验假设您已安装IntelliJ IDEA 2025.2、JDK 17+(推荐)和Maven(IDEA内置支持)。我们将使用Tomcat作为服务器(IDEA可内置配置)。
- 项目使用Maven构建,依赖Jakarta EE API。聊天室是简易版本,使用ServletContext共享数据(在线用户列表、消息列表、在线会话数),数据是非持久化的(服务器重启后丢失)。
- Filter和Listener的实现体现了请求链控制(Filter)和全局状态管理(Listener)。
- 测试时,需要部署到Tomcat服务器运行。敏感词过滤假设替换"bad"和"evil"为"**"(可扩展)。
- 代码解释将穿插在相关步骤中,以突出关键知识点(如Filter的工作原理、Listener的类型与作用、执行顺序等)。
一、实验步骤
步骤1: 创建Jakarta EE项目
- 打开IntelliJ IDEA 2025.2。
- 点击“File” > “New” > “Project”。
- 在左侧选择“Java Enterprise”(Jakarta EE框架)。
- 配置项目:
- 项目名称:如“ChatRoomWithFiltersListeners”。
- Location:选择目录。
- Language:Java。
- Build System:Maven(推荐,便于依赖管理)。
- JDK:17+。
- Application Server:添加Tomcat(如果未配置,下载Tomcat 10+,支持Jakarta EE)。
- Specifications:勾选“Web Profile”(包括Servlet、JSP等)。
- 点击“Create”。
- 项目结构将自动生成:
src/main/java
:存放Java代码(Servlets、Filters、Listeners)。src/main/webapp
:存放Web资源(如JSP、web.xml)。pom.xml
:Maven配置文件。
步骤2: 配置pom.xml(添加Jakarta EE依赖)
更新pom.xml
添加Jakarta EE API依赖(用于Servlet、Filter、Listener)和Tomcat插件。完整pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>simplechatroom</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><dependencies><!-- Jakarta EE API (includes Servlet, JSP) --><dependency><groupId>jakarta.platform</groupId><artifactId>jakarta.jakartaee-api</artifactId><version>10.0.0</version><scope>provided</scope></dependency></dependencies><build><plugins><!-- 使用Cargo插件运行Tomcat 10+(替换原tomcat7插件) --><plugin><groupId>org.codehaus.cargo</groupId><artifactId>cargo-maven3-plugin</artifactId><version>1.10.13</version> <!-- 最新稳定版,支持Tomcat 10 --><configuration><container><containerId>tomcat10x</containerId> <!-- 指定Tomcat 10+ --><type>installed</type> <!-- 使用本地安装的Tomcat --><home>D:\IDE\JAVA\apache-tomcat-10.1.44</home> <!-- 替换为您的Tomcat 10.1.44安装目录!例如:/Users/yourname/apache-tomcat-10.1.44 --></container><configuration><type>existing</type> <!-- 使用现有Tomcat安装 --><home>D:\IDE\JAVA\apache-tomcat-10.1.44</home> <!-- 同上,替换为您的路径 --></configuration><deployables><deployable><groupId>${project.groupId}</groupId><artifactId>${project.artifactId}</artifactId><type>war</type><properties><context>/</context> <!-- 部署到根路径 --></properties></deployable></deployables></configuration></plugin></plugins></build>
</project>
代码解释:
jakarta.jakartaee-api