乐途乐途
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
  • 学习路径
  • 第1章 SpringMVC概述与DispatcherServlet

    • 本章导读:Spring MVC概述与DispatcherServlet
    • Spring MVC 是什么
    • MVC 设计模式
    • 前端控制器模式
    • DispatcherServlet
    • 核心组件协作
  • 第2章 控制器与请求映射

    • 本章导读:控制器与请求映射
    • Controller
    • RestController
    • RequestMapping
    • GetMapping
    • PostMapping
    • PutMapping
    • DeleteMapping
    • PathVariable
    • RESTful
    • 请求映射原理
  • 第3章 请求参数获取与转换

    • 本章导读:请求参数获取与转换
    • RequestParam
    • RequestBody
    • RequestHeader
    • CookieValue
    • Model
    • ModelAttribute
    • 数据绑定原理
    • 数据校验
  • 第4章 响应数据与视图解析

    • 本章导读:响应数据与视图解析
    • ResponseBody
    • ResponseEntity
    • ModelAndView
    • ViewResolver
    • HttpMessageConverter
    • forward与redirect
  • 第5章 拦截器过滤器与跨域

    • 本章导读:拦截器、过滤器与跨域
    • HandlerInterceptor
    • WebMvcConfigurer
    • CrossOrigin
    • 登录验证实战
  • 第6章 文件上传与异常处理

    • 本章导读:文件上传与异常处理
    • MultipartFile
    • 文件下载
    • ExceptionHandler
    • ControllerAdvice
    • RestControllerAdvice
    • ResponseStatus
  • 第7章 高级特性与最佳实践

    • 本章导读:高级特性与最佳实践
    • SessionAttributes
    • SessionAttribute
    • RedirectAttributes
    • MockMvc测试
    • 国际化
    • 最佳实践
  • 第8章 扩展与异步机制

    • 本章导读:扩展与异步机制
    • 异步请求处理
    • 自定义参数解析器
    • 内容协商

"用户上传头像时服务器报了500,但日志里只有一堆堆栈,根本不知道哪里出了问题。"李眉皱着眉头把日志发给小崔,"没有全局异常处理的生产环境,就像没有消防员的仓库——起火了你只能看着它烧。"

——李眉,飞翔科技运维工程师

本章导读:文件上传与异常处理

本章定位

本章解决的核心问题:如何在Spring MVC中安全、高效地处理文件上传与下载,以及如何构建统一、友好的异常响应机制,避免丑陋的堆栈信息暴露给客户端。

学习路线图

学习建议:先掌握文件上传的核心API(MultipartFile),再学习文件下载的响应头控制,随后转入异常处理主线——从方法级@ExceptionHandler到全局@ControllerAdvice,最后理解@ResponseStatus如何定义异常与HTTP状态码的映射关系。

文件关系说明

文件一句话角色
MultipartFile.md上传核心:Spring MVC封装上传文件的API,包括文件接收、元数据获取、存储到磁盘或云OSS的完整操作。
文件下载.md流式响应:通过设置Content-Disposition等响应头,将服务器文件以流的形式安全返回给客户端。
ExceptionHandler.md局部兜底:在单个控制器内用@ExceptionHandler捕获特定异常,返回自定义错误响应,适用于局部异常场景。
ControllerAdvice.md全局视图异常:@ControllerAdvice结合@ExceptionHandler实现跨所有控制器的统一异常处理,传统服务端渲染项目的标准方案。
RestControllerAdvice.md全局REST异常:@RestControllerAdvice的组合注解本质,以及它在RESTful API项目中返回统一JSON错误体的最佳实践。
ResponseStatus.md状态映射:@ResponseStatus如何将自定义异常与HTTP状态码绑定,以及它与全局异常处理的协作关系。

知识图谱

图谱解读:文件上传依赖MultipartResolver解析请求,MultipartFile提供文件操作API;文件下载则通过ResponseEntity封装输入流和响应头实现。异常处理呈三层结构:方法级@ExceptionHandler是局部兜底,@ControllerAdvice和@RestControllerAdvice分别面向视图渲染和RESTful API提供全局统一处理,@ResponseStatus则负责将异常语义映射为标准的HTTP状态码。

与下一章的衔接

本章学完后,你已经掌握了"文件流处理"和"异常统一治理"。下一章将解决"如何提升开发效率与代码质量"——你将学习MockMvc进行控制器单元测试、RedirectAttributes实现重定向传参、国际化(i18n)支持多语言,以及Spring MVC开发的最佳实践,这是从"功能实现"到"工程化交付"的升华。

下一页
MultipartFile