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
今天先看怎么获取,不说获取后的功能怎么用。
举例: