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

简介: 本文主要介绍了表白墙项目的实现,包含前端和后端代码,以及测试

  image.gif 编辑

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

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

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

目录

一:项目实现准备

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>

image.gif

image.gif 编辑

3:预期结果

image.gif 编辑

二:约定前后端交互接⼝

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
    //@Setter
    private String from;
    private String to;
    private String message;
}

image.gif

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;
    }
}

image.gif

四:完善前端代码

(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>

image.gif

五:测试

此时在浏览器通过URL: http://127.0.0.1:8080/messagewall.html 访问服务器

image.gif 编辑此时我们每次提交的数据都会发送给服务器,每次打开⻚⾯的时候⻚⾯都会从服务器加载数据.,因此即使关闭⻚⾯,数据也不会丢失.

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

相关文章
|
2月前
|
前端开发 Java
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
文章通过一个表白墙/留言墙的初级SpringBoot项目实例,详细讲解了如何进行前后端开发,包括定义前后端交互接口、创建SpringBoot项目、编写前端页面、后端代码逻辑及实体类封装的全过程。
104 3
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
77 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
5月前
|
测试技术 数据库 数据安全/隐私保护
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)(2)
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)
60 0
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)(2)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的研学自习室选座与门禁系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的研学自习室选座与门禁系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的“我爱我家”地方特色农产品商城的详细设计和实现
基于SpringBoot+Vue的“我爱我家”地方特色农产品商城的详细设计和实现
49 2
|
7月前
|
Java BI 数据库
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
100 0
|
5月前
|
Java 关系型数据库 MySQL
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)(1)
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)
67 0
|
7月前
|
JavaScript Java 关系型数据库
springboot+vue新生宿舍管理系统(源码+说明文档)
SpringBoot新生宿舍管理系统是一个Java开发者分享的项目介绍。系统基于SpringBoot开发,采用JDK1.8、Tomcat7和MySQL 5.7+,并使用Navicat11作为数据库工具,前后端分别为Java和Vue。系统架构包括管理员和学生两个功能模块,涉及公告管理、班级管理、学生管理、卫生检查、报修管理和缴费管理等多个功能点,提供详细的界面截图和操作说明。此外,还提及了针对面试的Java学习资源推荐。
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的“爱相连”儿童慈善管理系统的详细设计和实现
基于SpringBoot+Vue的“爱相连”儿童慈善管理系统的详细设计和实现
44 0
|
7月前
|
数据管理 Java 测试技术
springboot+vue心灵治愈交流平台(源码+文档)
心灵治愈交流平台实现了以下功能: 管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员来管理后台系统。主要功能有:首页、个人中心、系统公告管理、用户管理、心理咨询师管理、心灵专栏管理、压力测试管理、测试数据管理、咨询师预约管理、小纸条管理、系统管理等功能。 用户:首页、个人中心、测试数据管理、咨询师预约管理、小纸条管理等功能。 心理咨询师:首页、个人中心、咨询师预约管理、系统管理等功能

热门文章

最新文章