提供一个javaweb项目中实现一个简单的聊天室完整代码
时间: 2024-04-30 19:21:42 浏览: 13
好的,以下是一个简单的基于JavaWeb的聊天室的完整代码:
1. 创建一个名为ChatRoom的工程
2. 创建一个名为ChatServlet的servlet
```java
package com.example.chatroom;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/chat")
public class ChatServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static List<String> messages = new ArrayList<String>();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = request.getParameter("message");
if (message != null && !message.isEmpty()) {
messages.add(message);
}
request.setAttribute("messages", messages);
request.getRequestDispatcher("/WEB-INF/views/chat.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
```
3. 在ChatServlet中使用JSP来实现聊天室的UI
在src/main/webapp/WEB-INF/views/目录下创建chat.jsp文件,内容如下:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Chat Room</title>
</head>
<body>
<h1>Chat Room</h1>
<form method="post" action="${pageContext.request.contextPath}/chat">
<input type="text" name="message">
<button type="submit">Send</button>
</form>
<hr>
<ul>
<c:forEach items="${messages}" var="message">
<li>${message}</li>
</c:forEach>
</ul>
</body>
</html>
```
4. 在ChatServlet中使用WebSocket来实现聊天室的实时通信
首先在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>8.0.9</version>
</dependency>
```
然后修改ChatServlet中的doGet方法,添加WebSocket的支持:
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = request.getParameter("message");
if (message != null && !message.isEmpty()) {
messages.add(message);
for (Session session : sessions) {
session.getBasicRemote().sendText(message);
}
}
request.setAttribute("messages", messages);
request.getRequestDispatcher("/WEB-INF/views/chat.jsp").forward(request, response);
}
private static List<Session> sessions = new ArrayList<>();
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnMessage
public void onMessage(String message, Session session) {
try {
for (Session s : sessions) {
s.getBasicRemote().sendText(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
```
最后,在ChatServlet中添加WebSocket的注解:
```java
@WebServlet(urlPatterns = { "/chat" })
@ServerEndpoint("/chat")
public class ChatServlet extends HttpServlet {
// ...
}
```
这样就完成了一个简单的基于JavaWeb的聊天室。