当前位置: 首页 > news >正文

SpringMVC知识体系

SpringMVC 知识体系

1. SpringMVC 基础

  • MVC 设计模式
    • Model: 模型层,处理业务逻辑
    • View: 视图层,负责界面展示
    • Controller: 控制层,处理请求并协调模型和视图
  • 核心组件
    • DispatcherServlet: 前端控制器
    • HandlerMapping: 处理器映射
    • Controller: 控制器
    • ModelAndView: 模型和视图
    • ViewResolver: 视图解析器
  • 工作流程
    1. 请求被 DispatcherServlet 接收
    2. 通过 HandlerMapping 找到对应的 Handler
    3. 调用处理器适配器执行 Handler
    4. Handler 执行完返回 ModelAndView
    5. 视图解析器解析视图
    6. 返回响应给客户端
1. 发送请求
2. 查找Handler
返回Handler
3. 调用适配器执行Handler
调用
4. 返回ModelAndView
返回ModelAndView
5. 解析视图
返回View对象
6. 渲染视图
7. 返回响应
客户端
DispatcherServlet
HandlerMapping
HandlerAdapter
Handler/Controller
ViewResolver
View

流程说明

  1. 客户端发送请求:请求被发送到服务器端的 DispatcherServlet
  2. DispatcherServlet 查找 Handler:通过 HandlerMapping 找到处理该请求的 Handler(处理器)
  3. 调用处理器适配器执行 Handler:HandlerAdapter 调用具体的 Controller 处理业务逻辑
  4. Handler 执行完成:Controller 执行完毕后返回 ModelAndView 对象
  5. 视图解析:DispatcherServlet 将 ModelAndView 传给 ViewResolver 进行解析
  6. 渲染视图:View 对象结合 Model 数据渲染最终的视图
  7. 返回响应:渲染结果返回给客户端

核心组件职责

  • DispatcherServlet:前端控制器,接收请求并协调整个处理流程
  • HandlerMapping:根据请求找到对应的 Handler
  • HandlerAdapter:调用具体的 Handler 处理请求
  • Controller:处理具体的业务逻辑
  • ModelAndView:包含数据模型和视图信息
  • ViewResolver:根据视图名解析出实际的 View 对象
  • View:负责渲染页面,将模型数据填充到视图中

2. 注解驱动开发

  • 常用注解
    • @Controller: 标识控制器
    • @RequestMapping: 映射请求路径
    • @ResponseBody: 返回数据而非视图
    • @RequestParam: 绑定请求参数
    • @PathVariable: 获取 URL 中的变量
    • @RequestBody: 接收请求体内容
    • @RestController: @Controller 和@ResponseBody 的结合
    • @GetMapping/@PostMapping: 简化的 RequestMapping

3. 请求处理机制

  • 请求参数绑定
    • 简单类型参数绑定
    • POJO 类型参数绑定
    • 数组类型参数绑定
    • 集合类型参数绑定
  • 文件上传处理
    • MultipartResolver 配置
    • 接收文件的方法
  • JSON 数据处理
    • Jackson 集成
    • JSON 序列化与反序列化

4. 响应处理机制

  • 视图技术
    • JSP 视图
    • Thymeleaf 视图
    • Freemarker 视图
    • 重定向与转发
  • 数据返回
    • ModelAndView 返回
    • JSON 数据返回
    • 文件下载

5. 异常处理

  • 全局异常处理
    • @ExceptionHandler
    • @ControllerAdvice
    • SimpleMappingExceptionResolver
  • 自定义异常
    • 业务异常定义
    • 异常处理策略

6. 拦截器与过滤器

  • 拦截器(Interceptor)
    • 定义拦截器类
    • 配置拦截器
    • 执行顺序
    • 常用场景
  • 过滤器(Filter)
    • 与拦截器的区别
    • 实现与配置

7. 数据验证

  • JSR-303 验证
    • 常用验证注解
    • 分组验证
    • 自定义验证
  • 验证结果处理
    • BindingResult 使用
    • 错误信息定制

8. REST 风格接口

  • RESTful API 设计原则
  • 资源表现形式
    • XML
    • JSON
  • HTTP 方法语义
    • GET: 获取资源
    • POST: 创建资源
    • PUT: 更新资源
    • DELETE: 删除资源

9. 安全控制

  • Spring Security 集成
  • 权限控制
  • 认证与授权
  • CSRF 防护

10. 高级特性

  • 异步处理
    • @Async注解
    • DeferredResult
    • Callable 返回值
  • WebSocket 支持
  • 跨域处理
    • CORS 配置
    • @CrossOrigin注解

11. 测试

  • 单元测试
  • Mock 测试
  • 集成测试

12. 性能优化

  • 缓存策略
  • 静态资源处理
  • 数据压缩

13. 与 Spring Boot 集成

  • 自动配置
  • 内嵌容器
  • Starter 依赖
  • 生产就绪特性

相关文章:

  • Java语言的进化:JDK的未来版本
  • Convenience Variable in GDB
  • 缓存穿透、雪崩、击穿深度解析与解决方案
  • 驱动开发硬核特训 · Day 19:从字符设备出发,掌握 Linux 驱动的实战路径(含 gpio-leds 控制示例)
  • oralce 查询未提交事务和终止提交事务
  • [特殊字符]️ 基于Pytest的自动化测试框架架构解析
  • 不要使用Round函数保留小数位了
  • 【问题】解决docker的方式安装n8n,找不到docker.n8n.io/n8nio/n8n:latest镜像的问题
  • RocketMQ事务消息详解
  • c#-命名和书写规范
  • Java虚拟机(JVM)家族发展史及版本对比
  • C语言之阶乘2.0
  • H3C Magic路由器安全警报来啦![特殊字符][特殊字符]
  • uniapp 仿小红书轮播图效果
  • 深度解析 TransmittableThreadLocal(TTL):原理、实战与优化指南
  • Node.js 学习入门指南
  • Linux 内核 IPv4 套接字创建机制与协议表管理深度解析
  • 全链路数据仓建设指南:从构建流程到应用场景
  • 银河麒麟系统安装vscode
  • 2023 国考
  • 印控克什米尔恐袭引爆印巴新一轮外交摩擦,地区安全风险骤增
  • 一季度沪苏浙皖GDP增速均快于去年全年,新兴动能持续壮大
  • 解放日报:上海一季度GDP同比增长5.1%,两大新动能助推经济“开门红”
  • 厦门国贸去年营收约3544亿元,净利润同比减少67.3%
  • 呈现“民族脊梁型爱国学府”曲折辉煌的办学历程,这个展览开幕
  • 首映|国家自博馆4D电影《海洋深深》:潜入深海向地球发问