[SpringMVC] 加法计算器

一、 场景铺垫:双十一凌晨的"订单哨兵"

想象一下:现在是 2026 年双十一凌晨一点 。你面前的监控大屏上,全国各地的订单数据正疯狂跳动 。作为后端开发,你需要实现一个极简的微服务,瞬间聚合两个区域的实时订单增量并反馈给前台看板 。虽然业务逻辑是简单的加法,但在高并发的生产环境下,每一行注解的选择都关乎系统的健壮性 。


二、 技术还原:构建你的第一个"聚合器"

(一) 路由映射:建立我们的"通讯基站"

在 Spring MVC 中,建立连接只需通过注解声明路由映射 。

  1. @RestController :这是 @Controller@ResponseBody 的结合体 。它告知 Spring 该类由容器管理,且返回的是纯数据(非视图页面),非常适合前后端分离的场景 。

  2. @RequestMapping :它定义了接口的 URL 路径 。当我们在类上标注 /calc,方法上标注 /sum 时,完整的访问路径即为 /calc/sum

(二) 前端投递:calc.html 的表单逻辑

前端通过标准的 form 表单进行数据投递 。

  1. 接口约定 :表单的 action 需对应后端的请求路径 /calc/sum

  2. 参数匹配<input> 标签的 name 属性(如 num1num2)必须与后端方法的形参名严格一致,Spring 才能自动完成参数绑定 。

html 复制代码
<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>Document</title>  
</head>  
<body>  
     <form action="calc/sum" method="post">  
        <h1>计算器</h1>  
        数字1:<input name="num1" type="text"><br>  
        数字2:<input name="num2" type="text"><br>  
        <input type="submit" value=" 点击相加 ">  
    </form></body>  
  
</html>

注意要把包含上述代码的html文件放置到 /resource/static 这个目录下

简单的前端页面已搭建完成,此时如果直接访问,在前端页面中尝试计算的话只会出现404not found提示,这是因为我们还未赋予其处理数据的能力,下面来实现一个对应的后端接口

(三) 核心逻辑:CalcController 的代码实现

后端接收参数并执行求和,最终返回一个 HTML 代码片段 。

java 复制代码
@RestController
@RequestMapping("/calc")
public class CalcController {
    @RequestMapping("/sum")
    public String sum(Integer num1, Integer num2) { // 接收求和参数 [cite: 715]
        Integer sum = num1 + num2;
        // 返回 <h1> 标签包裹的结果,浏览器会自动解析 
        return "<h1>计算机计算结果: " + sum + "</h1>"; 
    }
}

如果不想要把传递的参数显示在url中,还可以通过发送post请求,在body中传递数据,这样num1和num2就在body行中展示

三、 硬核解析:包装类型 Integer 的"保命"哲学

在代码中,我们使用了 Integer 而非基本类型 int,这是基于企业级开发的避坑经验 。

(一) 规避 500 内部服务器错误

  1. int 的局限性 :若前端因网络异常或逻辑错误未传递参数,声明为 int 的方法会因无法将 null 转换给基本类型而直接报错 。

  2. Integer 的包容性 :包装类型可以接收 null 值 。在实际业务中,这允许我们先接收数据,再通过逻辑判断(如 if(num1 == null))给出更友好的提示,而不是让用户直接看到冰冷的 500 错误页面 。


四、 总结与思考

通过这个简单的加法器,我们完成了 Spring MVC "接收请求-处理参数-返回响应"的全流程 。

思考题: 如果前台在 num1 输入框里填了字符串 "abc",我们的程序会发生什么?

  1. 这种情况下,Spring MVC 会检测到类型不匹配,并向浏览器返回 400 Bad Request 错误状态码 。

    2.要想解决这个问题,我们需要在代码中对用户传递的参数进行合法性校验,并且进行非法提示


相关推荐
云烟成雨TD2 小时前
Spring AI 1.x 系列【28】基于内存和 MySQL 的多轮对话实现案例
java·人工智能·spring
cheems95274 小时前
[SpringMVC] Spring MVC 留言板开发实战
java·spring·mvc
武超杰4 小时前
SpringBoot 整合 Spring Security 实现权限控制
spring boot·后端·spring
云烟成雨TD4 小时前
Spring AI 1.x 系列【27】Chat Memory API:让 LLM 拥有上下文记忆能力
java·人工智能·spring
weixin_704266054 小时前
项目总结一
java·前端·spring boot·后端·spring
沃尔威武4 小时前
Spring Cloud Gateway实战:微服务API网关从零到一
java·spring·微服务
陌殇殇4 小时前
003 Spring AI Alibaba框架整合百炼大模型平台 — Memory会话记忆、Tool工具、RAG增强检索、ReAct智能体
人工智能·spring·ai
码码哈哈0.04 小时前
Spring AI 1.0.0 + ChromaDB 最新版踩坑:Collection does not exist 404 报错全记录
java·人工智能·spring
hero.fei5 小时前
RoaringBitmap在SpringBoot中的使用以及与BitSet对比
java·spring boot·spring