一、响应
1.返回静态⻚⾯
创建前端⻚⾯index.html(注意路径)

html代码如下:

后台代码:

运行结果:

正确代码如下:


1.1 场景与问题
- 目标 :通过 Spring MVC 接口返回
static目录下的index.html静态页面。 - 初始问题 :使用
@RestController注解时,接口直接将"/index.html"作为字符串返回(而非解析为静态页面)。
1.2 核心原因:@RestController与@Controller的区别
| 注解 | 作用 |
|---|---|
@RestController |
是@Controller+@ResponseBody的组合,直接将返回值作为响应体(不会解析为视图)。 |
@Controller |
用于标记 MVC 控制器,返回字符串时会被视图解析器处理(找到对应的静态页面 / 模板)。 |
1.3正确实现逻辑
- 将静态页面(如
index.html)放在 Spring Boot 默认的静态资源目录resources/static下。 - 控制器类使用
@Controller注解,接口方法返回静态页面的路径(如"/index.html")。 - 视图解析器会自动识别路径,找到
static目录下的index.html并返回其内容。
MVC 模式的演变(前后端分离背景)
- 传统 MVC:Controller 接收请求→调用 Model 处理业务→选择 View(视图)展示数据,流程为 "请求→Controller→Model→View→响应"。
- 现代前后端分离 :Java 后端不再处理视图,View 的角色变为 "返回前端渲染所需的数据",因此
@RestController(返回数据)逐渐替代传统@Controller(返回视图)。
2.返回HTML代码⽚段
- 实现逻辑 :后端方法通过
@ResponseBody返回包含 HTML 标签的字符串,浏览器会自动解析该字符串为 HTML 元素。 - 示例效果 :方法返回
"<h1>Hello,HTML~</h1>",浏览器会将其渲染为一级标题样式的文本。 - 响应类型 :Spring MVC 会自动将
Content-Type设置为text/html,告知浏览器按 HTML 格式解析响应体。

常见Content-Type及对应场景
| Content-Type 值 | 响应体数据格式 | 适用场景 |
|---|---|---|
text/html |
HTML 代码 | 返回 HTML 片段 / 页面 |
text/css |
CSS 代码 | 返回 CSS 文件 |
application/javascript |
JavaScript 代码 | 返回 JS 文件 |
application/json |
JSON 数据 | 返回接口数据(前后端交互常用) |
3.返回JSON


- 实现逻辑 :后端方法返回 Java 对象(如
HashMap),@ResponseBody会自动将对象序列化为 JSON 格式字符串。 - 响应类型 :Spring MVC 自动将
Content-Type设置为application/json,适配前后端 JSON 格式的数据交互。
4.设置状态码
SpringMVC会根据我们⽅法的返回结果⾃动设置响应状态码,程序员也可以⼿动指定状态码
4.1设置响应状态码
- 实现方式 :通过在控制器方法中注入
HttpServletResponse对象,调用其setState()方法指定状态码。 - 特点:状态码仅标识请求的处理结果,不影响响应体内容的展示,需通过工具(如 Fiddler)查看实际状态码。


4.2@RequestMapping注解的核心属性
@RequestMapping用于配置请求映射,其主要属性及作用如下:
| 属性名 | 作用描述 |
|---|---|
value/path |
指定映射的 URL 路径(核心属性)。 |
method |
指定允许的请求方法(如RequestMethod.GET、RequestMethod.POST)。 |
consumes |
指定可处理的请求体格式(Content-Type),如application/json。 |
produces |
指定响应体的格式(Content-Type),可同时设置字符编码(如application/json;charset=utf-8)。 |
params |
指定请求必须包含的参数,否则不匹配该方法。 |
headers |
指定请求必须包含的 Header,否则不匹配该方法。 |
4.3配置响应 Header(以Content-Type为例)
- 实现方式 :通过
@RequestMapping的produces属性,指定响应的Content-Type。

- 示例场景 :
- 配置
produces = "application/json",响应的Content-Type会被设为 JSON 格式; - 配置
produces = "application/json;charset=utf-8",可同时指定字符编码,避免中文乱码。
- 配置
- 默认规则 :若不设置
produces,Spring MVC 会根据返回内容自动匹配Content-Type(如返回字符串时默认是text/html)。
4.3设置其他Header
设置其他Header的话,需要使⽤SpringMVC的内置对象HttpServletResponse提供的⽅法来进⾏设置

- 核心依赖 :在控制器方法中注入
HttpServletResponse对象,调用其setHeader(String name, String value)方法。 - 示例逻辑 :
- 方法内执行
response.setHeader("MyHeader", "MyHeaderValue"),即可在响应中添加名为MyHeader、值为MyHeaderValue的自定义 Header。 - 若 Header 名称已存在,
setHeader会覆盖原有值。
- 方法内执行
3.应用场景
自定义 Header 常用于传递额外的响应元信息,例如:
- 接口版本标识(如
Api-Version: 1.0); - 自定义的权限校验标识;
- 跨域请求的相关配置(如
Access-Control-Allow-Origin)。
4.4核心作用
通过手动设置状态码和 Header,可更精准地控制 HTTP 响应的元信息,适配不同的前端交互场景(如权限验证的状态码、接口数据的格式约定)。