JavaEE进阶----SpringMVC(三)---响应的获取

文章目录

  • 1.cookie和session获取
    • 1.1servlet写法获取
    • 1.2spring获取cookie
    • 1.3传统方法获取session
    • 1.4sring获取session内容
  • 2.访问静态页面
  • 3.一个项目部署多个服务
  • 4.responsebody的介绍
  • 5.返回html的片段
  • 6.不同相应content-type类型
    • 6.1text/html类型
    • 6.2application-json类型
    • 6.3 js/css类型
  • 7.设置状态码
  • 8.自定义content类型和编码
  • 9.自定义header

1.cookie和session获取

1.1servlet写法获取

这个时候我们直接到这个浏览器进行测试:

image-20241112111859631

发现是500,因此我们到这个idea查看错误日志:

image-20241112111942488

image-20241112111959662

这个时候,我们需要在这个代码进行判断这个是不是null:

1.2spring获取cookie

我们使用这个内置对象的注解进行设置,

image-20241112112653025

然后到我们的这个postman里面添加这个cookie进行发送

image-20241112112708856

1.3传统方法获取session

session属于服务器端的内容,我们无法伪造,因此我们需要先设置,在获取;

image-20241112113518918

我们可以直接调用这个r4就会提示我们的这个是空的,然后我们调用这个r3,会提示我们这个设置成功了,然后再次调用这个r4就会显示下面的这个情况;

image-20241112113508299

1.4sring获取session内容

下面的这个就是使用我们的这个spring里面的这个内置的对象

image-20241112113931933

image-20241112113917864

除此之外,我们还可以使用下面的这个写法,也是可以把我们的这个用户名显示出来的

image-20241112114206680

如果我们的这个不传参数就会报错,我们可以设置这个第二个参数:false就可以不传参数且不会报错;

image-20241112114445159

2.访问静态页面

下面的这个就是在这个static目录下面新建一个html文件,在这个文件里面随便写一点内容(下面的这个代码里面是有问题的,这个r1方法里面的这个return里面的这个内容需要修改为这个/test01.html);

image-20241111205837090

下面的这个就是把我们的这个名字进行返回了,显然不是我们想要实现的效果;

image-20241111204246300

如果我们的这个test01.html在一个其他的目录下面,而不是直接在我们的这个static下面的,这个时候我们需要把这个所属的目录的名字也添加上去;

正确的这个运行的方法就是不需要路径,直接进行访问这个静态的页面即可;

image-20241111204852111

但是如果我们把这个注解修改为这个controller这个注解,这个时候我们就可以使用我们的这个注解里面涉及到的这个路径(我们之前使用这个@RequestController的时候,我们只能直接写这个静态页面的名字,而不可以写这个路径,因为即使是写了这个也是显示不出来效果的,反而是把这个项目文件的名字打印出来–上面也是展示了这个现象,就是我们最开始引入的时候);

image-20241111205949991

restcontroller是基于这个controller进行实现的,这个是我们通过上面的这个现象想要让大家知道的;
restcontroller只能加在这个类上面,
requestmapping既可以添加在这个类上面,也可以添加在这个方法上面;这个就是因为我们的这个target里面的这个type表示的就是我们的这个注解只能加在这个类上面;
在这个requestmapping里面的这个target还有一个method,因此这个就可以加在我们的这个方法上面
(这个和我们之前介绍的这个注解有关:元注解,内置注解,可以下去学习一下,有助于我们的这个学习);retention表示我们的这个注解的生命周期;
restcontroller=controller+respondbody(因此这个respondbody就是我们的这个restcontroller和我们的这个controller之间的这个主要的差别);
responsebody就是前后端交互的时候的数据,这个其实和我们的这个发展史有关,就是之前我们使用的这个control是只会返回这个页面,并不会返回这个里面的数据,但是这个restcontrol就可以连带这个数据一起返回;

image-20241111212629341

3.一个项目部署多个服务

就是我们的这个springboot里面是内置了这个Tomcat的,因此我们的这个程序启动起来的时候,就会自动跑起来一个tomcat,这个时候我们想要部署多个服务需要新的这个tomcat,这个时候需要我们自己手动进行设置(我自己的这个只是成功了一次,但是把这个过程记录下来,大家可以在自己的这个idea上面摸索);

如果我们以后学习这个分布式的时候,就是一个项目需要支撑多个服务,这个时候我们就需要使用这个方法添加我们需要的这个tomcat;

image-20241111212154224

下面的这个就是点击这个modify options选项;

image-20241111211402358

选择这个里面的addvm options这个选项,然后制定一个新的端口,这个时候就会给这个端口一个新的tomcat,这样话我们的这个项目就会部署多个服务,每一个服务都会有自己的这个tomcat,这个就是需要我们自己手动进行配置;

image-20241111211427256

4.responsebody的介绍

下面的这个就是看看这个responsebody的这个具体的作用:

我们上面使用的是这个controller这个注解,这个时候,我们指定这个路径运行发现是找不到的,因此这个时候他把这个hello html当做一个页面进行寻找了;

image-20241111214159945

但是如果我们在这个r2方法的这个上面加上这个response之后,我们的这个页面没有找打的话,也会把这个数据返回,让我们的这个客户端看到效果,而不是像上面的这个直接报错;

image-20241111214336912

通过上面的这个前后的变化,我们可以对于这个controller和restcontroller之间差别的这个responsebody有了一个更进一步的理解;也知道了这个返回数据的具体的含义:就是默认的情况先是把这个当做页面进行寻找的,但是加上这个之后找不到也会返回这个数据;

但是我们现在使用这个restcontroller是比较多的;这个reponsebody就可以修饰这个类,也可以修饰方法;

5.返回html的片段

image-20241112083851717

因为这个返回的是这个内容,我们的这个类注解使用的是这个controller,因此我们需要添加上这个responseBody这个注解,让这个返回我们的html片段里面的内容;

image-20241111215147365

6.不同相应content-type类型

6.1text/html类型

在上面的这个返回值是一个html片段的时候,我们通过抓包可以看到这个content-type类型表示的就是text/html类型,这个和我们发送的数据的类型是一致的;

image-20241112085531301

6.2application-json类型

当我们返回的是这个对象(我们自定义的这个userinfo对象的时候,这个时候的contenttype就是我们的这个application-json数据类型:(通过抓包可以查看这个效果);

image-20241112085944957

image-20241112085929611

6.3 js/css类型

下面的这个就是我们在这个static文件夹下面新建两个其他的类型的文件,什么内容都可以不用写,这个时候我们的这个返回值就是我们的这个文件(不需要加上这个responsebody这个注解);

我们通过抓包就可以发现这个content-type类型也是会被自动的识别到的;一个是text/javascript类型的,一个是text/css类型的;

image-20241112090440413

image-20241112090250532

image-20241112090344331

7.设置状态码

下面的这个状态码虽然是401,但是这个状态码的设置不会影响我们的页面的显示

image-20241112090911710

image-20241112090837774

8.自定义content类型和编码

下面的这个就是返回的一个json字符串,这个时候如果我们不进行任何的设置,这个时候抓包的效果就是返回的text/html,这个时候需要哦我们呢添加一些额外的配置;

就是使用这个produces这个参数,对于这个数据的类型进行指定,此外我们也可以指定这个编码的类型utf-8,都是可以的,不然这个默认的抓包的类型就是我们的text/html类型的(大家可以自己验证测试);

image-20241112092448099

image-20241112092434757

9.自定义header

我们自己定义这个header里面的这个内容,使用的就是我们的这个setheader方法:

抓包就会看到这个header里面就会显示我们的这个自定义的内容;

image-20241112093042027

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

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

相关文章

Chromium 中MemoryMappedFile使用例子c++

文件映射基础介绍参考微软官网: 使用文件映射 - Win32 apps | Microsoft Learn 在文件中创建视图 - Win32 apps | Microsoft Learn 创建命名的共享内存 - Win32 apps | Microsoft Learn 使用大页面创建文件映射 - Win32 apps | Microsoft Learn 从文件句柄获取…

OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示

当打开蓝牙后没有反应时,需要排查蓝牙节点是否对应、固件是否加载成功,本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法,触觉智能SBC3568主板演示 修改对应节点 开发板蓝牙硬件连接为UART1,修改对应的节点,路径为…

前端 JS面向对象 原型 prototype

目录 一、问题引出 二、prototype原型对象 三、小结 四、constructor 五、__proto__对象原型 六、原型链 一、问题引出 由于JS的构造函数存在内存浪费问题: function Star(name,age){this.namenamethis.ageagethis.singfunction () {console.log("唱歌&…

生成 Django 中文文档 PDF 版

文章目录 背景克隆 Django 文档和翻译仓库配置 conf.py设置和同步翻译生成 .pot 文件运行 sphinx-intl update复制翻译文件 构建 PDF生成 tex 文件安装 MikTeX生成 PDF Sphinx 生成文档 背景 浏览看到一个帖子,有个评论说可以用 sphinx 构建一个 pdf,正…

mysql 实现分库分表之 --- 基于 MyCAT 的分片策略详解

引言 在我们日常工作的项目中,特别是面向 C 端用户的产品,随着业务量的逐步扩大,数据量也呈指数级增长。为了应对日益增长的数据库压力,数据库优化已成为项目中不可或缺的一环,而分库分表则是海量数据优化方案中的重要…

JUC-locks锁

JUC-locks锁 1、JUC-locks锁概述2、管程模型3、ReentrantLock可重入锁3.1 ReentrantLock源码3.2 Sync静态内部类3.3 NonfairSync非公平锁3.4 FairSync公平锁 如有侵权,请联系~ 如有错误,也欢迎批评指正~ 1、JUC-locks锁概述 java…

GEE 数据集——美国gNATSGO(网格化国家土壤调查地理数据库)完整覆盖了美国所有地区和岛屿领土的最佳可用土壤信息

目录 简介 代码 引用 网址推荐 知识星球 机器学习 gNATSGO(网格化国家土壤调查地理数据库) 简介 gNATSGO(网格化国家土壤调查地理数据库)数据库是一个综合数据库,完整覆盖了美国所有地区和岛屿领土的最佳可用土…

kettle开发-Day43-数据对比

前言: 随着数字化的深入,各种系统及烟囱的建立,各系统之间的架构和数据存储方式不同,导致做数据仓库或数据湖时发现,因自建的系统或者非标准化的系统经常存在物理删除而不是软删除。这就延伸出一个问题,经常…

哪款开放式耳机好用?5款实力出众的开放式耳机按头安利!

随着耳机市场日益火爆,许多品牌与款式不断涌现。但是,不少劣质产品在核心性能上缺乏专业优化,且选用低质材料,在音质还原度和佩戴舒适性等关键方面存在明显短板,导致性能欠佳,聆听体验不佳,还可…

Unity资源打包Addressable资源保存在项目中

怎么打包先看“Unity资源打包Addressable AA包” 其中遗留一个问题,下载下来的资源被保存在C盘中了,可不可以保存在项目中呢?可以。 新建了一个项目,路径与“Unity资源打包Addressable AA包”都不相同了 1.创建资源缓存路径 在…

矩阵的各种计算:乘法、逆矩阵、转置、行列式等——基于Excel实现

在Excel中,可以使用内置的函数和公式来实现矩阵的各种计算。以下是具体方法: 矩阵乘法: 使用MMULT函数。如图矩阵A在单元格范围A1:B2,矩阵B在单元格范围D1:E2,结果矩阵的左上角单元格为G1:选中结果矩阵的区域(如G1:H2)。输入公式:=MMULT(A1:B2, D1:E2)。按Ctrl+Shift…

[ComfyUI]Flux:繁荣生态魔盒已开启,6款LORA已来,更有MJ6写实动漫风景艺术迪士尼全套

今天,我们将向您介绍一款非常实用的工具——[ComfyUI]Flux。这是一款基于Stable Diffusion的AI绘画工具,旨在为您提供一键式生成图像的便捷体验。无论您是AI绘画的新手还是专业人士,这个工具都能为您带来极大的便利。 在这个教程中&#xff…

【设计模式】关联关系与依赖关系

UML 图将事物之间的联系分为 6 种:关联、依赖、聚合、组合、泛化、实现 我认为关联关系和依赖关系非常不好理解。 我们看下定义: 关联:表示一种拥有的关系。具有方向性。如果一个类单方向的访问另一个类,称为单向关联。如果两个类…

前端Cypress自动化测试全网详解

Cypress 自动化测试详解:从安装到实战 Cypress 是一个强大的端到端(End-to-End, E2E)功能测试框架,基于 Node.js 构建,支持本地浏览器直接模拟测试,并具有测试录屏功能,极大地方便了测试失败时的…

#渗透测试#SRC漏洞挖掘#云技术基础02之容器与云

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Android 下内联汇编,Android Studio 汇编开发

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 内联汇编 Android 内联汇编非常适用于 ARM 架构的性能优化和底层操作,通常用于加密、解密、特定指令优化等领域。 1. 基础语法 内联汇编在 C/C …

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ 🌟个人主页:落叶 🌟当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…

RHCE的学习(16)(shell脚本编程)

第一章、shell入门基础 1.1 为什么学习和使用Shell编程 对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的。通过编程,可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。 Shell程序的特点&#xff…

信号量和线程池

1.信号量 POSIX信号量&#xff0c;用与同步操作&#xff0c;达到无冲突的访问共享资源目的&#xff0c;POSIX信号量可以用于线程间同步 初始化信号量 #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); sem&#xff1a;指向sem_t类…

docker运行ActiveMQ-Artemis

前言 artemis跟以前的ActiveMQ不是一个产品&#xff0c;原ActiveMQ改为ActiveMQ Classic, 现在的artemis是新开发的&#xff0c;和原来不兼容&#xff0c;全称&#xff1a;ActiveMQ Artemis 本位仅介绍单机简单部署使用&#xff0c;仅用于学习和本地测试使用 官网&#xff1a;…