Java之Spring MVC篇三

![](https://pic.it1024doc.com/csdn/202412/1a8934ea1b097949f559a12ad79fd34c.gif)​​​​​​​

**目录**

[响应](#响应)

[返回静态页面](#返回静态页面)

[@RestController 和 @Controller的区别和联系](#@RestController-和-@Controller的区别和联系)

[返回数据@ResponseBody](#返回数据@ResponseBody)

[关于@ResponseBody](#关于@ResponseBody)

[返回HTML代码片段](#返回HTML代码片段)

[返回JSON](#返回JSON)

[设置状态码](#设置状态码)

[设置Header](#设置Header)

[设置Content-Type](#设置Content-Type)

[没设置Content-Type之前](#没设置Content-Type之前)

[设置Content-Type之后](#设置Content-Type之后)

* * *

#### 响应

##### 返回静态页面

在`resources/static`路径下创建一个HTML文件:

```html



 
 Index页面


 Hello, Spring MVC, 我是Index页面。


处理并返回index.html的代码:

@RestController
public class ResponseController {
    @RequestMapping("/index")
    public String index() {
        return "/index.html";
    }
}

响应结果:

Java之Spring MVC篇三

却发现页面未正确返回,HTTP响应把"/index.html"当作了HTTP响应正文的数据。那么,Spring MVC如何识别出index.html是一个静态页面,并进行返回呢?我们需要将@RestController改为@Controller

修改后的代码:

@Controller
public class ResponseController {
    @RequestMapping("/index")
    public String index() {
        return "/index.html";
    }
}

响应结果:

Java之Spring MVC篇三

@RestController 和 @Controller的区别和联系

Java之Spring MVC篇三

@RestController = @ResponseBody + @Controller

联系:

  1. 组合关系:@RestController可以被视为@Controller@ResponseBody的组合注解。这意味着,当你在类上使用@RestController注解时,它实际上同时应用了@Controller@ResponseBody的效果。
  2. 用途相似:两者都用于处理HTTP请求,但它们处理请求后返回的内容类型不同。

区别:

  1. 返回内容类型:
  2. @Controller:用于处理HTTP请求,并将处理结果返回给客户端。控制器类中的方法通常通过@RequestMapping或其衍生注解来映射特定的URL请求路径和HTTP方法。返回的结果可以是一个视图名称,框架会根据视图解析器将其解析为具体的视图页面(如HTML页面)。
  3. @RestController:专门用于构建RESTful API。与@Controller不同的是,@RestController注解的类中的每个方法都默认返回JSON、XML或其他数据类型,而不是视图。在Spring MVC中,使用@RestController相当于在每个方法上都添加了@ResponseBody注解,用于直接返回数据对象或集合,而不是视图。
  4. 应用场景:
  5. @Controller:通常用于传统的Web应用开发,负责处理HTTP请求,并返回视图页面。它适用于需要渲染视图页面的场景,如动态网站开发。
  6. @RestController:则专门用于构建RESTful API,处理HTTP请求,并直接返回数据对象或集合,而不是视图。它适用于构建微服务、移动应用后端服务等需要直接提供数据接口的场景。
    默认行为:
  7. 使用@Controller注解的类,其方法默认返回的是视图名称,需要配合视图解析器来渲染视图。
  8. 使用@RestController注解的类,其方法默认返回的是JSON、XML等数据格式,Spring MVC会自动将数据对象序列化为相应的格式,并设置正确的HTTP响应头。
返回数据@ResponseBody
@ResponseBody
@RequestMapping("/indexData")
public String indexData() {
    return "返回数据";
}

Java之Spring MVC篇三

关于

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4494.html

(0)
LomuLomu
上一篇 2024 年 12 月 27 日 下午3:38
下一篇 2024 年 12 月 27 日

相关推荐

  • Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等

    目录 前言 集合类 ArrayList 1. 创建和初始化 ArrayList 2.添加元素 add 3.获取元素 get 4.删除元素 remove 5.检查元素 6.遍历 ArrayList LinkedList Stack 1. 创建Stack对象 2. 压入元素 (push) 3. 弹出元素 (pop) 4. 查看栈顶元素 (peek) 5. 检查栈…

    2025 年 1 月 1 日
    69700
  • ChatGPT Plus国内支付充值操作实用版

    没有海外信用卡时,国内用户开通 ChatGPT Plus 往往会卡在付款环节。虚拟卡要注册和维护,礼品卡还涉及地区设置,共享账号又不适合长期输入工作资料。 下面这套流程适合已经有 ChatGPT 账号、想把 Plus 开到自己账号上的用户。

    未分类 2026 年 6 月 6 日
    3700
  • 高效灵活!企业级IT资产配置管理数据库解决方案

    在现代企业IT运维中,基础设施规模庞大且变动频繁,传统管理方式往往难以应对复杂的资产配置需求。本文为您推荐一款模块化设计的运维配置管理数据库系统,它能有效提升企业IT团队对硬件设备和软件服务的管控效率。 产品概述 CMDB Pro是一款采用现代化架构的配置管理数据库,具备模型自定义和智能资源探测能力,专为解决企业级IT资产管理难题而设计。核心优势:- 智能探…

    2025 年 5 月 11 日
    43000
  • SuperGrok代充自己账号开通实用版

    国内用户开通 Grok Super 的充值教程,整理 Grok 充值、代充、国内支付、账号 ID 获取和确认充值步骤。

    未分类 2026 年 6 月 6 日
    4200
  • 交易系统:应用层、领域层分层架构设计

    大家好,我是汤师爷~ 线上线下交易系统的应用架构包括终端、应用层、领域层和关联系统。 应用层能力 应用层定义软件的应用功能,负责接收用户请求、协调领域层执行任务并返回结果。主要包括以下模块: 1)C端服务模块 为消费者提供完整的交易链路功能,包括加购、下单、支付、结算、拆单、确认收货和退货退款等。 2)商家后台 为商家提供全面的订单管理功能,包括订单操作、搜…

    2024 年 12 月 28 日
    60900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信