Spring MVC6 - 实践
2025-09-16 19:24 tlnshuju 阅读(9) 评论(0) 收藏 举报分层详细解释和关键代码/伪代码提取:就是本文章围绕 Java Web 开发(Spring、Spring MVC、前后端交互、MVC 思想、Session/Cookie 机制) 展开,以下
一、项目分层与代码规范
1. 三层架构(表现层、业务逻辑层、数据层)
- 表现层(Controller):接收用户请求,返回结果(如页面、JSON 内容)。
- 业务逻辑层(Service):对材料进行加工、处理业务规则(比如登录验证、订单计算)。
- 数据层(DAO):负责素材存储与管理(如执行数据库增删改查)。
2. 代码结构与命名
- 包结构: controller (表现层)、 service (业务层)、 dao (数据层)、 util (设备类,通常是静态方法)、 entity (实体类,对应数据库表或业务模型,也叫 model / pojo / VO / DTO 等)。
- 命名规范:类名用大驼峰(如 UserController 、 BookService );变量/方法名用小驼峰(如 userName 、 getBookList() )。
二、Spring 核心思想(IoC、AOP)
- IoC(控制反转):
- 原本对象的创建、生命周期(如创建、销毁)由开发者手动控制;IoC 后,由 Spring 容器统一管理(“控制权反转”给 Spring)。
- Spring 容器是“对象工厂”,负责创建、存储、供应对象(这些对象称为 Bean ,注意:Spring 的 Bean 不等同于 Java Bean,范围更宽泛)。
- AOP(面向切面编程):(图中未详细展开,核心是“在不修改原有代码的情况下,给方法添加统一功能”,如日志、事务)。
三、前后端交互与 Session/Cookie 机制
1. 前后端分离 vs 课堂项目
- 前后端分离:前端(如 Vue/React)和后端(如 Spring Boot)是独立项目,通过接口(API)交互,前端部署在静态服务器,后端部署在应用服务器。
- 课堂项目:逻辑上前后端职责分离,但物理上可能打包在一起(比如前端页面放在 Spring Boot 的 resources/static 里)。
2. Session & Cookie 工作流程(用户会话跟踪)
以“用户登录后保持登录状态”为例:
1. 客户端发送首次请求(如登录请求)。
2. 服务器创建 HttpSession (存用户登录信息),并生成 sessionId ,通过 Set-Cookie 响应头把 sessionId 传给客户端。
3. 客户端收到 Set-Cookie 后,把 sessionId 存到 Cookie 里。
4. 客户端后续请求时,会自动携带 Cookie(含有 sessionId )。
5. 服务器通过 sessionId 查找对应的 HttpSession :
- 找到:说明是“同一个用户”,继续业务管理(如获取用户信息)。
- 没找到:创建新的 HttpSession ,并再次通过 Set-Cookie 把新 sessionId 给客户端。
四、MVC 思想与 Spring MVC
“模型(Model)-视图(View)-控制器(Controller)”的设计思想,分离信息、页面、业务逻辑。就是- MVC:
- Spring MVC:Spring 对 MVC 思想的实现,核心是“让 Controller 接收请求,调用 Service 处理业务,最后返回视图或素材”。
五、接口示例与代码提取
1. 图书列表接口( GET /book/getList )
- 请求:无参数。
- 响应:返回图书列表(JSON 格式),示例数据:
json
[
{
"id": 1,
"bookName": "活着",
"author": "余华",
"count": 270,
"price": 20,
"publish": "北京文艺出版社",
"status": 1,
"statusCN": "可借阅"
}
// 更多图书...
]
- 后端 Spring MVC 代码(伪代码):
java
@RestController
@RequestMapping("/book")
public class BookController {
@Autowired
private BookService bookService;
@GetMapping("/getList")
public List<Book> getBookList() {
return bookService.listAllBooks();
}
}
// BookService 接口与实现(略,负责调用 DAO 查数据库)
// Book 实体类(略,对应上述 JSON 字段)
2. 登录接口( POST /user/login )
- 请求参数: name=admin&password=admin (表单格式)。
- 响应: true (登录成功)或 false (登录失败)。
- 后端 Spring MVC 代码(伪代码):
java
@RestController
@RequestMapping("/user")
public class UserController {
@PostMapping("/login")
public Boolean login(String name, String password, HttpSession session) {
// 验证用户名密码(示例:硬编码 admin/admin)
boolean isSuccess = "admin".equals(name) && "admin".equals(password);
if (isSuccess) {
session.setAttribute("loginUser", name); // 登录成功,存用户到 Session
}
return isSuccess;
}
}
这些内容覆盖了 Java Web 开发从“架构分层”到“框架核心思想”再到“具体接口达成”的关键知识点~
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号