【JavaEE进阶】Spring留言板实现

目录

🎍预期结果

🍀前端代码

🎄约定前后端交互接口

🚩需求分析

🚩接口定义

🌳实现服务器端代码

🚩lombok介绍

🚩代码实现

🌴运行测试

🎄前端代码实现

🚩获取列表

🚩实现"提交"


🎍预期结果

可以发布并显示

点击提交后,显示并清除输入框

并且再次刷新后,不会清除下面的缓存

🍀前端代码

由于本文章主要讲述后端相关内容,这里就不做过多讲解前端了

前端代码如下:

🎄约定前后端交互接口

🚩需求分析

后端需要提供两个服务

  1. 提交留⾔:⽤⼾输⼊留⾔信息之后,后端需要把留⾔信息保存起来
  2. 展⽰留⾔:⻚⾯展⽰时,需要从后端获取到所有的留⾔信息

🚩接口定义

  • 1. 提交(发布留言,保存到后端)

请求:

url:/message/publish

type: post

参数:Json

响应:操作成功/失败

true/false

  • 2. 获取留言(从后端获取留言信息,显示到列表)

注意:在接口设计中,尽量保持单一原则,例如不要当前接口做了提交留言又做返回留言

全部留⾔信息,我们⽤List来表⽰,可以⽤JSON来描述这个List数据.

请求:

url:/message/getList

type:get

响应:返回Json

浏览器给服务器发送⼀个GET /message/getList 这样的请求,就能返回当前⼀共有哪些留⾔记录.结果以 json 的格式返回过来

🌳实现服务器端代码

🚩lombok介绍

这个环节为大家推荐一个工具lombok,它的出现会使我们开发起来更加简单便捷

Lombok是⼀个Java⼯具库,通过添加注解的⽅式,简化Java的开发

首先我们需要在我们的pom.xml文件下面添加以下依赖

那它有什么作用呢?又怎么使用呢?

比如以下代码

我们在获取属性时要用大量的get和set,看起来非常的不好看。而当我们使用了lombok后,代码如下;

这样也可以达到相同的效果,不仅如此@Data 注解还会帮助我们⾃动⼀些⽅法,包含getter/setter,equals,toString等

如果觉得这样使用太粗暴了,lombok也提供了一些细化的方法

它们之间的关系可以理解为:

@Data=@Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor

但是呢,每一次都需要引入依赖,太麻烦了,所以我们可以下载相关的插件EditStarter,安装过程与使用如下:

  • 第一步:安装插件EditStarter,重启Idea
  • 第二步:在pom.xml⽂件中,单击右键,选择Generate - EditStarter

进⼊Edit Starters的编辑界⾯,添加对应依赖即可.

🚩代码实现

第一步:定义留⾔对象MessageInfo类

第二步:创建MessageController类

由于没有学习数据库内容,这里我们使用List来存储留⾔板信息

🌴运行测试

通过Postman进行测试

测试getList接口:测试当前没有留言信息,查看是否有空指针异常,发现并没有问题

测试publish接口:发布留言接口返回成功

再次测试getList接口:当前就能收到后端返回的信息了

那么经过以上测试,当前我们的后端代码是没有问题的

🎄前端代码实现

前端所要做的事情是"提交"按钮,以及在页面加载时从后端返回的结果显示在列表上

🚩获取列表

代码:后端返回结果加载到页面上

通过postman发起三次留言请求,发送一次获取留言结果(要点击刷新):

🚩实现"提交"

在上述的前端代码中的submit方法是已经实现了提交按钮的,但是它不会走后端,就是说输入信息后点击提交,再次刷新,当前的留言信息是不存在的

当前要做的是,点击"提交"之后,让后端把这个数据保存下来

代码:在点击"提交"时,去调用后端的接口

测试:

若出现报错:

1. 按F12,若出现415,可能是页面缓存的问题,crtl+f5进行强刷

2. 若前端没有报错,页面列表不显示,查看请求是否到达后端,可通过打印日志来判断

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/6994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot格式化实体的时间类型以及静态注入依赖

一. 场景描述 在进行前后端交互时,发现实体的LocalDateTime返回的格式是这样的: 这不符合我们日常习惯的格式 “年-月-日 时:分:秒”,于是上网学习了前辈 励碼的文章SSM项目中LocalDateTime格式化最佳实践_localdatetime 格式化-CSDN博客解决…

计算机网络 (59)无线个人区域网WPAN

前言 无线个人区域网(WPAN,Wireless Personal Area Network)是一种以个人为中心,采用无线连接方式的个人局域网。 一、定义与特点 定义:WPAN是以个人为中心,实现活动半径小、业务类型丰富、面向特定群体的无…

TangoFlux 本地部署实用教程:开启无限音频创意脑洞

一、介绍 TangoFlux是通过流匹配和 Clap-Ranked 首选项优化,实现超快速、忠实的文本到音频生成的模型。 本模型由 Stability AI 提供支持🚀 TangoFlux 可以在单个 A40 GPU 上在 ~3 秒内生成长达 34.1kHz 的立体声音频。 二、部署 安装方式非常简单 1…

[cg] 使用snapgragon 对UE5.3抓帧

最近想要抓opengl 的api,renderdoc在起应用时会闪退(具体原因还不知道),试了下snapgraon, 还是可以的 官网需要注册登录后下载,官网路径:Developer | Qualcomm 为了方便贴上已经下载好的exe安装包&#x…

pycharm 运行远程环境问题 Error:Failed to prepare environment.

问题排查 拿到更详细的报错信息: Help > Diagnostic Tools > Debug Log Settings section: 添加下面的配置 com.intellij.execution.configurations.GeneralCommandLine 重显报错,我这里是再次运行代码打开 Help | Collect Logs and Diagnosti…

OS Copilot功能测评:智能助手的炫彩魔法

简介: OS Copilot 是一款融合了人工智能技术的智能助手,专为Linux系统设计,旨在提升系统管理和运维效率。本文详细介绍了在阿里云ECS实例上安装和体验OS Copilot的过程,重点评测了其三个核心参数:-t(模式…

C++ lambda表达式

目录 1.lambda表达式 1.1什么是Lambda表达式? 1.2Lambda表达式的语法 1.3捕捉列表 1.4函数对象与lambda表达式 1.lambda表达式 1.1什么是Lambda表达式? Lambda表达式是C11标准引入的一种匿名函数,它允许你在需要函数的地方直接编写代码…

环境变量配置与问题解决

目录 方法 配置了还是运行不了想要的东西 解决方案 为什么 解决方案 方法 方法一:此电脑右击-属性-相关链接-高级系统设置-环境变量(N)-系统变量里面找到Path-三个确定】 方法二:winr cmd 黑框输入sysdm.cpl,后面…

AI News(1/21/2025):OpenAI 安全疏忽:ChatGPT漏洞引发DDoS风险/OpenAI 代理工具即将发布

1、OpenAI 的安全疏忽:ChatGPT API 漏洞引发DDoS风险 德国安全研究员 Benjamin Flesch 发现了一个严重的安全漏洞:攻击者可以通过向 ChatGPT API 发送一个 HTTP 请求,利用 ChatGPT 的爬虫对目标网站发起 DDoS 攻击。该漏洞源于 OpenAI 在处理…

【优选算法】10----无重复字符的最长子串

---------------------------------------begin--------------------------------------- 题目解析: 看到这一类题目,有没有那种一眼就感觉时要用到滑动窗口的感觉,铁子们? 讲解算法原理: 方法一: 暴力解法&#xff…

5. 马科维茨资产组合模型+政策意图AI金融智能体(Qwen-Max)增强方案(理论+Python实战)

目录 0. 承前1. AI金融智能体1.1 What is AI金融智能体1.2 Why is AI金融智能体1.3 How to AI金融智能体 2. 数据要素&计算流程2.1 参数集设置2.2 数据获取&预处理2.3 收益率计算2.4 因子构建与预期收益率计算2.5 协方差矩阵计算2.6 投资组合优化2.7 持仓筛选2.8 AI金融…

HTML5 Web Worker 的使用与实践

引言 在现代 Web 开发中,用户体验是至关重要的。如果页面在执行复杂计算或处理大量数据时变得卡顿或无响应,用户很可能会流失。HTML5 引入了 Web Worker,它允许我们在后台运行 JavaScript 代码,从而避免阻塞主线程,保…

使用 OpenCV 和 Python 轻松实现人脸检测

目录 一、准备工作 二、加载人脸检测模型 三、读取图像并进行人脸检测 四、处理视频中的人脸检测 五、优化人脸检测效果 六、总结 在人工智能和计算机视觉领域,人脸检测是一项非常基础且重要的技术。通过人脸检测,我们可以在图像或视频中识别并定位人脸,进而进行后续的…

GPB独立站外链:构建长期权威的SEO基础SEO的竞争

最终比拼的是资源,而外链资源是决胜的关键之一。GPB独立站外链正是为那些希望稳步提升网站权重的企业提供的一项长期投资方案。通过这些来自独立域名的高质量外链,你的网站不仅会获得谷歌的信任,还能在激烈的市场竞争中脱颖而出 GPB外链的最…

rocketmq顺序消费简述

概述 再引入mq解耦部分业务操作后,一些场景还需要顺序处理; 这就需要mq顺序消费了; rocketmq的顺序消费关键点在于对messagequeue的有序消费; 一个topic下有多个messagequeue(默认是4个),而且…

k8s简介,k8s环境搭建

目录 K8s简介环境搭建和准备工作修改主机名(所有节点)配置静态IP(所有节点)关闭防火墙和seLinux,清除iptables规则(所有节点)关闭交换分区(所有节点)修改/etc/hosts文件&…

net Core Ocelot(1)单地址,多地址

Ocelot 网关技术 》》》配置文件 》》》单地址 {"Routes": [{// 上游 》》 接受的请求//上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法"UpstreamHttpMethod": [ "Get", "Post" ],"UpstreamPathTe…

GIS 中的 SQLAlchemy:空间数据与数据库之间的桥梁

利用 SQLAlchemy 在现代应用程序中无缝集成地理空间数据导言 地理信息系统(GIS)在管理城市规划、环境监测和导航系统等各种应用的空间数据方面发挥着至关重要的作用。虽然 PostGIS 或 SpatiaLite 等专业地理空间数据库在处理空间数据方面非常出色&#…

Jmeter使用Request URL请求接口

简介 在Jmeter调试接口时,有时不清楚后端服务接口的具体路径,可以使用Request URL和cookie来实现接口请求。以下内容以使用cookie鉴权的接口举例。 步骤 ① 登录网站后获取具体的Request URL和cookie信息 通过浏览器获取到Request URL和cookie&#…

每日十题八股-2025年1月24日

1.面试官:Kafka 百万消息积压如何处理? 2.面试官:最多一次、至少一次和正好一次有什么区别? 3.面试官:你项目是怎么存密码的? 4.面试官:如何设计一个分布式ID? 5.面试官:单点登录是怎么工作的…