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里面就会显示我们的这个自定义的内容;

相关推荐
num_killer7 小时前
小白的Langchain学习
java·python·学习·langchain
期待のcode8 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐8 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
a程序小傲8 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红8 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥8 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v8 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地9 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl200209259 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei9 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot