JSP(JavaServer Pages)是一种基于Java技术的动态网页技术,它允许在HTML或XML等静态页面中嵌入Java代码,从而实现动态内容的生成和处理。下面是一个简单的JSP网站留言板的源代码示例:
首先,需要在数据库中创建一个表来存储留言信息。假设使用MySQL数据库,表结构如下:
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
index.jsp
)<%@ 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="name"><br><br>
邮箱: <input type="text" name="email"><br><br>
留言: <textarea name="message" rows="4" cols="50"></textarea><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
submit_message.jsp
)<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>留言提交</title>
</head>
<body>
<%
String name = request.getParameter("name");
String email = request.getParameter("email");
String message = request.getParameter("message");
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");
String sql = "INSERT INTO messages (name, email, message) VALUES (?, ?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, email);
pstmt.setString(3, message);
pstmt.executeUpdate();
out.println("留言提交成功!");
} catch (Exception e) {
out.println("留言提交失败:" + e.getMessage());
} finally {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
%>
<a href="index.jsp">返回留言板</a>
</body>
</html>
view_messages.jsp
)<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查看留言</title>
</head>
<body>
<h1>所有留言</h1>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM messages ORDER BY created_at DESC");
%>
<table border="1">
<tr>
<th>姓名</th>
<th>邮箱</th>
<th>留言</th>
<th>时间</th>
</tr>
<% while (rs.next()) { %>
<tr>
<td><%= rs.getString("name") %></td>
<td><%= rs.getString("email") %></td>
<td><%= rs.getString("message") %></td>
<td><%= rs.getTimestamp("created_at") %></td>
</tr>
<% } %>
</table>
<%
} catch (Exception e) {
out.println("读取留言失败:" + e.getMessage());
} finally {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}
%>
<a href="index.jsp">返回留言板</a>
</body>
</html>
将上述JSP文件部署到支持JSP的Web服务器(如Apache Tomcat)上,并确保数据库连接信息正确无误。访问index.jsp
页面即可开始使用留言板功能。
原因:可能是数据库服务器未启动、连接字符串错误、用户名或密码错误。 解决方法:检查数据库服务器状态,确认连接字符串、用户名和密码是否正确。
原因:直接拼接SQL语句可能导致SQL注入攻击。 解决方法:使用预编译语句(PreparedStatement)来防止SQL注入。
原因:字符编码不一致可能导致乱码问题。 解决方法:确保JSP页面和数据库连接的字符编码一致,通常设置为UTF-8。
通过以上步骤和代码示例,你可以搭建一个简单的JSP留言板系统。如果有更多具体问题或需要进一步的优化,欢迎继续咨询。
领取专属 10元无门槛券
手把手带您无忧上云