JSP(Java Server Pages)结合MySQL数据库实现一个简单的留言板是一个常见的Web开发任务。以下是一个基础的示例,包括前端页面和后端处理逻辑。
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>留言板</title>
</head>
<body>
<h1>留言板</h1>
<form action="submit_message.jsp" method="post">
用户名:<input type="text" name="username"><br>
内容:<textarea name="content"></textarea><br>
<input type="submit" value="提交">
</form>
<h2>留言列表</h2>
<%@ page import="java.sql.*" %>
<%
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM messages ORDER BY created_at DESC");
while (rs.next()) {
out.println("<p><strong>" + rs.getString("username") + "</strong> (" + rs.getTimestamp("created_at") + "): " + rs.getString("content") + "</p>");
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
out.println("数据库连接失败:" + e.getMessage());
}
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String username = request.getParameter("username");
String content = request.getParameter("content");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "password");
String sql = "INSERT INTO messages (username, content) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, content);
pstmt.executeUpdate();
pstmt.close();
conn.close();
response.sendRedirect("index.jsp");
} catch (Exception e) {
out.println("留言提交失败:" + e.getMessage());
}
%>
PreparedStatement
代替Statement
来防止SQL注入攻击。通过以上步骤,你可以构建一个基本的JSP+MySQL留言板应用。在实际开发中,还需考虑更多的安全性和性能优化措施。
领取专属 10元无门槛券
手把手带您无忧上云