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

相关推荐
保持学习ing5 分钟前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
京东云开发者16 分钟前
Java的SPI机制详解
java
超级小忍38 分钟前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
程序无bug42 分钟前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
小莫分享1 小时前
Java Lombok 入门
java
程序无bug1 小时前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队1 小时前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端
苦学编程的谢1 小时前
Maven
java·maven·intellij-idea
考虑考虑1 小时前
Maven 依赖范围(Scope)
java·后端·maven
张小洛1 小时前
Spring AOP 设计解密:代理对象生成、拦截器链调度与注解适配全流程源码解析
java·后端·spring·spring aop·aop