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

文章目录

1.cookie和session获取

1.1servlet写法获取

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

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

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

1.2spring获取cookie

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

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

1.3传统方法获取session

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

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

1.4sring获取session内容

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

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

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

2.访问静态页面

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

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

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

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

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

restcontroller是基于这个controller进行实现的,这个是我们通过上面的这个现象想要让大家知道的;
restcontroller只能加在这个类上面,
requestmapping既可以添加在这个类上面,也可以添加在这个方法上面;

这个就是因为我们的这个target里面的这个type表示的就是我们的这个注解只能加在这个类上面;
在这个requestmapping里面的这个target还有一个method,因此这个就可以加在我们的这个方法上面
(这个和我们之前介绍的这个注解有关:元注解,内置注解,可以下去学习一下,有助于我们的这个学习);

retention表示我们的这个注解的生命周期;
restcontroller=controller+respondbody(因此这个respondbody就是我们的这个restcontroller和我们的这个controller之间的这个主要的差别);
responsebody就是前后端交互的时候的数据,这个其实和我们的这个发展史有关,就是之前我们使用的这个control是只会返回这个页面,并不会返回这个里面的数据,但是这个restcontrol就可以连带这个数据一起返回;

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

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

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

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

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

4.responsebody的介绍

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

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

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

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

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

5.返回html的片段

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

6.不同相应content-type类型

6.1text/html类型

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

6.2application-json类型

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

6.3 js/css类型

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

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

7.设置状态码

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

8.自定义content类型和编码

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

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

9.自定义header

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

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

相关推荐
一个松几秒前
IDEA报包不存在,但实际存在
java·ide·intellij-idea
一直学习永不止步3 分钟前
LeetCode题练习与总结:至少有 K 个重复字符的最长子串--395
java·算法·leetcode·字符串·滑动窗口·哈希表·分治
一叶飘零_sweeeet9 分钟前
JVM 中的完整 GC 流程
java·开发语言·jvm
猫爪笔记10 分钟前
JavaSE:运算符 (学习笔记)
java·开发语言·笔记·学习
p-knowledge12 分钟前
javaCV流媒体处理demo
java·javacv
百香果果ccc16 分钟前
Java中的集合
java·开发语言
九转成圣24 分钟前
如何在 IntelliJ IDEA 中去掉 Java 方法注释后的空行
java·intellij-idea·idea·intellij idea
潇雷25 分钟前
Netty(3)进阶篇|半包粘包、编解码器
java·后端·netty
奔跑的废柴40 分钟前
Spring Boot 自动装配原理
java·spring boot·后端
脑瓜疼啊脑瓜疼40 分钟前
Java中的HTML元素设置:背景、列表与超链接
java·开发语言·html