Java后端三层架构怎么理解?MVC模式与三层架构的区别是什么?
作者:NorthPath
时间:2026-07-21
浏览:0
一、Spring MVC 综合案例 Spring MVC 在实际开发中非常常见,下面通过几个典型场景,从接口定义到前后端联调,完整走一遍流程。先看一个最简单的加法计算器,再慢慢过渡到用户登录和留言板,逐步加深理解。 1. 案例一:加法计算器 接口定义 功能:两数相加。 路径:calc/sum 参数:
一、Spring MVC 综合案例
Spring MVC 在实际开发中非常常见,下面通过几个典型场景,从接口定义到前后端联调,完整走一遍流程。先看一个最简单的加法计算器,再慢慢过渡到用户登录和留言板,逐步加深理解。
1. 案例一:加法计算器
接口定义
- 功能:两数相加。
- 路径:
calc/sum - 参数:
| 参数名称 | 类型 | 是否必须 |
|---|---|---|
| num1 | Integer | 是 |
| num2 | Integer | 是 |
响应数据:
- contentType:
text/html - 响应内容:计算结果:ans
代码实现
先看前端静态页面 calc.html:
加法计算器
简易计算器
访问地址:http://127.0.0.1:8080/calc.html
后端接口实现:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/calc")
public class CalcController {
@RequestMapping("/sum")
public String sum(Integer num1, Integer num2){
Integer total = num1 + num2;
return "计算结果:" + total + "
";
}
}
2. 案例二:用户登录系统
接口定义
1. 检验用户信息
- 功能:检验账号密码是否正确。
- 路径:
/user/login - 请求方式:POST
- 参数:
| 参数名称 | 类型 | 是否必须 |
|---|---|---|
| username | String | 是 |
| password | String | 是 |
响应数据:
- contentType:
text/html - 响应内容:
true//验证成功false//验证失败
2. 查询登录用户
- 功能:查询当前登录的用户
- 请求路径:
/user/getLoginUser - 请求方式:GET
- 请求参数:无
响应数据:
- contentType:
text/html - 响应内容:admin
后端
import jakarta.servlet.http.HttpSession;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class LoginController {
// 登录校验接口
@RequestMapping("/login")
public boolean login(String userName, String password, HttpSession session){
// 判断账号密码是否为空
if(!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)){
return false;
}
// 模拟数据库账号密码
if("zhangsan".equals(userName) && "123456".equals(password)){
// 登录成功,存入session
session.setAttribute("loginUser", userName);
return true;
}
return false;
}
// 获取当前登录用户
@RequestMapping("/getLoginUser")
public String getLoginUser(HttpSession session){
// getSession(false):无会话不创建新session
String user = (String) session.getAttribute("loginUser");
return user == null ? "" : user;
}
}
注意:
- 代码要尽量减少嵌套,增加可读性
- 判断两个字符串是否相等的时候要把常量写在前面,变量写在
equal()里,防止空指针异常:"admin".equals(username)
前端
采用 AJAX 实现异步请求,在不重新加载整个页面的情况下与服务器交换数据。
login.html
用户登录
用户名: 密码:
index.html
登录人:
3. 案例三:留言板
Lombok
先引入 Lombok 依赖,它能在编译期自动生成 getter、setter、toString 等方法,大大减少样板代码:
org.projectlombok lombok true
常用注解及作用:
| 注解 | 作用 |
|---|---|
| @Data | 综合注解:自动生成getter、setter、toString、equals、hashCode、无参构造 |
| @Getter/@Setter | 单独生成get/set方法 |
| @NoArgsConstructor | 无参构造方法 |
| @AllArgsConstructor | 全参构造方法 |
| @NonNull | 属性非空校验 |
注意:
@Data=@Getter+@Setter+toString()+equals()+hashCode()@Data生成的内容非常多,如果只需要部分方法,可以用更具体的注解@Getter/@Setter既是类注解也是属性注解:放在类上对所有属性生效,放在属性上只对该属性生效

接口设计
1. 获取全部留言
- 请求方式:GET
- 请求路径:
/message/getList - 响应数据:
Content-Type: application/json- 类型:JSON
2. 发送留言
- 请求方式:POST
- 请求路径:
/message/publish - 响应数据:JSON格式
- 响应内容:
ok:0//发布失败ok:1//发布成功
- 响应内容:
总结
从加法计算器到用户登录,再到留言板,这三个案例覆盖了 Spring MVC 开发中最常见的场景:参数接收、表单提交、Session 管理、AJAX 交互、JSON 响应以及 Lombok 工具的使用。理解这些基础模式后,很多复杂业务都可以在此基础上扩展。
作者最新文章
贵州省住建厅与贝壳集团签署旅居战略合作:五大维度落地方案解析
2026-09-08 18:13
上海链家安住APP:业主主动卖房功能与成交数据解析
2026-09-08 18:11
如何批量将PPT转成PDF格式?PPT转PDF工具怎么选?
2026-09-04 16:03
PDF文件怎么压缩?3个小技巧帮你减小体积
2026-09-03 18:03
小批量试产总结报告:新产品量产导入评审实战指南
2026-09-02 19:48
下一篇:
php 解析,php解析
精品专题
更多
Mac软件
更多
WINDOWS
更多

































