不用数据库的基于JSP的留言本
时间: 2024-04-26 08:20:34 浏览: 264
如果不使用数据库,实现一个基于JSP的留言本可以使用文件存储数据。具体实现步骤如下:
1. 在JSP中编写表单,包括留言内容和提交按钮。
2. 编写Java Servlet来处理表单提交的数据,将数据存储到文件中。
3. 编写Java Servlet来读取文件中已经存储的留言信息,并在JSP页面中动态生成留言列表展示。
需要注意的是,使用文件存储数据的方式相比数据库来说,读写速度较慢,同时也不方便进行数据的查询和修改。因此,这种方式适合于数据量较小的场景。如果需要支持更多的数据操作和查询功能,建议使用数据库。
相关问题
生成不用数据库的基于JSP的留言本代码
以下是一个简单的不使用数据库的基于JSP的留言本代码示例,仅供参考:
留言本页面(index.jsp):
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>留言本</title>
</head>
<body>
<h1>留言本</h1>
<form action="addMessage" method="post">
<label>留言内容:</label><br>
<textarea name="content" rows="5" cols="50"></textarea><br>
<button type="submit">提交</button>
</form>
<hr>
<h2>留言列表</h2>
<%
// 读取留言列表并动态生成HTML内容
String messagesFile = "/WEB-INF/messages.txt";
String messagesPath = application.getRealPath(messagesFile);
java.io.File file = new java.io.File(messagesPath);
if (file.exists()) {
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
%>
<p><%= line %></p>
<%
}
reader.close();
}
%>
</body>
</html>
```
添加留言的Servlet(AddMessageServlet.java):
```java
import java.io.IOException;
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("/addMessage")
public class AddMessageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 读取提交的留言内容并写入文件
String content = request.getParameter("content");
if (content != null && !content.isEmpty()) {
String messagesFile = "/WEB-INF/messages.txt";
String messagesPath = getServletContext().getRealPath(messagesFile);
java.io.PrintWriter writer = new java.io.PrintWriter(new java.io.FileWriter(messagesPath, true));
writer.println(content);
writer.close();
}
// 重定向到留言本页面
response.sendRedirect(request.getContextPath() + "/index.jsp");
}
}
```
在实现过程中,需要将留言信息存储到一个文本文件中,该文件的路径通过ServletContext对象的getRealPath方法获取。在读取留言列表时,需要先从文件中读取所有留言内容,并动态生成HTML内容展示在页面上。在提交留言时,需要使用HTTP重定向将请求转发到留言本页面。
实现基于JSP的留言本
好的,下面是一个简单的基于JSP的留言本实现步骤。
1. 创建数据库表,用于存储留言信息,包括留言ID、留言人、留言时间、留言内容等字段,例如:
```sql
CREATE TABLE message (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
create_time DATETIME,
content VARCHAR(100)
);
```
2. 编写JavaBean类,用于封装留言信息,例如:
```java
public class Message {
private int id;
private String username;
private Date createTime;
private String content;
// getter和setter方法
// ...
}
```
3. 编写Servlet类,用于接收用户提交的留言信息并将其存储到数据库中,例如:
```java
public class AddMessageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取留言信息
String username = request.getParameter("username");
String content = request.getParameter("content");
// 封装留言信息
Message message = new Message();
message.setUsername(username);
message.setCreateTime(new Date());
message.setContent(content);
// 存储到数据库
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
PreparedStatement ps = conn.prepareStatement("INSERT INTO message(username, create_time, content) VALUES (?, ?, ?)")) {
ps.setString(1, message.getUsername());
ps.setDate(2, new java.sql.Date(message.getCreateTime().getTime()));
ps.setString(3, message.getContent());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
// 跳转到留言列表页面
response.sendRedirect("message.jsp");
}
}
```
4. 编写JSP页面,用于显示留言列表和留言表单,例如:
message.jsp:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>留言列表</title>
</head>
<body>
<h1>留言列表</h1>
<table>
<tr>
<th>ID</th>
<th>留言人</th>
<th>留言时间</th>
<th>留言内容</th>
</tr>
<c:forEach var="message" items="${messages}">
<tr>
<td>${message.id}</td>
<td>${message.username}</td>
<td>${message.createTime}</td>
<td>${message.content}</td>
</tr>
</c:forEach>
</table>
<h1>添加留言</h1>
<form action="addMessage" method="post">
留言人:<input type="text" name="username"><br>
留言内容:<textarea name="content"></textarea><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
5. 在JSP页面中引入JavaBean和Servlet,实现数据的交互和展示,例如:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.List" %>
<%@ page import="com.example.Message" %>
<%@ page import="java.sql.*" %>
<%
// 从数据库中读取留言列表
List<Message> messages = new ArrayList<>();
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM message ORDER BY create_time DESC")) {
while (rs.next()) {
Message message = new Message();
message.setId(rs.getInt("id"));
message.setUsername(rs.getString("username"));
message.setCreateTime(rs.getDate("create_time"));
message.setContent(rs.getString("content"));
messages.add(message);
}
} catch (SQLException e) {
e.printStackTrace();
}
// 将留言列表传递给JSP页面
request.setAttribute("messages", messages);
%>
<%@include file="message.jsp" %>
```
这样,一个简单的基于JSP的留言本就实现了。用户可以在留言列表页面查看已经提交的留言,并在添加留言页面提交新的留言。需要注意的是,本示例仅供参考,实际应用中需要根据具体需求进行修改和优化。
阅读全文