文章目录
- 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写法获取
这个时候我们直接到这个浏览器进行测试:
发现是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里面就会显示我们的这个自定义的内容;