Spring MVC练习:留言板

目的样式:

需求分析

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>

运行结果:

正常进行输入:

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

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

结果均符合预期

相关推荐
电子_咸鱼8 小时前
动态规划经典题解:单词拆分(LeetCode 139)
java·数据结构·python·算法·leetcode·线性回归·动态规划
李慕婉学姐8 小时前
【开题答辩过程】以《割草机器人工作管理系统的设计与开发》为例,不会开题答辩的可以进来看看
java·spring·机器人
青衫码上行8 小时前
【Java Web学习 | 第七篇】JavaScript(1) 基础知识1
java·开发语言·前端·javascript·学习
堕落年代8 小时前
Spring三级缓存通俗易懂讲解
java·spring·缓存
披着羊皮不是狼9 小时前
多用户博客系统搭建(1):表设计+登录注册接口
java·开发语言·springboot
WX-bisheyuange12 小时前
基于Spring Boot的教师个人成果管理系统的设计与实现
java·spring boot·后端
xunyan623413 小时前
面向对象(上)-封装性的引入
java·开发语言
脸大是真的好~14 小时前
黑马JAVAWeb-05 JDBC入门-预编译SQL-Mybatis入门-Mybatis日志输出-数据库连接池-增删改查-XML映射配置
java
还算善良_14 小时前
XML签名
xml·java·开发语言
梅梅绵绵冰14 小时前
xml方式实现AOP
xml·java·开发语言