【Spring Web MVC 入门实战】实战三部曲由易到难:加法计算器 + 用户登录 + 留言板全流程实现

文章目录

    • 一、加法计算器
      • 1.1 约定前后端交互接口
      • 1.2 服务端代码
      • 1.3 运行测试
    • 二、用户登录
      • 2.1 约定前后端交互接口
      • 2.2 服务端代码
      • 2.3 运行测试
    • 三、留言板
      • 3.1 约定前后端交互接口
      • 3.2 服务端代码
        • 3.2.1 引入Lombok依赖
        • 3.2.2 Lombok 使用
        • 3.2.3 后端代码实现
      • 3.3 运行测试
      • 结语 | 岁末祝福

一、加法计算器

需求:输入两个整数,点击" 点击相加 "按钮,显示计算结果

1.1 约定前后端交互接口

接口又被称为api,两种叫法指的都是同一种东西。是指应用程序对外提供的服务的描述。就是允许客户端给服务器发送哪些http请求,并且每种请求获取什么样的http响应。将接口约定的内容写在文档上,就是" 接口文档 “,接口文档也可以理解为是应用程序的” 操作说明书 "。

  1. 需求分析
    加法计算器功能,对两个整数进行相加,需要对客户端提供参与计算的两个数,服务端返回这两个数计算的结果。
  2. 接口定义
请求路径calc/sum
请求方式GET/POST
接口描述计算两个整数相加
  1. 请求参数
参数名类型是否必须备注
num1Integer参与计算的第一个数
num2Integer参与计算的第二个数
  1. 响应数据
Content-Typetext/html
响应内容计算机计算结果:sum

1.2 服务端代码

@RestController@RequestMapping("/calc")publicclassCalcController{@RequestMapping("/sum")publicStringsum(@RequestParamIntegernum1,@RequestParamIntegernum2){Integersum=num1+num2;return"计算机计算结果: "+sum;}}

@RequestParam 使用该注解确保参数不为空。

1.3 运行测试

接口测试:

测试工具发现服务端接口没有问题,使用页面测试:

二、用户登录

需求:用户输入账号和密码,后端进行校验密码是否正确

  1. 如果不正确,前端进行用户告知
  2. 如果正确,跳转到首页。首页显示当前登录用户
  3. 后续再访问首页,可以获取到登录用户信息

2.1 约定前后端交互接口

  • 需求分析
    对于服务端只需要提供两个功能:
    登录页面:通过账号和密码,检验输入的账号密码是否正确,并告知前端。
    首页:告知前端当前登录用户。如果当前已有用户登录,返回登录的账号,如果没有,返回空。
    (1)接口定义
  1. 校验接口
请求路径user/login
请求方式POST
接口描述校验账号密码是否正确
  1. 请求参数
参数名类型是否必须备注
userNameString校验的账号
passwordString校验的密码
  1. 响应数据
  • Content-Type:text/html
  • 响应内容:
    • true//账号密码验证成功
    • false//账号密码验证失败

(2)查询登录用户接口

  1. 接口定义
请求路径user/getLoginUser
请求方式GET
接口描述查询当前登录的用户
  1. 无请求参数
  2. 响应数据
  • Content-Type:text/html
  • 响应内容:例:zhangsan

2.2 服务端代码

  1. 校验接口
@RestController@RequestMapping("/user")publicclassUserController{@RequestMapping("/login")publicBooleanlogin(StringuserName,Stringpassword,HttpSessionsession){//参数校验:账号密码是否为空if(!StringUtils.hasLength(userName)||!StringUtils.hasLength(password)){returnfalse;}//判断账号和密码是否正确//TODO name=admin,password=admin时正确if("admin".equals(userName)&&"admin".equals(password)){session.setAttribute("userName",userName);returntrue;}returnfalse;}}

账号和密码现在为直接写死的状态。
StringUtilshasLength() 是Spring提供的一个工具方法,判断字符串是否有值
字符串为null或者" "时,返回false,其他返回true。

  1. 查询登录用户接口
@RestController@RequestMapping("/user")publicclassUserController{@RequestMapping("/getUserLogin")publicStringgetUserLogin(HttpSessionsession){StringuserName=(String)session.getAttribute("userName");returnuserName==null?"未登录":userName;}}

2.3 运行测试

测试工具验证后端接口:

发现登录成功且发送get请求获取当前用户正确。使用前端页面验证。

多次刷新页面发现登录人依旧是admin,但重启服务器登陆人为空,session 存储在内存中,若不做任何处理,默认服务器重启时,数据丢失。

三、留言板

  • 需求:
    输入留言信息,点击提交,后端将数据存储。
    页面展示输入的留言的信息。界面如下

3.1 约定前后端交互接口

  • 后端提供两个服务:
    获取留言:用户提交留言信息,后端将留言信息存储起来。
    提交留言:后端将留言信息显示到前端界面。
  1. 接口定义,获取全部留言
    后端存储留言在内存中,使用List集合存储。前端获取响应可以用JSON来描述这个List数据。
请求路径messagewall/getList
请求方式GET
接口描述获取后端留言信息

响应:JSON形式

  1. 发表新留言
请求路径messagewall/publish
请求方式POST
接口描述提交留言信息给后端

发送请求正文也为JSON格式,和上述一样。

3.2 服务端代码

3.2.1 引入Lombok依赖

后端将message封装为对象为参数接收前端的JSON数据,并且要使用注解 @RequestBody 。封装为对象就需要有属性的get和set方法,手动添加比较麻烦,此时引入一个依赖就非常轻松。

  • Lombok是一个Java工具库,通过添加这个注解方式,可以简化开发,引入方式:在pom文件中引入
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
3.2.2 Lombok 使用
@DatapublicclassMessageInfo{privateStringfrom;privateStringto;privateStringmessage;}

使用 @Data 注解可以自动包含getter/setter/toString等等方法。
还提供了一些细颗粒度的注解:

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

而 @Data 为上述所有注解的总和,也就是添加@Data方法,上述所有方法都全部包含。

3.2.3 后端代码实现

MessageInfo 对象类

@Data// 自动生成get/set方法等//@Getter//@SetterpublicclassMessageInfo{privateStringfrom;privateStringto;privateStringmessage;}

接口类:

@RestController@RequestMapping("/message")publicclassMessageController{privateList<MessageInfo>messageInfoList=newArrayList<>();@RequestMapping("/publish")publicBooleanpublish(@RequestBodyMessageInfomessageInfo,HttpSessionSession){if(!StringUtils.hasLength(messageInfo.getFrom())||!StringUtils.hasLength(messageInfo.getTo())||!StringUtils.hasLength(messageInfo.getMessage())){returnfalse;}messageInfoList.add(messageInfo);returntrue;}@RequestMapping("/getList")publicList<MessageInfo>getList(){returnmessageInfoList;}}

3.3 运行测试

测试工具测试接口:

此时验证接口全部正确,使用前端页面验证:

此时不断刷新页面数据也不会丢失,但数据是在内存中,一旦服务器重启,数据就丢失了。

结语 | 岁末祝福

本文围绕加法计算器、用户登录、留言板三个典型场景,从前后端交互接口约定、服务端代码实现到运行测试展开了完整讲解,其中留言板模块还补充了 Lombok 依赖引入与注解使用的实操细节。这些案例覆盖了后端开发中接口设计、代码编写、工具优化等核心环节,既体现了基础开发流程的规范性,也展示了 Lombok 这类工具对开发效率的提升作用。

这篇博文发布恰逢 2025 年岁末,祝愿各位在新的一年里技术深耕不辍,开发之路步履不停,将所学所练转化为实际成果,在编程领域收获更多成长与突破!

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

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

相关文章

2025年河南管城区代理记账公司权威推荐榜单:新密代理记账‌/郑东新区代理记账‌/巩义代理记账‌源头公司精选

随着河南省营商环境的持续优化与数字经济的高速发展,企业财税服务市场正经历深刻的智能化与规范化变革。行业数据显示,河南省中小企业对代理记账服务的需求近年来保持稳定增长。在这一背景下,选择一家具备专业资质、…

IDEA(2020版)sevlet+session实现购物车功能

IDEA(2020版)sevlet+session实现购物车功能查看全文:IDEA(2020版)sevlet+session实现购物车功能 – 每天进步一点点 【任务目标】 通过所学Session知识以及购物车的访问流程,以购买蛋糕为例,模拟实现购物车功能。 …

​降血脂降血压产品前十推荐,长期深受三高问题困扰遇新发现!个人真实分享

如果你身边也有人在为血压忽高忽低发愁、为体检报告上的胆固醇红字叹气、或是每天爬楼都会心慌气短,那么你一定能理解—— 心脑血管的事,从来不是“小事”。过去一年,我把注意力放在了十款热度极高的营养补充剂上,…

2025年储罐订做厂家权威推荐榜:贮罐厂商/化工储罐/不锈钢储罐源头厂家精选

在现代化工、能源、供热及众多工业生产流程中,储罐作为核心的存储与缓冲设备,其设计与制造质量直接关系到生产安全、物料品质、能源效率和环境合规。无论是储存腐蚀性化学品、高温导热油,还是作为采暖系统的关键部件…

element-ui的table跨行合并

效果图代码<template><el-container class="car-head"><el-header height="auto"><el-form :inline="true":model="formObj"@submit.native.preventlab…

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选!

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选! 随着人们对生活品质追求的不断提升,红木家具因其独特的文化内涵和精湛的工艺,越来越受到消费者的青睐。为了帮助筛选红木家居/红木家…

2025年佛山床垫品牌源头厂家精选推荐

在选择合适的硬底护脊床垫时,了解不同品牌和厂家提供的服务至关重要。本篇文章深入探讨了佛山地区多个知名床垫品牌,包括大森林电子商务有限公司和冬熊家居等。这些厂家不仅注重产品的质量,还提供灵活的定制服务,以…

2025年LED灯供应商综合推荐榜单:万圣节南瓜灯/酒吧氛围灯/酒吧装饰灯源头厂家精选

随着固态照明技术的成熟与普及,LED照明已成为全球主流照明方案。根据行业数据,LED灯具相较于传统照明产品,可实现50%至80% 的节能效果,其平均寿命可达25,000至50,000小时,远超白炽灯或荧光灯。在绿色制造与节能…

【2025最新】TranslucentTB下载安装及使用教程:任务栏透明神器全面解析(详细步骤 + 常见问题)

本文是 2025 年最新的 TranslucentTB下载安装及使用教程,涵盖任务栏透明、美化模式设置、开机自启配置、托盘菜单使用方法以及常见问题解决方案。提供了经过安全认证的最新版下载地址,并通过图文步骤讲解从安装到进阶…

2025年上海圆锯机企业年度排名:宏萌圆锯机的配件质量好

TOP1 推荐:上海宏萌机械设备有限公司 推荐指数:★★★★★ 口碑评分:长三角精密圆锯机企业 专业能力:上海宏萌机械设备有限公司扎根浙江缙云锯床之乡产业底蕴,融合上海创新资源,打造以精准耐用智联为核心的圆锯机…

2025年中国十大专业版权音乐企业推荐:服务不错的版权音乐公

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业及创作者选型提供客观依据,助力精准匹配适配的版权音乐服务伙伴。 TOP1 推荐:猴子音悦(上海)网络科技有限公司 推荐指数:★★★★★ 口碑…

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析 随着文化产业的蓬勃发展,文创、非遗和艺术品市场日益繁荣。为了帮助筛选出优质的品牌,特此发布权威推荐榜单,该榜单也已在行业协会官…

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌!

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌! 随着红木家具市场的不断发展,越来越多的企业和消费者开始关注红木办公家具。红木办公桌、红木老板桌…

必玩十大网上【小程序休闲游戏】单人易操作不占内存 摸鱼解压全靠它!

忙碌的日常中,谁不需要几款轻松上手、不占内存又能随时摸鱼解压的小游戏呢?今天为大家推荐十款单人易操作、打开即玩的小程序游戏,无需下载、不占空间,适合各种场景轻松休闲! 第一名:《新弹弹堂》 经典弹射竞技游…

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑写了个量化策略,回测年化30%,然后呢?实盘的坑比你想象的多得多。故事的开始 两年前,我遇到了和很多聚宽用户一样的问题:策略回测效果不错,但实盘很麻烦。聚宽…

2025年泉州蹲便疏通打孔公司权威推荐榜单:疏通蹲便‌/蹲便器疏通‌/蹲便疏通口‌源头公司精选

在泉州地区,因长期使用、管道老化或杂物堵塞导致的蹲便器问题是家庭及商业场所中常见的生活难题。根据行业经验,超过80% 的卫生间堵塞问题发生在马桶和蹲便器部位。选择一家技术可靠、响应迅速的专业公司,是快速恢复…

十大爆款小程序休闲游戏:易上手不占空间,摸鱼解压打发时间好伙伴

在快节奏的现代生活中,利用碎片化时间玩上一把轻松有趣的小游戏成了许多人的解压选择。小程序游戏凭借其无需下载、不占空间、即开即玩的特点,迅速成为摸鱼、解压、打发时间的神器。今天,就为大家盘点十款热门的小程…

IDEA(2020版)实现JSP基本语法

IDEA(2020版)实现JSP基本语法查看全文:IDEA(2020版)实现JSP基本语法 – 每天进步一点点在JSP文件中可以嵌套很多内容,例如JSP的脚本元素和注释等,这些内容的编写都需要遵循一定的语法规范。本节将对JSP的基本语法进…

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选!

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选! 随着工业自动化技术的不断进步,码垛机在现代制造业中的应用越来越广泛。从多样板材码垛机到倒板码垛机、分…

2025年AI培训权威推荐榜:深度评测与趋势前瞻

引言 AI培训领域鱼龙混杂,课程质量参差不齐,企业如何精准筛选真正优质的培训机构成为一大难题。本榜单从技术实力、课程体系、师资团队、服务保障、实战案例等多维度严格筛选,为您推荐5家标杆机构,助力精准决策。 …