1. Http协议
http协议就是规范浏览器和服务器之间通讯数据格式的一个标准。
2. 浏览器和服务器通讯示意图
请求html中的图片
有多少个不同的图片(资源),就有多少次请求(html一次,每个图片各一次)
2. HTTP请求
#请求行 GET /books/java.html HTTP/1.1
协议版本:
HTTP/1.0:每请求和响应一次,就关闭连接。
HTTP/1.1:可以在一次连接中,可以多次请求。
请求地址:
URL:统一资源定位符,指向网络资源的路径。
URI:统一资源标识符,指向本地资源或局域网资源或互联网资源的路径。
uri=/fuxi1/request
url=http://localhost:8080/fuxi1/request
请求方法:
常见方法:GET POST HEAD DELETE TRACE CONNECT PUT
常用方法:GET POST
GET方法:GET /day09web/get_post.html?uname=aa&upwd=aaa HTTP/1.1
A) 数据放在请求行的地址后面(问号后面+数据,每个数据用&分隔),实体内容为空。
B) 不合适提交敏感数据
C) 地址栏数据大小有限制,不抄1KB.
D) 浏览器默认提交方式是GET。
POST方法:POST /day09web/get_post.html HTTP/1.1
A) 数据放在实体内容中(每个数据用&分隔)
B) 适合提交敏感数据
C) 提交的数据没有限制
HttpServletRequest获取请求行的常用方法
String method = req.getMethod();//获取提交方法 String uri = req.getRequestURI();//获取URI String url = req.getRequestURL() |
#请求头
常用请求头
Accept: text/html,image/* 浏览器接受的数据类型 Accept-Charset: ISO-8859-1 浏览器接受的编码格式 Accept-Encoding: gzip,compress 浏览器接受的数据压缩格式 Accept-Language: en-us,zh- 浏览器接受的语言 Host: www.qingmang.com (必须的)当前请求访问的目标地址(主机:端口) If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 浏览器最后的缓存时间 Referer: http://www.qingmang.com/index.jsp 当前请求来自于哪里 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 浏览器类型 Cookie: 浏览器保存的Cookie信息 Connection: close/Keep-Alive 浏览器跟服务器的连接状态 Date: Tue, 11 Jul 2000 18:23:51 GMT 请求发出的时间
|
#实体内容
常用方法GET和POST都适用
req.getParameter("uname"); //根据表单控件的name属性值获取对应的value req.getParameterNames(); //获取所有的表单控件的name属性值 req.getParameterValues(name); //获取所value值(多选框) |
获取请求时的编码问题:
解码默认使用iso-8859-1解码,所以出现中文乱码问题
解决方法:
Post提交:在doPost()第一行写:req.setCharacterEncoding("utf-8");或者response.setContentType("text/html;charset=utf-8");
Get提交:new String(str.getBytes("iso-8859-1"),"utf-8");
3. HTTP响应
3.1 响应行
例如:HTTP/1.1 200 OK
常见状态码
200 表示成功接收请求并已完成整个处理过程,常用200
302/304 未完成请求,客户需进一步细化请求
404 表示客户端的请求有错误,常用404。
500 表示服务器端发生错误。
修改状态:
//修改状态码
//res.setStatus(404);
//修改状态码的同时发送404页面
//res.sendError(404);
3.2 响应头
常用响应头
Location: http://localhost:8080/day08ee/index.jsp 重定向的地址,和302一起 Server:apache tomcat 服务器类型 Content-Encoding: gzip 发送给浏览器的压缩格式 Content-Length: 80 发送给服务器的数据长度 Content-Language: zh-cn 服务器支持的语言 Content-Type: text/html; charset=GB2312 发送给浏览器的数据类型和内容编码 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 服务器最后的修改时间 Refresh: 1;url=http://www.it315.org 定时刷新 Content-Disposition: attachment; filename=aaa.zip 浏览器以下载方式打开资源 Transfer-Encoding: chunked Set-Cookie:SS=Q0=5Lb_nQ; path=/search 服务器发送给浏览器的cookie信息 Expires: -1 Cache-Control: no-cache 通知浏览器不进行缓存 Pragma: no-cache Connection: close/Keep-Alive 服务器和浏览器的链接状态 close关闭Keep-Alive保持 Date: Tue, 11 Jul 2000 18:23:51 GMT
|
3.3 实体内容