Spring MVC -- 响应

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

文章目录

  • 3.响应
    • 3.1 返回静态页面
    • 3.2 返回HTML代码片段
    • 3.3 返回JSON
    • 3.4 设置状态码
    • 3.5 设置Header
      • 设置Content-Type
      • 设置其他Header

3.响应

3.1 返回静态页面

在这里插入图片描述

静态html页面一般放在static目录底下,访问路径是以static文件为根目录

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>Title</title></head><body><h1>我是页面</h1></body>
</html>

在这里插入图片描述

那么后端如何接收以后请求返回一个页面呢?

直接这样行吗?

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

我们来看看请求返回结果:
在这里插入图片描述

直接是以字符串的形式返回了

正确的做法是,我们需要将RestController改为Controller,以及将"index"改为"/index"

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

在这里插入图片描述

对于上述两个改动的解释:

  1. “index"改为”/index"

如果加上"/“,那么此时的路径就是"staitc/index”;如果没有"/“,那么此时的路径就是类路径加上文件名,即"static/response/index.html”

  1. 将RestController改为Controller

如果使用的是RestController,我们来看看结果:

在这里插入图片描述

此时就是直接返回字符串格式

这就是二者的区别

@RestController 返回数据,@Controller返回视图

实际上,我们看看@RestController的实现:

在这里插入图片描述

不难发现,@RestController = @Controller + @ResponseBody

我们在之前说过,加上@RestController 表示这个类交给Spring管理,实际上是@Controller起的作用

而@ResponseBody起到返回数据的作用,@Controller起到返回视图的作用

如果运行这样的程序:
@Controller
//@RestController
@RequestMapping("/response")
public class ResponseController {@RequestMapping("/getIndex")public String getIndex() {return "index.html";}@RequestMapping("getData")public String getData() {return "返回数据";}

访问getData就会发现报错

在这里插入图片描述

因为加上了Controller注解,默认返回视图,而"返回数据"不是一个正确的路径

那么我们使用ResponseBody注解即可

在这里插入图片描述

在这里插入图片描述

或者可以修饰类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以发现,此时就默认全部返回数据了

3.2 返回HTML代码片段

后端返回数据的时候,如果数据里面有HTML代码,就会被浏览器解析

在这里插入图片描述

3.3 返回JSON

@ResponseBody
@RequestMapping("getJSON")
public UserInfo getJSON() {UserInfo userInfo = new UserInfo(20,"wcb");return userInfo;
}

在这里插入图片描述

使用FIddler抓包:

在这里插入图片描述

即如果返回的是对象,会自动转为JSON

3.4 设置状态码

Spring MVC会根据我们方法的返回值结果自动响应设置状态码,程序员也可以手动指定状态码

@ResponseBody
@RequestMapping("setStatus")
public String setStatus(HttpServletResponse response) {response.setStatus(401);return "设置成功";
}

访问后使用Fiddler抓包

在这里插入图片描述

设置状态码是不影响响应结果的

3.5 设置Header

设置Header中的信息通过注解@RequestMapping实现

我们先来看@RequestMapping的源码

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
@Reflective({ControllerMappingReflectiveProcessor.class})
public @interface RequestMapping {String name() default "";@AliasFor("path")String[] value() default {};@AliasFor("value")String[] path() default {};RequestMethod[] method() default {};String[] params() default {};String[] headers() default {};String[] consumes() default {};String[] produces() default {};
}
  • value/path:指定映射的URL
  • mathod:指定请求的method类型.如GET//POST
  • Params:指定request中必须包含某些参数值时,才让这个方法处理
  • headers:指定request中必须包含某些特定的header值,才能让该方法处理请求
  • consumes:指定处理request的提交类型(Content-Type),例如application/json…
  • produces:指定返回的内容类型,仅当request请求头中的类型中包含该指定类型才返回

设置Content-Type

@ResponseBody
@RequestMapping(value = "/setContent-Type",produces = "application/json")
public String setContentType() {return "{\"status\":200}";
}

在这里插入图片描述

同时也可以设置响应编码

@ResponseBody
@RequestMapping(value = "/setContent-Type",produces = "application/json;charset=UTF-8")
public String setContentType() {return "{\"status\":200}";
}

在这里插入图片描述

设置其他Header

需要使用Spring MVC中的HttpServletResponse实现

@ResponseBody
@RequestMapping("/setHeader")
public String setHeader(HttpServletResponse response) {response.setHeader("MyHeader","MyHeaderValue");return "设置成功";
}

在这里插入图片描述

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接Redis异常:JedisMovedDataException

redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 5798 192.168.187.138:6379 在使用JAVA API连接redis的时候&#xff0c;出现了异常&#xff1a; 问题的原因 JAVA API实现是redis集群实现方式&#xff0c;而在配置文中就配置的是单结点的方式。 Moved表示使…

【BUG】已解决:error: subprocess-exited-with-error

已解决&#xff1a;error: subprocess-exited-with-error 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社区主…

【计算机方向】SCI三区宝刊!国人发文超级友好,录用容易,不能错过!

期刊解析 01 期刊信息 出版商&#xff1a;Academic Press Inc. ISSN&#xff1a;0743-7315 E-ISSN &#xff1a;1096-0848 期刊官方网站:并行与分布式计算杂志 |ScienceDirect.com by Elsevier 期刊投稿网址&#xff1a;https://www.editorialmanager.com/JPDC …

系统设计面试问题:设计​WhatsApp

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 ​ 在这个系统设计面试场景中&#xff0c;我们被要求设计一个类似于 WhatsApp 的消息应用程序。 虽然真正的面试可能会关注应用程序的一个或多个功能&#xff0c;…

2048小游戏,h5,纯前端

部分代码 //scorevar scoreSprite game.add.sprite(10, 10);var scoreGraphics game.add.graphics(0, 0);scoreGraphics.lineStyle(5, 0xA1C5C5);scoreGraphics.beginFill(0x308C8C);scoreGraphics.drawRoundedRect(0, 0, 70, 50, 10);scoreGraphics.endFill();scoreSprite.a…

PyTorch 深度学习实践-循环神经网络(高级篇)

视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记总代码练习 上课笔记 个人能力有限&#xff0c;重看几遍吧&#xff0c;第一遍基本看不懂 名字的每个字母都是一个特征x1,x2,x3…&#xff0c;一个名字是一个序列 rnn用GRU 用ASCII表作为词典&#xff0c;长度为128&#x…

业务系统核心模块资料访问性能优化实战

随着业务系统的云化转型不断推进&#xff0c;业务量呈现显著增长&#xff0c;对业务系统的性能和资源管理提出了更高要求。在这样的背景下&#xff0c;实现系统资源使用与性能指标的均衡成为保障生产系统高效稳定运行的核心任务。 在性能优化的范畴内&#xff0c;核心业务系统对…

苏州金龙海格汽车入选2024中国汽车行业可持续发展实践案例

2024年7月11日-13日&#xff0c;由中国汽车工业协会主办的第14届中国汽车论坛在上海嘉定举办。本届论坛隆重发布了“2024中国汽车行业可持续发展实践案例”&#xff0c;苏州金龙因在坚持绿色可持续发展方面做出的努力和贡献获评2024中国汽车行业可持续发展实践案例“绿色发展”…

【P2P_BMA_P2MP_NBMA】

基本概念介绍 1. BMA&#xff08;Broadcast&#xff09; 广播型多路访问技术&#xff0c;在一个MA&#xff08;多路访问&#xff0c;在一个网段内的节点数量不限制。&#xff09;网络中同时存在广播机制。 特点&#xff1a; 允许将数据包广播到网络上的所有主机。路由器之间…

【AI大模型Agent探索】深入探索实践 Qwen-Agent 的 Function Calling

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…

PyTorch 深度学习实践-卷积神经网络基础篇

视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记代码实现作业实现 上课笔记 如果一个网络全都是由线性层串联起来&#xff08;torch.nn.Linear(xx, yy)&#xff09;&#xff0c;就叫他全连接的网络(左边节点到右边节点任意两个都存在权重) 先看一下吴恩达或者李宏毅老师…

QT通用配置文件库(QPreferences)

QT通用配置文件库(QPreferences) QPreferences项目是基于nlohmann/json的qt可视化配置文件库&#xff0c;将配置保存成json格式&#xff0c;并提供UI查看与修改&#xff0c;可通过cmake可快速添加进项目。默认支持基本类型、stl常用容器、基本类型与stl容器组成的结构体&#…

【Git标签管理】理解标签 | 创建标签 | 查看标签 | 删除标签 | 推送标签

目录 1.理解标签 2.创建标签 3.查看标签 4.删除本地仓库的标签 5.推送标签 6.删除远程仓库的标签 1.理解标签 Git提供一个打标签的功能tag&#xff0c;对某一次事务/提交的表示&#xff08;作用/意义&#xff09;。标签 tag &#xff0c;可以简单的理解为是对某次 comm…

Java(二十二)---队列

文章目录 前言1.队列(Queue)的概念2.Queue的使用3.队列的模拟实现4.循环队列5.双端队列6.面试题[1. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/description/)[2. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/de…

人工智能导论-机器学习

机器学习概述 概述 本章主要介绍的机器学习的概念、发展历程、发展趋势、相关应用&#xff0c;着重拓展机监督学习和无监督学习的相关知识。 重点&#xff1a;机器学习的定义和应用&#xff1b; 难点&#xff1a;机器学习算法及分类。 机器学习 - 重要性 MachineLeaning出…

<数据集>钢板缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1986张 标注数量(xml文件个数)&#xff1a;1986 标注数量(txt文件个数)&#xff1a;1986 标注类别数&#xff1a;7 标注类别名称&#xff1a;[crescent gap, silk spot, water spot, weld line, oil spot, punchin…

工业圆点定位激光器主要应用场景有哪些?

在现代工业生产的各个领域&#xff0c;精确定位和高效操作已成为提升生产效率和产品质量的关键。其中&#xff0c;工业圆点定位激光器以其高精度、高效率的特性&#xff0c;成为了众多工业应用中的核心工具。接下来我们就跟着鑫优威一起来深入了解一下关于工业圆点定位激光器的…

抖音/快手/小红书私信卡片在线制作

W外链平台&#xff0c;作为现代网络营销领域的一颗璀璨明星&#xff0c;其强大的功能和独特的优势已经吸引了无数企业和个人的目光。在如今这个信息爆炸的时代&#xff0c;如何有效地将自己的网站、产品、服务推广出去&#xff0c;成为了每个营销人员都在思考的问题。而W外链平…

CentOS 7报错:yum命令报错 “ Cannot find a valid baseurl for repo: base/7/x86_6 ”

参考连接&#xff1a; 【linux】CentOS 7报错&#xff1a;yum命令报错 “ Cannot find a valid baseurl for repo: base/7/x86_6 ”_centos linux yum search ifconfig cannot find a val-CSDN博客 Centos7出现问题Cannot find a valid baseurl for repo: base/7/x86_64&…

uniapp 微信默认地图选点功能实现

效果图 配置项 微信公众平台-小程序配置 uniapp配置 上代码 <template><view class"content"><button click"toMap">请选择位置</button></view> </template><script setup lang"ts">function toMa…