1.http:要求:掌握一些头信息
超文本传输协议:
规定数据的格式
浏览器往服务器发送 ---- 请求
服务器往浏览器回写 ---- 响应
2.请求:(request)
组成部分:
请求行 请求头 请求体
(1)请求行:请求信息的第一行
格式:请求方式 访问的资源 协议/版本
例如:GET /day0801/1.html HTTP/1.1
请求方式:get和post
get会把参数放在url的后面 post不会
get参数大小有限制,post请求却没有限制
get请求没有请求体;post请求有请求体 请求参数放在请求体中
(2)请求头:请求信息的第二行到空行结束
格式:key/value (value可以是多个值)
常见的请求头:
Accept: text/html,image/bmp --支持数据类型 text/html text/css text/javascript 大类型/小类型 mime类型
Accept-Charset: ISO-8859-1 --字符集
Accept-Encoding: gzip --支持压缩
Accept-Language:zh-cn --语言环境
Host: www.itcast.cn:80 --访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --缓存文件的最后修改时间
Referer: http://www.itcast.com/index.jsp --来自哪个页面、防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection:Keep-Alive --链接状态
3.掌握的头信息:
Referer User-Agent Cookie If-Modified-Since
请求体:空行以下的内容
只有post才有请求体 get请求参数 http://xxxx?username=tom&password=123
格式:username=tom&password=123
3.响应:(response)
组成部分:
响应行 响应头 响应体
(1)响应行:响应信息的第一行
格式:协议/版本 状态码 状态码说明
例如:HTTP/1.1 200 OK
状态码:
200 正常响应成功
302 重定向
304 读缓存
404 用户操作资源不存在
500 服务器内部异常
(2)响应头:从响应信息的第二行到空行结束
格式:key/value(value可以是多个值)
常见的头
Location: http://www.it315.org/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 --下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
Expires: -1 --缓存
Cache-Control: no-cache --缓存
Pragma: no-cache --缓存
Connection: Keep-Alive --连接
(3) 掌握的头信息
Content-Type Location Last-Modified Refresh Content-Disposition Set-Cookie
响应体:空行以下的内容
页面上展示的内容
4.response:响应
作用:
往浏览器写东西
组成部分:
响应行 响应头 响应体
操作响应行
格式:
协议/版本 状态码 状态码说明
状态码:
1xx:已发送请求
2xx:已完成响应
200:正常响应
3xx:还需浏览器进一步操作
302:重定向 配合响应头:location
304:读缓存
4xx:用户操作错误
404:用户操作错误.
405:访问的方法不存在
5xx:服务器错误
500:内部异常
常用方法:
setStatus(int 状态码):针对于 1 2 3
了解 :
sendError(int 状态码):针对于 4xx和5xx
操作响应头
格式:key/value(value可以是多个值)
常用的方法:
setHeader(String key,String value):设置字符串形式的响应头
了解:setIntHeader(String key,int value):设值整形的响应头
了解:setDateHeader(String key,long value):设值时间的响应头
addHeader(String key,String value):添加置字符串形式的响应头 之前设置过则追加,若没有设置过则设置
了解:addIntHeader(String key,int value):添加整形的响应头
了解:addDateHeader(String key,long value):添加时间的响应头
常用的响应头:
location:重定向
refresh:定时刷新
content-type:设置文件的mime类型,设置响应流的编码及告诉浏览器用什么编码打开
content-disposition:文件下载
重定向:
方式1:
★response.sendRedirect("/day10/loc2");
方式2:
response.setStatus(302);
respooen.setHeader("location","/day10/loc2");
定时刷新:
方案1:设置头 refresh 昨天做过
respooen.setHeader("refresh","秒数;url=跳转的路径");
方案2:http的meta标签
<meta http-equiv="refresh" content="3;url=/day10/refresh2.html">
操作响应体:
页面上要展示的内容
常用方法:
Writer getWriter():字符流
ServletOutputStream getOutputStream() :字节流
自己写的东西用字符流,其他一概用字节流.
处理响应中文乱码:
方式1:★
response.setContentType("text/html;charset=utf-8");
方式2:理解
response.setHeader("content-type", "text/html;charset=utf-8");
注意:
两个流互斥
当响应完成之后,服务器会判断一下流是否已经关闭,若没有关闭,服务器会帮我们关闭.(底层使用的缓冲流)