JAVAweb简易聊天的代码
时间: 2023-03-19 19:23:34 浏览: 85
以下是一个简单的JavaWeb聊天室的代码示例:
前端页面(index.jsp):
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>聊天室</title>
<script type="text/javascript">
var webSocket;
function connect() {
webSocket = new WebSocket("ws://localhost:8080/ChatRoom/chat");
webSocket.onmessage = function(event) {
showMessage(event.data);
};
}
function showMessage(message) {
var messageArea = document.getElementById("messageArea");
messageArea.innerHTML += "<br>" + message;
}
function sendMessage() {
var messageInput = document.getElementById("messageInput");
webSocket.send(messageInput.value);
messageInput.value = "";
}
</script>
</head>
<body onload="connect()">
<div>
<h2>聊天室</h2>
<div id="messageArea" style="border:1px solid black; width:300px; height:300px; overflow:auto;"></div>
<input type="text" id="messageInput">
<input type="button" value="发送" onclick="sendMessage()">
</div>
</body>
</html>
```
后端处理器(ChatHandler.java):
```java
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/chat")
public class ChatHandler {
private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
for(Session s : sessions) {
s.getBasicRemote().sendText(message);
}
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
}
```
在这个例子中,前端页面使用WebSocket来与后端处理器进行通信。后端处理器使用@ServerEndpoint注释将WebSocket端点映射到URI "/chat",并使用Set来管理所有连接的会话。当新的会话加入时,它会添加到sessions集合中。当会话关闭时,它会从sessions集合中删除。当一个会话发送消息时,它将遍历sessions集合并向每个会话发送消息。在前端页面中,当页面加载时,它会通过WebSocket连接到后端处理器,并在接收到新消息时更新消息区域。当用户单击“发送”按钮时,它会将文本框中的消息发送到后端处理器。