目的样式:

需求分析
1.输入相关信息,点击提交后,后端把数据存储起来.
2.用户访问时,后端输出数据到前端显示留言板的留言信息.
3.用户留言后,添加留言板留言.
约定接口
1.获取留言信息.
访问路径/message/getList,响应为JSON格式.
2.发表新留言
访问路径/message/publish,请求应包含留言信息.响应为留言是否成功(true/false).
后端代码实现
首先要有一个表示留言信息的类.在处理类中包含这个信息类的list,在发表留言的方法中对留言信息进行判断,如果留言不合法则返回false,合法则放入list并返回true.
java
@Getter @Setter
@ToString
public class MessageInfo {
private String from;
private String to;
private String message;
}
java
@RestController
@RequestMapping("/message")
public class Message {
List<MessageInfo> list = new ArrayList<>();
@RequestMapping("/getList")
public List<MessageInfo> getList() {
return list;
}
@RequestMapping("/publish")
public boolean publish(MessageInfo messageInfo) {
System.out.println(messageInfo);
if(!StringUtils.hasLength(messageInfo.getFrom())
|| !StringUtils.hasLength(messageInfo.getTo())
|| !StringUtils.hasLength(messageInfo.getMessage())) {
//其中一个为空
return false;
}
list.add(messageInfo);
return true;
}
}
前端代码实现
在展示留言的方法中,接收后端传来的留言list,循环构造留言信息并打印.在发布留言的方法中,接受后端传来的处理结果,为true则展示留言信息,false则告知用户输入不合法.
html
<!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="message">
</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>
$.ajax({
url: "/message/getList",
type: "get",
success: function (messageInfos) {
var finalHtml = "";
//foreach
for (var messageInfo of messageInfos) {
finalHtml += '</div>' + messageInfo.from + '对' + messageInfo.to + '说:' + messageInfo.message + '</div></br>';
}
$(".container").append(finalHtml);
}
});
function submit() {
//1. 获取留言的内容
var from = $('#from').val();
var to = $('#to').val();
var message = $('#message').val();
$.ajax({
url: "/message/publish",
type: "post",
data: {
//后端:前端变量
from: from,
to: to,
message: message
},
success: function (result) {
if (result) {
//2. 构造节点
var divE = "<div>" + from + "对" + to + "说:" + message + "</div>";
//3. 把节点添加到页面上
$(".container").append(divE);
//4. 清空输入框的值
$('#from').val("");
$('#to').val("");
$('#message').val("");
}else{
alert("输入不合法!");
}
}
});
}
</script>
</body>
</html>
运行结果:
正常进行输入:

进行错误的提交:不输入对谁说

重新访问页面,观察展示留言是否正常.

结果均符合预期