Http协议
_1获取资源telnet(telnet ip/网址 port)输入命令如显示“ctrl+]”
注意:在给界面输入信息时不能出错,输入一个字符就会传送到服务器端, 在客户端进行修改虽然显示是正确的,但是传到服务器
后是错误的
_2在http1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,1.1中在一个连接上获取多个web资源
注意web页面的优化,如img标签引用了三幅图片,每次加载一张图就会请求一次服务器,可以尽量减少图片的数量,即减少了请求数
_3Http请求:一个请求行,若干请求头,一个空行以及实体内容
__1请求行中GET称之为请求方式,常用的有GET、POST两种,get为默认,post方式可以通过表单action属性来设置,get和post都是在请求某个web资源,区别主要在数据传递上
__2请求头:
__1状态行:Http请求,状态码(详细见文档),原因叙述,如HTTP/1.1 200 OK
__2响应头:
_1获取资源telnet(telnet ip/网址 port)输入命令如显示“ctrl+]”
注意:在给界面输入信息时不能出错,输入一个字符就会传送到服务器端, 在客户端进行修改虽然显示是正确的,但是传到服务器
后是错误的
_2在http1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,1.1中在一个连接上获取多个web资源
注意web页面的优化,如img标签引用了三幅图片,每次加载一张图就会请求一次服务器,可以尽量减少图片的数量,即减少了请求数
_3Http请求:一个请求行,若干请求头,一个空行以及实体内容
__1请求行中GET称之为请求方式,常用的有GET、POST两种,get为默认,post方式可以通过表单action属性来设置,get和post都是在请求某个web资源,区别主要在数据传递上
__2请求头:
Accept(告诉服务器客户机支持的数据类型)、
Accept-Charset(用于告诉服务器,客户机采用的编码)、
Accept-Encoding(用于告诉服务器,客户机支持的数据压缩格式)、
Accept-Language(客户机的语言环境)、
Host(客户机通过这个告诉服务器,想访问的主机名)、
If-Modified-since(告诉服务器,资源的缓存时间点,当再次请求相同资源时,若请求时间点之后并未更新,就使用缓存)、
Referer(客户机通多这个头告诉服务器,它是从哪个资源来访问服务器的(可以应用在防盗链上))、
User-Agent(客户机通过这个头告诉服务器,客户机的软件环境(浏览器,操作系统等))、
Cookie(客户机通过这个头向服务器带带过去一点数据)
Connection(请求结束后是保持连接还是关闭连接)、
date等
_4Http响应:一个状态行,若干消息头,一个空格,以及实体内容
__1状态行:Http请求,状态码(详细见文档),原因叙述,如HTTP/1.1 200 OK
__2响应头:
Location:这个头配合302状态码使用,用于告诉客户找谁
重定向:response.setStatus(302);response.setHeader("Location","path");
Server:服务器通过这个头,告诉浏览器服务器的类型
Content-Encoding:告诉浏览器数据的压缩格式
Content-Length:告诉浏览器回送数据的长度
Content-Type:告诉浏览器回送数据的类型(否则浏览器不知道如何才能进行对接收到的信息进行显示)
Last-Modified:告诉浏览器当前资源缓存时间
Refresh:告诉浏览器隔多久刷新一次
Content-Disposition:告诉浏览器已下载方式打开数据
response.setHeader("content-disposition","attachment;filename=1.jpg");
Transfer-Encoding:告诉浏览器数据的传送格式
ETag:缓存相关的头(服务器可以通过它比对内容是否改变)(modified只可以做到秒一级的,这个头则可以做到实时更新)
Expires:告诉浏览器把回送的资源缓存多长时间,-1或0,则是不缓存
Cache-Control:no-cache、Pragma:no-cache:这两个头,也是控制浏览器不要缓存数据
Range
__3压缩格式的使用:
String data = "aaaaaaaa";
ByteArrayOutputStream bout = new ByteArrayOutputStream();
GZIPOutputStream gout = new GZIPOutputStream(bout);
gout.write(data.getBytes());
gout.close();//一个将gout中的数据全部写入底层流的方式
byte gzip[] =bout.toByteArray();//得到压缩后的数据
//通知浏览器数据采用压缩格式
response.setHeader("Content-Encoding","gzip");
response.setHeader("Content-Length",gzip.length+"");
response.getOutputStream().write(gzip);
__4Http实用头字段
Http请求头字段:
Range头指示服务器只传输一部分Web资源。
这个头可以用来实现断点续传的功能,三种格式:
Range:bytes=1000-2000(传输范围从1000到2000字节)、
bytes=1000-(第1000字节之后的所有)、
bytes=1000(传输最后1000个字节)
Http响应消息头字段
Accept-Ranges:这个字段说明Web服务器是否支持Range支持,支持返回Accept-Ranges:bytes否则none
Content-Range:指定了返回资源的字节范围,如:Content-Range:1000-3000/5000(返回1000-3000个字节,共5000字节)