Java项目——表白墙(前后端连接+数据库存储)
创始人
2024-02-03 19:22:59
0

前端的表白墙实现代码在之前的博客中有

Message类

表白墙中的每一个表白信息都由Message对象呈现,其包含form——表白者,to——被表白者,message——表白信息,以及一系列get和set方法

public class Message {private String from;private String to;private String message;public String getFrom() {return from;}public void setFrom(String from) {this.from = from;}public String getTo() {return to;}public void setTo(String to) {this.to = to;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}

messageWall.html

相对于前端实现的版本,这次的messageWall中添加了使用ajax实现用post向服务器提交数据,从后端加载表白信息的方法,使用ajax实现用get向服务器获取数据,并将数据添加到dom树上,让前端可以展现新的数据



Document

表白墙

输入后点击提交,会将信息显示在表格中

表白者
被表白者
表白信息

mysql中的message表

和Message类采用相同的属性命名,类型都是varchar(1024)
在这里插入图片描述

MessageServlet

load方法

和数据库进行连接,将查询到一行表白信息转换成message对象,存储在messageList中并返回

save方法

和数据库进行连接,将参数中的message对象中的三个属性转换为message表中的一行数据,插入到数据库中

doGet方法

调用load方法,获得数据库中的数据,转为messageList,使用上一篇博客中的Jackson的方法将messageList转为json格式发送到前端

doPost方法

得到前端传递过来的json数据,将其转为message对象,调用save方法,将其存储在数据库中,设置状态码为200,打印数据

import com.fasterxml.jackson.databind.ObjectMapper;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;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 javax.sql.DataSource;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;@WebServlet("/message")
public class MessageServlet extends HttpServlet {private ObjectMapper objectMapper = new ObjectMapper();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {List messageList = null;try {messageList = load();} catch (SQLException throwables) {throwables.printStackTrace();}resp.setContentType("application/json; charset=utf-8");resp.getWriter().write(objectMapper.writeValueAsString(messageList));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Message message = objectMapper.readValue(req.getInputStream(),Message.class);try {save(message);} catch (SQLException throwables) {throwables.printStackTrace();}resp.setStatus(200);System.out.println("提交数据成功!" + "form:" + message.getFrom() + " to:" + message.getTo() + " message:" + message.getMessage());}private void save(Message message) throws SQLException {//数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("Lx20030830");//建立连接Connection connection = (Connection) dataSource.getConnection();//构造sql语句String sql = "insert into message values(?, ?, ?)";PreparedStatement statement = connection.prepareStatement(sql);statement.setString(1,message.getFrom());statement.setString(2,message.getTo());statement.setString(3, message.getMessage());//执行插入操作int ret = statement.executeUpdate();System.out.println("ret: " + ret);//关闭连接statement.close();connection.close();}private List load() throws SQLException {//数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("Lx20030830");//建立连接Connection connection = (Connection) dataSource.getConnection();String sql = "select * from message";PreparedStatement statement = connection.prepareStatement(sql);//执行查询操作ResultSet resultSet = statement.executeQuery();//将查询到的信息保存在messageList中List messageList = new ArrayList<>();while(resultSet.next()){Message message = new Message();message.setFrom(resultSet.getString("from"));message.setTo(resultSet.getString("to"));message.setMessage(resultSet.getString("message"));messageList.add(message);}statement.close();connection.close();return messageList;}
}

项目展示

在这里插入图片描述
当点击提交按钮是,数据发送给服务器,服务器处理数据存储在数据库中
在这里插入图片描述
然后,服务器获取数据库中的数据,以json格式发送给前端,前端将其展示在页面上
并且,不论是刷新页面还是重启服务器,数据都不会消失了

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...