http请求数据
现在我们浏览器f12的那些是浏览器给http格式数据整理之后便于我们阅读的。
原始的http格式信息:
就是按照一定格式和符号的字符串:
请求行:格式如下图
请求头:一个个key,value数据,用,分割多个,是客户端想给服务端说的一些话,服务器可以来解析这些信息。key是固定的,值是不一样的。
请求空行:就是一个空行,用来分隔请求头和请求体的作用。
请求体:get方式没有请求体,换成post方式有,就是请求的一些参数数据。

请求行

请求头
请求头还有很多,后面学更多才能知道
先解释一下下图的几个常见的请求头:


host:请求的主机是localhost
User-Agent:服务器根据浏览器不同做不同的处理
Accept:我这个浏览器可以接收你给我什么样的响应的信息格式,*/*是什么格式都可以
language:我浏览器可以支持的语言环境
encoding:我可以接收的压缩格式
connection:我的连接还活着,活着表示连接可以被复用,http1.1是可以被复用的,1.0的这里应该是断开的值。
**referer:**比较重要,告诉服务器我这个请求从哪来。在早期很有用,那时候版权意识不强,现在用的不多了。
防盗链,统计:

请求体
get请求没有请求体

request和response的原理


request的继承体系
实现类RequestFacade是由tomcat创建的。

request的功能
http格式的数据由四部分构成:
请求行
请求头
请求体
request的功能:

获取请求消息数据
获取请求行数据

代码演示:
获取请求头数据

代码演示:

refer演示:

response的意思先不解释,先这么写:

获取请求体数据
字符数据:username=“张三”
字节数据:上传文件,图片,视频
所以获取流对象有两种流,一种是字节流,一种是字符流。

代码演示字符输入流:




其他功能:
获取请求参数通用方式
上面方法常用的就这三个:其余的都不是很常用



基于上面那些,又有一些方法更方便使用request对象,这些都很常用:

代码举例:
中文乱码问题:
举例:


乱码了:

但是使用get方式,就不会乱码了。
说明:
如果是tomcat8及其以上版本,get方式不会乱码了,tomcat内部帮解决完了。
原因:
get方式参数是在url里面的,post方式参数通过request.getParameter(“username”)获取,内部通过是是流来获取的参数的值,所以需要在get获取之前设置一下流的编码:

页面上是什么编码,这边就改成什么编码:

总结:不管get,post直接都在第一行写上就行

请求转发
一种在服务器内部的资源跳转方式.
情景:
aservlet里面的功能在bservlet里面实现,所以相当于aservlet里做了一部分后,跳转到bservlet。
就可以使用请求转发完成。

举例:


共享数据
情景:
aservlet期望发送一些数据给bservelt,数据怎么通信。
域:范围的意思
request域:
代表一次请求的这个范围。基本就在转发的时候用,a调用b,就在一次请求的这个范围内。
a在里面用request存储了一些数据(转发之前存储),由于request对象的范围包括b,所以b可以获得这个数据。

举例:

获取ServletContext
今天先看怎么获取,不说获取后的功能怎么用。

举例:











![[Meachines] [Medium] MonitorsThree SQLI+Cacti-CMS-RCE+Duplicati权限提升](https://img-blog.csdnimg.cn/img_convert/ec0a89c20cb3cca3b2df26efab562a59.jpeg)








