【SpringMVC】深入解析 API 概念及接口定义方法和 SpringMVC 综合实战—简单加法计算器


综合性练习


  • 理解前后端交互过程
  • 接口传参,数据返回,以及页面展示

加法计算器


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


使用Postman来发送****JSON 请求参数


1. 准备工作


创建SpringBoot项目:引入Spring Web依赖,把前端页面放在项目中

码云地址: JavaEE进阶课程资料包

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>

2. 约定前后端交互接口


2.1 概念介绍


约定"前后端交互接口"是进行 Web 开发中的关键环节。

接口又叫 API(Application Programming Interface),我们一般讲到接口或者 API,指的都是同一个东西。

是指应用程序对外提供的服务的描述,用于交换信息和执行任务(与JavaSE阶段学习的类和接口中的接口是两回事)。

简单来说,就是允许客户端给服务器发送哪些 HTTP 请求,并且每种请求预期获取什么样的 HTTP 响应。


现在"前后端分离"模式开发,前端和后端代码通常由不同的团队负责开发。

双方团队在开发之前,会提前约定好交互的方式。

客户端发起请求,服务器提供对应的服务。

服务器提供的服务种类有很多,客户端按照双方约定指定选择哪一个服务。

接口,其实也就是我们前面网络模块讲的"应用层协议"。

把约定的内容写在文档上,就是"接口文档",接口文档也可以理解为是应用程序的"操作说明书"。

比如儿童电话玩具

  • 按1:响应儿歌
  • 按2:响应钢琴乐曲
  • 按3:安抚睡眠
  • 按4:交通工具音效
    ...

但是这些操作说明,如果没有一个文档来说明,用户就不太清楚哪个按键对应哪个,所以商品一般会带一个说明书。

  • 这些按键,就是接口。
  • 这个"说明书",就是应用程序的"接口文档"。

在项目开发前,根据需求先约定好前后端交互接口,双方按照接口文档进行开发。

  • 接口文档通常由服务提供方来写,交由服务使用方确认,也就是客户端。
  • 接口文档一旦写好,尽量不要轻易改变。
  • 如若需要改变,必须要通知另一方知晓。

2.2 需求分析


加法计算器功能,对两个整数进行相加,需要客户端提供参与计算的两个数,服务端返回这两个整数计算的结果。

基于以上分析,我们来定义接口。


2.3 接口定义



2.4 请求参数


示例:num1=5 & num2=3


2.5 响应数据


服务器给浏览器返回计算的结果


3. 服务器代码



java 复制代码
package com.example.springmvc_demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/calc")
@RestController
// @RestController 表示返回数据, @Controller 表示返回视图

public class CalcController {
    @RequestMapping("/sum")
    public String sum(Integer num1 , Integer num2){
        if(num1 == null || num2 == null){
            return "参数不合法,请检查和再提交";
        }
        Integer sum = num1 + num2;
        return "<h1>计算机计算结果: " + sum + "</h1>";
    }
}

运行程序,使用 Postman 发送请求:




4. 调整前端页面代码


添加访问 url 和请求方式

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>

5. 运行测试


启动服务,运行并测试: http://127.0.0.1:8080/calc.html 注意路径;


相关推荐
愿有所息27 分钟前
记一次 ARM64 + JDK8 上 fastjson2 的诡异数据错乱
java
梦想恒远35 分钟前
Spring Boot + LangChain4j 统计 token 成本:ChatModelListener 实测与单价口径
spring boot·后端
秋饼1 小时前
MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地
java·ai·技术分享·后端开发
新*2 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
SL_staff2 小时前
JVS-BI 实战:业务人员如何用零代码 ELT + 可视化配置构建实时经营分析闭环
java·spring·全栈
SL_staff2 小时前
企业AI落地难?JVS-AI渐进式实践:安全可控、小切口验证、标准化沉淀与规模化复制
java·开源·aigc
OpsEye3 小时前
别再挨个充会员了:多模型编码,最麻烦的从来不是选模型
javascript·ai编程
SL_staff4 小时前
JVS数字底座实践:构建企业级统一内容管理平台的技术路径
java·产品
nice_lcj5204 小时前
【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端
java·后端·spring·spring ai·ai应用开发
学以智用4 小时前
jsencrypt.js 完整详解
javascript