GET /day08/first HTTP/1.1 --请求行
Host: localhost:8080 --请求头(以键值对形式出现)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en-US;q=0.8,zh-CN;q=0.6,zh;q=0.4,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
--一个空行
name=eric&password=123456 --- 实体内容
请求行
http协议版本:
http1.0: 当浏览器和服务器连接之后,在一次连接中只能发出一个请求
http1.1:当浏览器和服务器连接之后,在一次连接中可以发出多次请求。(效率比1.0更高)
常见问题:
在一个html页面,在页面上有三张图片,访问这个html页面,问一共发出几次请求?
答案:4次,因为每个资源都需要一次请求
请求资源:请求服务器的哪个资源文件
URI: 统一资源描述符。可以描述任何文件,本地,互联网
http://localhsot:8080/Test/first:URL : 统一资源定位符,互联网(基于http协议) ,是URI的子集。
请求方式(提交方式):
http协议中的请求方式:GET、POST、HEAD、PUT、CONNECT。。。。
最常用的的请求方式: GET 和 POST
<form action="提交的地址" method="get/post
</form>
GET:
1)提交的参数显示到地址栏
原理: get方式提交的参数会跟在请求行内容的URI后面。以?开始,每个参数使用=号分开,name=jacky,第二个参数之后使用&符合连接。
GET /day08/testMethod.html?name=jacky&password=123456 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en-US;q=0.8,zh-CN;q=0.6,zh;q=0.4,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/day08/testMethod.html
Connection: keep-alive
2)不适合存放敏感数据
3)不超过1kb
POST:
1)提交的参数不会显示到地址栏
原理:post提交的参数跟在请求的实体内容中。第二个参数用&连接
POST /day08/testMethod.html HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en-US;q=0.8,zh-CN;q=0.6,zh;q=0.4,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/day08/testMethod.html
Connection: keep-alive
name=jacky&password=123456 -实体内容
2)适合敏感数据
3)提交的大小没有限制
请求头:
Accept: text/html,image/* --浏览器接受的数据类型
Accept-Charset: ISO-8859-1 --浏览器接受数据编码格式
Accept-Encoding: gzip,compress --浏览器接受的数据压缩格式
Accept-Language: en-us,zh- ---浏览器接受的语言
Host: www.it315.org:80 --请求发出的主机和端口(必须)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --浏览器缓存的最后修改时间
Referer: http://www.it315.org/index.jsp -- 当前请求来自于哪里 (防止非法链接)
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器的类型
Cookie:name=eric ---浏览器保存的cookie数据
Connection: close/Keep-Alive ---浏览器和服务器的连接状态。close:关闭。keep-alive:保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT --请求发出的时间
案例- user-agent头 -- 获取浏览器类型
案例- referer头 --- 防止非法链接
第一次:下载资源 - > 下载页面 -> 打开广告页面(下载链接) -> 开始下载
第二次:直接点击下载链接 -> 跳转广告页面(下载链接) -> 开始下载
非法请求:
1)直接访问下载资源
2)不是从广告页面过来的请求
referer请求头只有从超链接过来的请求才有这个头
2.5 获取参数数据
get: 放在请求行的URI后面
post: 放在请求的实体内容
reuqest.getParameter("name") 获取一个值的参数
request.getParameterValue("name") 获取多个值的参数
request.getParameterNames() 获取所有参数名称
request.getParameterMap() 获取所有参数对象
解决get乱码问题:
if("GET".equals(request.getMethod())){
name = new String(name.getBytes("iso-8859-1"),"utf-8");
}
解决post乱码问题:
request.setCharacterEncoding("utf-8");