以下是一个简单的JSP聊天室源代码示例:
ChatRoom.jsp
页面<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>简单聊天室</title>
<script type="text/javascript">
function sendMessage() {
var message = document.getElementById("message").value;
var xhr = new XMLHttpRequest();
xhr.open("POST", "SendMessageServlet", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("message=" + encodeURIComponent(message));
document.getElementById("message").value = "";
}
</script>
</head>
<body>
<h1>简单聊天室</h1>
<div id="chatArea">
<%@ include file="DisplayMessages.jsp" %>
</div>
<input type="text" id="message" placeholder="输入消息">
<button onclick="sendMessage()">发送</button>
</body>
</html>
SendMessageServlet.java
Servletimport 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("/SendMessageServlet")
public class SendMessageServlet extends HttpServlet {
private static List<String> messages = new ArrayList<>();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String message = request.getParameter("message");
messages.add(message);
response.sendRedirect("ChatRoom.jsp");
}
}
DisplayMessages.jsp
页面<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
List<String> messages = (List<String>) application.getAttribute("messages");
if (messages != null) {
for (String message : messages) {
out.println("<p>" + message + "</p>");
}
}
%>
web.xml
(如果使用注解方式可以省略)<web-app>
<servlet>
<servlet-name>SendMessageServlet</servlet-name>
<servlet-class>SendMessageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SendMessageServlet</servlet-name>
<url-pattern>/SendMessageServlet</url-pattern>
</servlet-mapping>
</web-app>
JSP(JavaServer Pages):是一种用于创建动态Web页面的技术,允许在HTML或XML文档中嵌入Java代码片段和表达式。
Servlet:是Java编写的服务器端程序,用于处理客户端请求并生成动态响应。
page
、include
、taglib
。问题1:消息不显示
DisplayMessages.jsp
没有正确获取到消息列表。SendMessageServlet
将消息添加到application
作用域,并且在DisplayMessages.jsp
中正确读取。问题2:页面刷新慢
示例代码中已经使用了AJAX来优化用户体验。
希望这个示例能帮助你理解JSP聊天室的基本实现和相关概念。如果有更多具体问题,欢迎继续提问!
领取专属 10元无门槛券
手把手带您无忧上云