SpringMVC——响应

执行了业务逻辑逻辑之后,要把程序执行的结果返回给用户,也就是响应。

一、返回静态页面

返回页面是用@Controller而不是用@RestController。(@RestController和@Controller只能加在类上,@RestMappling可加在类和方法上)

java 复制代码
@Controller
@RequestMapping("/response")
public class ResponseController{
    @RequestMapping("/returnHtmlPage")
    public String returnHtmlPage(){
        return "/hello.html";
    }
}

@Target表明注解可以用在哪里。(TYPE表示可以用在类上、METHOD表示可以用在方法上)

@Retention指的注解的作用域。(SOURSE:源码、CLASS:编译、RUNTIME:运行阶段)

@Documented

上述三个注解是源注解,可以用来生成其他注解

@ResponseBody表示返回数据

@Controller -> 返回页面

@RestController = @Controller + @ResponseBody -> 返回数据

二、返回数据@ResponseBody

即是类注解又是方法注解,表示返回数据。加在类上表示该类的所有方法返回的都是数据而不是页面;加在方法上表示该方法返回的是数据,其他方法不受影响。

三、返回HTML代码片段

必须使用@ResponseBody,因为返回的是数据而非视图

java 复制代码
@ResponseBody
@RequestMapping("/returnHtml")
public String returnHtml(){
    return "<h1>returnHtml</h1>";
}

四、返回JSON

后端方法直接返回结果为对象就会自动转为json

java 复制代码
@ResponseBody
@RequestMapping("/returnJson")
public User returnJson(){
    User user = new User();
    user.setName("zhangsan");
    user.setAge(18);
    return user;
}

五、设置状态码

java 复制代码
@ResponseBody
@RequestMapping("/setStatus")
public User setStatus(HttpServletResponse response){
    User user = new User();
    user.setName("zhangsan");
    user.setAge(18);
    response.setStatus(500);
    return user;
}

六、设置Header

设置response的header,之前是获取请求里的header

RequestMapping的源码

6.1 设置Content-Type

java 复制代码
@ResponseBody
@RequestMapping(value = "/setHeader",produces = "application/json")
public String setHeader(){
    return "{\"success\":true}";
}

6.2 设置其他header

java 复制代码
@ResponseBody
@RequestMapping("/setHeader2")
public String setHeader2(HttpServletResponse response){
    response.setHeader("myKey","myValue");
    return "success";
}

返回String类型,默认是返回text/html

返回对象类型,默认是返回application/json

相关推荐
Highcharts.js1 小时前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
小辰记事本7 小时前
从零读懂RoCEv2数据包构造:从WQE到线缆上的完整旅程
服务器·网络·网络协议·rdma
LaughingZhu8 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
怕浪猫8 小时前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
Mahir088 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
小鹏linux8 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
RyFit9 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码9 小时前
C++ 内存分区 堆区
java·开发语言·c++
前端若水9 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
绝知此事9 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表