简述
我们在servlet的service方法中有两个参数,分别是ServletRequest和ServletResponse,如果想掌握这两个参数,我们必须对请求消息和相应消息有个深入的理解。
请求消息
请求消息本质上就是客户端告诉服务器的一些信息。
请求消息由请求行、请求头、请求空行、请求体组成。
像这样就是一个完整的请求消息
POST /login.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
请求行
请求方式 请求url 请求协议/版本
例: GET /login.html HTTP/1.1
* 请求方式:
* HTTP协议有7中请求方式,常用的有2种
* GET:
1. 请求参数在请求行中,在url后。
2. 请求的url长度有限制的
3. 不太安全
* POST:
1. 请求参数在请求体中
2. 请求的url长度没有限制的
3. 相对安全
如果面试问你,get请求和post请求有什么区别,那么请看超人:https://www.cnblogs.com/logsharing/p/8448446.html
请求头
格式:请求头名称: 请求头值
例: Host: localhost
注意值有多个的情况下值用逗号隔开
例如这样就是一个整个的请求头
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
常见的请求头:
1.User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题
2.Accept: 我作为浏览器可以解析哪些文件
3.Referer:http://localhost/login.html : 告诉服务器,我(当前请求)从哪里来?可以防盗链
什么是盗链呢?意思是一些盗版网站用了别人网站的链接
同时Referer头可以做一个来源统计的操作。
4.Connection: 连接是否可以被复用
请求空行
请求空行就是一个空行,意思就是告诉服务器从下一行开始就没有请求头了
请求体
注意get请求是没有请求体的,只有post请求有请求体
请求体是以键值对的方式传输的
post的请求体就是以键值对
一点一点积累,一点一点蜕变!