【Web】基于Servlet、Tomcat、HTTP协议、html、js、css实现的表白墙(数据可持久化保存至硬盘中)博客主页:敲代码的布莱恩特
欢迎点赞 收藏 ⭐留言 欢迎讨论!
本文由 【敲代码的布莱恩特】 原创,首发于 CSDN
由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!✨
精品专栏(不定时更新)【JavaSE】 【Java数据结构】【LeetCode】
网页实现效果如下Tomcat配置项目文件目录MessageServletweb.xml表白墙.htmlpom.xml
网页实现效果如下 Tomcat配置 项目文件目录 MessageServletimport com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
class Message{
public String from;
public String to;
public String message;
}
@WebServlet("/message")
public class MessageServlet extends HttpServlet {
private ObjectMapper objectMapper = new ObjectMapper();
//private List messageList = new ArrayList();
// 这个是保存文件的路径
private String filePath = "D:/Git/java/messagewall/messages.txt";
//这个方法用来处理从服务器获取到消息数据
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("application/json;charset=utf-8");
List messageList = load();
objectMapper.writevalue(resp.getWriter(), messageList);
}
private List load() {
// 这个方法负责读文件, 把读到的数据获取到之后, 放到 List 中
List messageList = new ArrayList<>();
System.out.println("从文件加载!");
// 此处我们需要按行读取. FileReader 本身不支持. 需要套上一层 BufferedReader
// 当然这里使用 Scanner 也行
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) {
while (true) {
String line = bufferedReader.readLine();
if (line == null) {
break;
}
// 如果读取到 line 的内容, 就把 line 解析成一个 Message 对象
String[] tokens = line.split("t");
Message message = new Message();
message.from = tokens[0];
message.to = tokens[1];
message.message = tokens[2];
messageList.add(message);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("从数据库读取数据!");
return messageList;
}
// 这个方法用来处理, 从客户端提交数据给服务器
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Message message = objectMapper.readValue(req.getInputStream(), Message.class);
// 在这里, 要进行一个 "写文件" 操作
save(message);
resp.setContentType("application/json;charset=utf-8");
resp.getWriter().write("{"ok": 1}");
}
private void save(Message message) {
System.out.println("向文件中写入数据!");
// FileWriter 的使用方法, 就和咱们前面介绍过的 PrintWriter 差不多. 里面都是有一个关键的方法叫做 write
try (FileWriter fileWriter = new FileWriter(filePath, true)) {
// 写入文件的格式也有很多方式. 可以直接写 json, 也可以使用行文本(每个记录占一行, 字段之间使用分隔符区分)
fileWriter.write(message.from + "t" + message.to + "t" + message.message + "n");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("向数据库中写入数据!");
}
}
web.xml
表白墙.htmlArchetype Created Web Application
document
表白墙
输入后点击提交, 会将信息显示在表格中
谁:
对谁:
说什么:
pom.xml
引入所需依赖
4.0.0 org.example messagewall 1.0-SNAPSHOT org.apache.maven.plugins maven-compiler-plugin 7 7 javax.servlet javax.servlet-api 3.1.0 provided com.fasterxml.jackson.core jackson-databind 2.13.1



