当前位置: 首页 > news >正文

【Spring项目】表白墙,留言板项目的实现

8e19eee2be5648b78d93fbff2488137b.png

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:项目实现准备

1:需求

2:准备工作

(1)加入前端代码

3:预期结果

二:约定前后端交互接⼝

1:需求分析

(1)提交留⾔

(2)展⽰留⾔

2:接口定义

(1) 获取全部留⾔

①路径和格式

②响应

③留言信息形式

④总结

(2)发表新留⾔

①路径和格式

②响应

③总结

三:服务器代码实现

1:定义留⾔对象MessageInfo类

2:创建MessageController类

四:完善前端代码

五:测试


一:项目实现准备

1:需求

(1)输⼊留⾔信息,点击提交.后端把数据存储起来.
(2)⻚⾯展⽰输⼊的表⽩墙的信息
 

2:准备工作

(1)加入前端代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>留言板</title><style>.container {width: 350px;height: 300px;margin: 0 auto;/* border: 1px black solid; */text-align: center;}.grey {color: grey;}.container .row {width: 350px;height: 40px;display: flex;justify-content: space-between;align-items: center;}.container .row input {width: 260px;height: 30px;}#submit {width: 350px;height: 40px;background-color: orange;color: white;border: none;margin: 10px;border-radius: 5px;font-size: 20px;}</style>
</head><body><div class="container"><h1>留言板</h1><p class="grey">输入后点击提交, 会将信息显示下方空白处</p><div class="row"><span>谁:</span> <input type="text" name="" id="from"></div><div class="row"><span>对谁:</span> <input type="text" name="" id="to"></div><div class="row"><span>说什么:</span> <input type="text" name="" id="say"></div><input type="button" value="提交" id="submit" onclick="submit()"><!-- <div>A 对 B 说: hello</div> --></div><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script><script>function submit(){//1. 获取留言的内容var from = $('#from').val();var to = $('#to').val();var say = $('#say').val();if (from== '' || to == '' || say == '') {return;}//2. 构造节点var divE = "<div>"+from +"对" + to + "说:" + say+"</div>";//3. 把节点添加到页面上    $(".container").append(divE);//4. 清空输入框的值$('#from').val("");$('#to').val("");$('#say').val("");}</script>
</body></html>

3:预期结果

二:约定前后端交互接⼝

1:需求分析

后端需要提供两个服务

(1)提交留⾔

⽤⼾输⼊留⾔信息之后,后端需要把留⾔信息保存起来

(2)展⽰留⾔

⻚⾯展⽰时,需要从后端获取到所有的留⾔信息

2:接口定义

(1) 获取全部留⾔

①路径和格式

请求路径:/message/getList
请求格式:GET

②响应

JSON格式返回

③留言信息形式

全部留⾔信息,我们⽤List来表⽰,可以⽤JSON来描述这个List数据

④总结

浏览器给服务器发送⼀个GET /message/getList这样的请求,就能返回当前⼀共有哪些留⾔
记录.结果以json的格式返回过来.

(2)发表新留⾔

①路径和格式

请求路径: /message/publish
请求格式:POST

②响应

JSON格式返回.

③总结

我们期望浏览器给服务器发送⼀个 POST /message/publish 这样的请求,就能把当前的留⾔提
交给服务器
 

三:服务器代码实现

1:定义留⾔对象MessageInfo类

@Data
public class MessageInfo {//@Getter//@Setterprivate String from;private String to;private String message;
}

2:创建MessageController类

使⽤List<MessageInfo>来存储留⾔板信息

@RestController
@RequestMapping("/message")
public class MessageController {//定义一个集合来存储留言信息private List<MessageInfo> messageInfos = new ArrayList<>();@RequestMapping("/publish")public boolean publish(MessageInfo messageInfo){System.out.println("打印publish日志"+messageInfo);//1:参数校验,存储结果if(!StringUtils.hasLength(messageInfo.getTo())|| !StringUtils.hasLength(messageInfo.getFrom())|| !StringUtils.hasLength(messageInfo.getMessage())){return false;}messageInfos.add(messageInfo);return true;}@RequestMapping("/getList")public List<MessageInfo> getList(){System.out.println("打印getList日志");return messageInfos;}
}

四:完善前端代码

(1)添加load函数,⽤于在⻚⾯加载的时候获取数据

(2)修改原来的点击事件函数.在点击按钮的时候给服务器发送添加留⾔请求

    <script>load();function load(){$.ajax({type: "get",url: "/message/getList",success: function(result){for(var message of result){//类似for(Message message : messageInfos)var finalHtml = "<div>" + message.from +"对" + message.to + "说:" + message.message+"</div>";$("#container").append(finalHtml);}}});}function submit(){//测试://1. 获取留言的内容,前端校验var from = $('#from').val();var to = $('#to').val();var say = $('#say').val();if (from== '' || to == '' || say == '') {return;}//发送ajax请求$.ajax({url: "/message/publish",type: "post",data: { //左侧是后端参数,有点像给MessageInfo这个类进行初始化from: $('#from').val(),to: $('#to').val(),message : $('#say').val()},success: function(result){if(result){//2. 构造节点var divE = "<div>"+from +"对" + to + "说:" + say+"</div>";//3. 把节点添加到页面上    $(".container").append(divE);//4. 清空输入框的值$('#from').val("");$('#to').val("");$('#say').val("");}else{alert("输入不合法")}}});}</script>

五:测试

此时在浏览器通过URL: http://127.0.0.1:8080/messagewall.html 访问服务器
此时我们每次提交的数据都会发送给服务器,每次打开⻚⾯的时候⻚⾯都会从服务器加载数据.,因此即使关闭⻚⾯,数据也不会丢失.

但是数据此时是存储在服务器的内存中List中,⼀旦服务器重启,数据仍然会丢失.要想数据不丢失,需要把数据存储在数据库中
 

http://www.lryc.cn/news/500189.html

相关文章:

  • 分布式事务-nacos/seata在windows环境下部署及开发
  • 分布式微服务架构下的密码安全性方案
  • 基于pytorch的深度学习基础4——损失函数和优化器
  • 网络安全信息收集(总结)更新
  • web斗地主游戏实现指北
  • SpringMVC其他扩展
  • 【Linux】网络服务
  • 工作:SolidWorks从3D文件导出2D的DWG或DXF类型文件方法
  • IDL学习笔记(五)MODIS数据(Grid)
  • JavaScript语言介绍
  • Lua使用点号和冒号的区别
  • LLM - 开源视觉多模态 LLaVA-CoT(o1) 深度推理模型 测试与源码 教程
  • Ansible的yum和saltstack的哪个功能相似
  • paimon0.9记录
  • Java 中 List 接口的学习笔记
  • 【原生js案例】webApp实现鼠标移入移出相册放大缩小动画
  • LVGL9 定时器模块
  • Qt学习笔记第51到60讲
  • 网页设计--axios作业
  • SpringBoot 整合 Avro 与 Kafka 详解
  • 若依 ruoyi VUE el-select 直接获取 选择option 的 label和value
  • 大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
  • 修改MySQL存储路径
  • Git常用的命令【提交与回退】
  • 详解:HTTP/HTTPS协议
  • 0.96寸OLED---STM32
  • 保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码
  • 常用Vim操作
  • 【C#】NET 9中LINQ的新特性-CountBy
  • Trimble X9三维激光扫描仪高效应对化工厂复杂管道扫描测绘挑战【沪敖3D】