SpringMVC04 实现简单的留言墙功能

前言

我们之前实现的前端留言墙功能的缺陷是不能持久化,刷新一下页面就直接没有了,实际上我们应该将数据存储到数据库中做一个硬盘上的持久化,现在我们先做一个简单的前后端交互,使用一个ArrayList来存储,在内存中保存,这样刷新页面也不会导致数据丢失的情况 

但是我们一旦刷新页面就会出现留言板清空的效果,我们现在想做一个基于内存的持久化效果

参数设计

我们希望这个后端页面获取这里的from,to,message三个代码框的信息

首先是第一个页面:发布留言

url:message/publish

参数:使用一个message对象来代替三个参数

返回值: true false

注意这里的新注解@Data

他帮我们实现了以上的get set方法等代码,使得代码看上去更加清晰,我们也可以使用分解注解来单独实现某个方法

@Getter
⾃动添加 getter ⽅法
@Setter
⾃动添加 setter ⽅法
@ToString
⾃动添加 toString ⽅法
@EqualsAndHashCode
⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor
⾃动添加⽆参构造⽅法
@AllArgsConstructor
⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull
属性不能为 null
@RequiredArgsConstructor
⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需

2.查询留言

url:/message/getList

参数:无

返回值 :json串

代码实现

后端代码实现

@RestController
@RequestMapping("/message")
public class messageController {
    private List<message> messageInfos = new ArrayList<>();
    @RequestMapping("/publish")
    public Boolean publish(message msg) {
        //参数校验
        if(!StringUtils.hasLength(msg.getFrom()) || !StringUtils.hasLength(msg.getTo()) || !StringUtils.hasLength(msg.getMessage())) {
            return false;
        }
        messageInfos.add(msg);
        return true;

    }
    @RequestMapping("/getList")
    public List<message> getList() {
        return messageInfos;
    }

}

程序编写完记得使用postman进行一次测试,查看传输值和实际返回值是否与需求相符合

前端代码实现

对于前端的框架代码我们可以去各种网站上获取模板

例如 Bootstrap网站   Bootstrap中文网 (bootcss.com)

这里我将原始代码提供出来

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

下面我们正常使用ajax来进行开发

首先我们来处理getList代码

首先说说ajax的格式

$.ajax({
            url:"/message/getList",           //访问的url
            type:"get",                      //使用什么方式
            success:function(res){           //res是访问成功后url的返回值
            }
        });

我们这里可以访问getList的地址获取其留言信息

这里的返回值和后端设计的端口有关

这里的res就是返回的message列表

我们应该使用一个for循环将其拼接并体现在留言板上

这个含义就是在页面加载之后就调用getList接口,这样就可以获取到内存中存储或者是数据库中存储的信息

$.ajax({
            url:"/message/getList",
            type:"get",
            success:function(res){
                var html = "";
                for (var message of res) {
                    html += "<div>"+message.from +"对" + message.to + "说:" + message.message+"</div>";
                }
                $(".container").append(html);


            }


        });

下面我们处理点击事件,就是这里的提交时间,我们点击了提交按钮之后,应该获取判断文本框

中的内容,注意要先判空,然后进行拼接并展示

function submit(){
            //1. 获取留言的内容
            var from = $('#from').val();
            var to = $('#to').val();
            var message = $('#say').val();
            if (from== '' || to == '' || say == '') {
                return;
            }

            $.ajax({
                url:"/message/publish",
                type:"post",
                data:{
                    from:from,
                    to:to,
                    message:message
                },
                success:function(res){
                    if(res){
                        //3. 把节点添加到页面上
                        var divE = "<div>"+from +"对" + to + "说:" + message+"</div>";
                        $(".container").append(divE);
                        //5. 清空输入框的值
                        $('#from').val("");
                        $('#to').val("");
                        $('#say').val("");
                    }else {
                        alert("输入不合法");
                    }
                }
            });

最后就能实现效果了

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SpringMVC一个开源框架,它可以帮助我们更加轻松地构建Web应用程序。要实现留言功能,我们可以使用SpringMVC的控制器、视图解析器和模型绑定等特性来实现。 首先,我们需要创建一个控制器来处理用户提交留言的请求。在控制器中,我们可以定义一个方法来接收用户提交的留言内容,并将其存储到数据库中。我们可以使用@RequestParam注解来获取用户提交的参数,并将其绑定到方法的参数中。 其次,我们需要定义一个视图来显示留言列表和留言提交表单。在SpringMVC中,我们可以使用Thymeleaf或JSP等模板引擎来创建视图,并使用Model对象来向视图传递数据。我们可以在控制器中将留言列表从数据库中查询出来,并将其存储到Model对象中,然后将其传递给视图进行显示。 最后,我们还需要配置一个视图解析器来将用户请求映射到对应的控制器方法,并将处理结果展示到相应的视图上。在SpringMVC中,我们可以使用@Controller和@RequestMapping注解来定义控制器,并使用@Bean注解来配置视图解析器。 通过以上步骤,我们就可以在SpringMVC实现留言功能了。用户可以通过提交留言的表单来将留言内容存储到数据库中,然后在留言列表页面中查看所有用户留言的内容。整个过程主要涉及到控制器的处理、视图的显示和模型的绑定,通过SpringMVC的特性可以更加方便地实现留言功能
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值