实现论坛管理,创建mysql中创建论坛表,包含留言时间、留言IP地址、留言内容并且在servlet程序中实现发表留言、留言显示、删除留言
时间: 2024-05-05 18:15:12 浏览: 84
MySQL创建论坛表的SQL语句:
```
CREATE TABLE `forum` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_time` datetime NOT NULL,
`ip_address` varchar(50) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
其中,`id`为自增长的主键,`create_time`记录留言的时间,`ip_address`记录留言的IP地址,`content`记录留言的内容。
在servlet程序中实现发表留言,可以使用POST请求提交留言内容和IP地址,然后将留言内容和IP地址插入到`forum`表中:
```java
String content = request.getParameter("content");
String ipAddress = request.getRemoteAddr();
Connection conn = null;
try {
conn = getConnection();
String sql = "INSERT INTO forum (create_time, ip_address, content) VALUES (NOW(), ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, ipAddress);
stmt.setString(2, content);
stmt.executeUpdate();
response.sendRedirect("list.jsp"); // 发表成功后跳转到留言列表页面
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConnection(conn);
}
```
在留言显示页面,可以从`forum`表中查询所有留言,并按照时间倒序排列:
```java
Connection conn = null;
try {
conn = getConnection();
String sql = "SELECT * FROM forum ORDER BY create_time DESC";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<ForumMessage> messages = new ArrayList<ForumMessage>();
while (rs.next()) {
ForumMessage message = new ForumMessage();
message.setId(rs.getInt("id"));
message.setCreateTime(rs.getTimestamp("create_time"));
message.setIpAddress(rs.getString("ip_address"));
message.setContent(rs.getString("content"));
messages.add(message);
}
request.setAttribute("messages", messages); // 将留言列表放入request中
request.getRequestDispatcher("list.jsp").forward(request, response); // 转发到留言列表页面
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConnection(conn);
}
```
在删除留言时,可以通过传递留言的`id`参数,从`forum`表中删除对应的留言:
```java
int messageId = Integer.parseInt(request.getParameter("id"));
Connection conn = null;
try {
conn = getConnection();
String sql = "DELETE FROM forum WHERE id=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, messageId);
stmt.executeUpdate();
response.sendRedirect("list.jsp"); // 删除成功后跳转到留言列表页面
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConnection(conn);
}
```
阅读全文