目录
1. Spring MVC简介
什么是Spring MVC?
Spring MVC是Spring框架中的一个模块,专门用于构建Web应用程序。它基于MVC(Model-View-Controller)设计模式,提供了一个清晰的架构来分离业务逻辑、数据和表示层。
主要特点
- 松耦合:各层之间依赖性低,易于测试和维护
- 灵活性:支持多种视图技术(JSP、Thymeleaf、JSON等)
- 易于扩展:提供丰富的扩展点
- 注解驱动:通过注解简化配置
优势
- 与Spring生态系统无缝集成
- 强大的数据绑定和验证功能
- 灵活的URL映射
- 支持RESTful架构
- 优秀的测试支持
2. MVC架构模式
MVC模式概念
MVC是一种软件架构模式,将应用程序分为三个核心组件:
Model(模型)
- 作用:负责数据和业务逻辑
- 包含:实体类、服务层、数据访问层
- 特点:独立于用户界面
View(视图)
- 作用:负责用户界面的展示
- 包含:JSP页面、Thymeleaf模板、JSON响应
- 特点:只负责显示,不处理业务逻辑
Controller(控制器)
- 作用:处理用户请求,协调Model和View
- 包含:接收请求、调用业务逻辑、返回视图
- 特点:作为Model和View之间的桥梁
MVC工作原理
用户请求 → Controller → Model → Controller → View → 用户响应
3. Spring MVC核心组件
DispatcherServlet(前端控制器)
- 作用:Spring MVC的核心,负责分发请求
- 功能:接收所有请求,分发给相应的处理器
HandlerMapping(处理器映射器)
- 作用:根据请求URL找到对应的处理器
- 常用:RequestMappingHandlerMapping
HandlerAdapter(处理器适配器)
- 作用:执行找到的处理器
- 功能:适配不同类型的处理器
ViewResolver(视图解析器)
- 作用:根据逻辑视图名解析出具体视图
- 常用:InternalResourceViewResolver
HandlerInterceptor(拦截器)
- 作用:在请求处理前后执行特定逻辑
- 应用:权限检查、日志记录等
4. 请求处理流程
完整流程图解
1. 用户发送请求到DispatcherServlet
2. DispatcherServlet查询HandlerMapping找到处理器
3. DispatcherServlet调用HandlerAdapter执行处理器
4. 处理器执行业务逻辑,返回ModelAndView
5. DispatcherServlet将ModelAndView传给ViewResolver
6. ViewResolver解析出具体View
7. View渲染模型数据
8. 返回响应给用户
详细步骤说明
- 请求接收:DispatcherServlet接收HTTP请求
- 映射查找:根据URL查找对应的Controller方法
- 参数绑定:将请求参数绑定到方法参数
- 业务处理:执行Controller方法
- 视图解析:解析返回的视图名
- 响应返回:渲染视图并返回给客户端
5. 控制器详解
@Controller注解
@Controller
public class UserController {
// 控制器方法
}
@RestController注解
@RestController // 等同于 @Controller + @ResponseBody
public class ApiController {
// RESTful AP