Spring MVC练习:留言板
目的样式:
需求分析
1.输入相关信息,点击提交后,后端把数据存储起来.
2.用户访问时,后端输出数据到前端显示留言板的留言信息.
3.用户留言后,添加留言板留言.
约定接口
1.获取留言信息.
访问路径/message/getList,响应为JSON格式.
2.发表新留言
访问路径/message/publish,请求应包含留言信息.响应为留言是否成功(true/false).
后端代码实现
首先要有一个表示留言信息的类.在处理类中包含这个信息类的list,在发表留言的方法中对留言信息进行判断,如果留言不合法则返回false,合法则放入list并返回true.
@Getter @Setter
@ToString
public class MessageInfo {private String from;private String to;private String message;
}
@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则告知用户输入不合法.
<!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 = "";//foreachfor (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>
运行结果:
正常进行输入:
进行错误的提交:不输入对谁说
重新访问页面,观察展示留言是否正常.
结果均符合预期