Java实现留言板功能实例
在Java Web开发中,留言板是一个常见的功能。本文将介绍如何使用Java实现留言板功能。
准备工作
首先要准备的是Java Web开发的基础知识,包括Java Servlet、JSP、HTML、CSS和数据库MySQL的使用。
创建数据库
使用MySQL创建一个名为“message_board”的数据库,其中包含一个名为“message”的表,该表包含id、name、email、subject和message字段。
CREATE DATABASE message_board;
USE message_board;
CREATE TABLE message (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
subject VARCHAR(100) NOT NULL,
message TEXT NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
编写Java Servlet
创建一个名为MessageServlet的Java Servlet,用于处理HTTP请求和响应。使用doGet方法处理GET请求,使用doPost方法处理POST请求。
在doGet方法中,获取数据库中所有留言,并将其传递到JSP页面进行展示。
@WebServlet("/MessageServlet")
public class MessageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private MessageDao messageDao;
public MessageServlet() {
super();
messageDao = new MessageDao();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Message> messages = messageDao.getAllMessages();
request.setAttribute("messages", messages);
request.getRequestDispatcher("message.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String email = request.getParameter("email");
String subject = request.getParameter("subject");
String message = request.getParameter("message");
messageDao.addMessage(name, email, subject, message);
doGet(request, response);
}
}
编写JSP页面
创建一个名为message.jsp的JSP页面,用于展示所有留言和添加新留言。使用JSTL标签库和EL表达式获取Servlet传递的留言列表,并使用HTML和CSS进行样式美化和交互。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>留言板</title>
<style>
body {
font-family: Arial;
}
form {
margin-bottom: 20px;
}
label {
display: block;
font-size: 14px;
font-weight: bold;
margin-bottom: 5px;
}
input[type="text"], textarea {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
margin-bottom: 20px;
}
button[type="submit"] {
background-color: #4CAF50;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
table {
border-collapse: collapse;
width: 100%;
}
th, td {
text-align: left;
padding: 8px;
}
th {
background-color: #4CAF50;
color: white;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<form method="post" action="MessageServlet">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
<label for="email">邮箱:</label>
<input type="text" id="email" name="email" required>
<label for="subject">主题:</label>
<input type="text" id="subject" name="subject" required>
<label for="message">留言:</label>
<textarea id="message" name="message" rows="10" required></textarea>
<button type="submit">提交</button>
</form>
<table>
<tr>
<th>ID</th>
<th>姓名</th>
<th>邮箱</th>
<th>主题</th>
<th>留言</th>
</tr>
<c:forEach var="message" items="${messages}">
<tr>
<td>${message.id}</td>
<td>${message.name}</td>
<td>${message.email}</td>
<td>${message.subject}</td>
<td>${message.message}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
创建数据访问对象
创建一个名为MessageDao的类,用于管理数据库中的留言。使用JDBC API连接数据库,并提供添加留言和获取所有留言的方法。
public class MessageDao {
private final String jdbcUrl = "jdbc:mysql://localhost:3306/message_board?useSSL=false&serverTimezone=UTC";
private final String jdbcUser = "root";
private final String jdbcPassword = "123456";
private Connection conn;
public MessageDao() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public void addMessage(String name, String email, String subject, String message) {
try {
PreparedStatement stmt = conn.prepareStatement("INSERT INTO message (name, email, subject, message) VALUES (?, ?, ?, ?)");
stmt.setString(1, name);
stmt.setString(2, email);
stmt.setString(3, subject);
stmt.setString(4, message);
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Message> getAllMessages() {
List<Message> messages = new ArrayList<>();
try {
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM message");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Message message = new Message();
message.setId(rs.getInt("id"));
message.setName(rs.getString("name"));
message.setEmail(rs.getString("email"));
message.setSubject(rs.getString("subject"));
message.setMessage(rs.getString("message"));
messages.add(message);
}
} catch (SQLException e) {
e.printStackTrace();
}
return messages;
}
}
运行程序
将编写好的代码打包成war文件,并部署到Tomcat服务器上,访问http://localhost:8080/message_board/MessageServlet,即可使用留言板功能。
示例说明
示例一
假设有用户A在留言板上留言“你们的网站做得很好”,此时MessageServlet收到POST请求,将留言存入数据库,并从数据库中获取所有留言,传递到message.jsp页面,以供浏览器展示。用户B在浏览器上看到留言板页面,可以看到用户A的留言,以及自己输入新留言的表单。
示例二
假设有用户C在浏览器上看到留言板页面,可以看到所有留言,包括用户A和用户B的留言。此时MessageServlet收到GET请求,从数据库中获取所有留言,以及存在request请求中,传递到message.jsp页面,以供浏览器展示。用户C可以看到所有留言内容,并进行更多的操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现留言板功能实例 - Python技术站