網(wǎng)站建設(shè)市場(chǎng)前景體育新聞最新消息
阿華代碼,不是逆風(fēng),就是我瘋
你們的點(diǎn)贊收藏是我前進(jìn)最大的動(dòng)力!!
希望本文內(nèi)容能夠幫助到你!!
目錄
一:項(xiàng)目實(shí)現(xiàn)準(zhǔn)備
1:需求
2:準(zhǔn)備工作
(1)加入前端代碼
3:預(yù)期結(jié)果
二:約定前后端交互接?
1:需求分析
(1)提交留?
(2)展?留?
2:接口定義
(1) 獲取全部留?
①路徑和格式
②響應(yīng)
③留言信息形式
④總結(jié)
(2)發(fā)表新留?
①路徑和格式
②響應(yīng)
③總結(jié)
三:服務(wù)器代碼實(shí)現(xiàn)
1:定義留?對(duì)象MessageInfo類
2:創(chuàng)建MessageController類
四:完善前端代碼
五:測(cè)試
一:項(xiàng)目實(shí)現(xiàn)準(zhǔn)備
1:需求
(1)輸?留?信息,點(diǎn)擊提交.后端把數(shù)據(jù)存儲(chǔ)起來.
(2)??展?輸?的表?墻的信息
?
2:準(zhǔn)備工作
(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">輸入后點(diǎn)擊提交, 會(huì)將信息顯示下方空白處</p><div class="row"><span>誰:</span> <input type="text" name="" id="from"></div><div class="row"><span>對(duì)誰:</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 對(duì) B 說: hello</div> --></div><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script><script>function submit(){//1. 獲取留言的內(nèi)容var from = $('#from').val();var to = $('#to').val();var say = $('#say').val();if (from== '' || to == '' || say == '') {return;}//2. 構(gòu)造節(jié)點(diǎn)var divE = "<div>"+from +"對(duì)" + to + "說:" + say+"</div>";//3. 把節(jié)點(diǎn)添加到頁面上 $(".container").append(divE);//4. 清空輸入框的值$('#from').val("");$('#to').val("");$('#say').val("");}</script>
</body></html>
3:預(yù)期結(jié)果
二:約定前后端交互接?
1:需求分析
后端需要提供兩個(gè)服務(wù)
(1)提交留?
??輸?留?信息之后,后端需要把留?信息保存起來
(2)展?留?
??展?時(shí),需要從后端獲取到所有的留?信息
2:接口定義
(1) 獲取全部留?
①路徑和格式
請(qǐng)求路徑:/message/getList
請(qǐng)求格式:GET
②響應(yīng)
JSON格式返回
③留言信息形式
全部留?信息,我們?List來表?,可以?JSON來描述這個(gè)List數(shù)據(jù)
④總結(jié)
瀏覽器給服務(wù)器發(fā)送?個(gè)GET /message/getList這樣的請(qǐng)求,就能返回當(dāng)前?共有哪些留?
記錄.結(jié)果以json的格式返回過來.
(2)發(fā)表新留?
①路徑和格式
請(qǐng)求路徑: /message/publish
請(qǐng)求格式:POST
②響應(yīng)
JSON格式返回.
③總結(jié)
我們期望瀏覽器給服務(wù)器發(fā)送?個(gè) POST /message/publish 這樣的請(qǐng)求,就能把當(dāng)前的留?提
交給服務(wù)器
?
三:服務(wù)器代碼實(shí)現(xiàn)
1:定義留?對(duì)象MessageInfo類
@Data
public class MessageInfo {//@Getter//@Setterprivate String from;private String to;private String message;
}
2:創(chuàng)建MessageController類
使?List<MessageInfo>來存儲(chǔ)留?板信息
@RestController
@RequestMapping("/message")
public class MessageController {//定義一個(gè)集合來存儲(chǔ)留言信息private List<MessageInfo> messageInfos = new ArrayList<>();@RequestMapping("/publish")public boolean publish(MessageInfo messageInfo){System.out.println("打印publish日志"+messageInfo);//1:參數(shù)校驗(yàn),存儲(chǔ)結(jié)果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函數(shù),?于在??加載的時(shí)候獲取數(shù)據(jù)
(2)修改原來的點(diǎn)擊事件函數(shù).在點(diǎn)擊按鈕的時(shí)候給服務(wù)器發(fā)送添加留?請(qǐng)求
<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 +"對(duì)" + message.to + "說:" + message.message+"</div>";$("#container").append(finalHtml);}}});}function submit(){//測(cè)試://1. 獲取留言的內(nèi)容,前端校驗(yàn)var from = $('#from').val();var to = $('#to').val();var say = $('#say').val();if (from== '' || to == '' || say == '') {return;}//發(fā)送ajax請(qǐng)求$.ajax({url: "/message/publish",type: "post",data: { //左側(cè)是后端參數(shù),有點(diǎn)像給MessageInfo這個(gè)類進(jìn)行初始化from: $('#from').val(),to: $('#to').val(),message : $('#say').val()},success: function(result){if(result){//2. 構(gòu)造節(jié)點(diǎn)var divE = "<div>"+from +"對(duì)" + to + "說:" + say+"</div>";//3. 把節(jié)點(diǎn)添加到頁面上 $(".container").append(divE);//4. 清空輸入框的值$('#from').val("");$('#to').val("");$('#say').val("");}else{alert("輸入不合法")}}});}</script>
五:測(cè)試
此時(shí)在瀏覽器通過URL:?http://127.0.0.1:8080/messagewall.html 訪問服務(wù)器此時(shí)我們每次提交的數(shù)據(jù)都會(huì)發(fā)送給服務(wù)器,每次打開??的時(shí)候??都會(huì)從服務(wù)器加載數(shù)據(jù).,因此即使關(guān)閉??,數(shù)據(jù)也不會(huì)丟失.
但是數(shù)據(jù)此時(shí)是存儲(chǔ)在服務(wù)器的內(nèi)存中List中,?旦服務(wù)器重啟,數(shù)據(jù)仍然會(huì)丟失.要想數(shù)據(jù)不丟失,需要把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中
?