java servlet http_JavaServlet之http协议(二)

HTTP/1.0与HTTP/1.1的区别 1.0一次请求,建立连接后,只能请求一次,请求完后,则断开连接 1.1一次请求,建立连接后,可以请求多次,每次请求完之后,不断开连接 一个请求行 7种请求方式,只需学习GET和POST 如果用户没有设置,默认都是GET,表单一般是POST,一般除了表单是POST外,其他的都是GET

多个请求头 Accept:text/html,image/* 告诉服务器,客户机支持的数据类型为文本/网页,各种格式的图片,*/*表示浏览器支持各种数据类型。 Accept-Charset:ISO-8859-1 告诉服务器,客户机采用的编码 Accept-Encoding:gzip,compress 告诉服务器,客户机支持的压缩格式 Accept-Language:en-us,zh-cn 告诉服务器,客户机的语言环境(操作系统语言) Host: 想访问的主机名 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 客户机可以向服务器带点数据 Connection:close/Kepp-Alive 保持客户机与服务器的连接 Date:Tue,11 Jul 2000 18:23:51 GMT 当前的日期时间 请求的主机和请求主机的环境信息 空行 实体内容 HTTP响应 一个状态行 HTTP/1.1 200 OK 状态码  状态说明 状态码表示服务器对请求的处理结果,三位十进制数,分为5类 302:你请求我,我叫你去找别人(重定向)location头指定你去找谁 307、304:和缓存有关的,叫客户机直接拿缓存资源。 403:访问权限不够 404:访问资源不存在 500:服务器端出问题 多个响应头 描述服务器的基本信息,根据这些信息通知客户机如何处理这些数据 客户端如何处理是根据服务器带来的响应信息 从而控制浏览器的行为 Server:Microsolt-IIS/5.0 告诉浏览器服务器的类型 Location:http://www.sina.com.cn/index.jsp 这个头配合302状态码,实现重定向 请求重定向:浏览器就请求两次了,登录界面 response.setStatus(302); response.setHeader("location","/.../.../index.html"); Content-Encoding/Accept-Encoding;gzip 响应压缩         浏览器支持压缩格式 String str = "待压缩数据"; ByteArrayOutputStream bout = new ByteArrayOutputStream(); GzipOutputStream gout = new GzipOutputStream(bout);//包装流一般会有缓冲 gout.write(data.getBytes());//数据不满,不会将数据传给底层流。 gout.flush(); gout.close(); byte gzip[] = bout.toByteArray(); response.setHeader("Content-Encoding","gzip"); response.setHeader("Content-Length",gzip.length); response.getOutputStream().write(gzip); Content-Length:80 告诉浏览器会送数据的长度 Content-type 告诉浏览器会送数据的类型 response.setHeader("content-type","image/bmp"); getServletContent().getResourceAsStream("/1.bmp"); int len = 0; byte buffer[] = new byte[1024]; OutputStream out = response.getOutputStream(); Last-Modified:服务器告诉浏览器当前资源缓存时间 Refresh:服务器告诉浏览器隔多久定时刷新一下 response.setHeader("refresh","3;http://www.sina.com.cn"); Content-disposition:告诉浏览器以下载方式打开数据 response.setHeader("content-disposition","attachment;filename=3.jpg"; Transfer_Encoding:chunked:告诉浏览器数据是以快传送的 ETag:缓存相关的头 服务器根据每个web应用给个串做标识符 如果服务器web应用有更动,ETag头的标识符会发生改变, 不一致,服务器则给新的,否则浏览器读取缓存,做到实时更新。 Expires:告诉浏览器把会送的资源缓存多长时间,-1或0则不缓存。 Cache-control:no-cache Pragna:no-cache 控制浏览器不要缓存数据,股票肯定不能要缓存 Connection:close、Keep-Alive Date:日期时间 Range:断点下载。 Range:bytes=1000-2000 传输范围从1000到2000字节 Range:bytes=1000- 传输web资源中第1000个字节以后的所有内容 Range:bytes=1000 传输最后1000个字节 Accept-Ranges:这个字段说明web服务器是否支持Range,支持,则返回 Accept-Ranges:bytes,如果不支持,则返回Accept-Ranges:none Content-Range:指定了返回的web资源的字节范围,这个字段值的格式是: 例子:Content-Range:1000-3000/5000(总资源5000,会送的是3000-5000) public class RangeDemo{ public static void main(String[] args){ URL url = new URL("http://localhost:8080/ServletDemo/a.txt"); HttpURLConnection conn = url.openConnection(); conn.setRequestProperty("Range","bytes=5-"); InputStream in = conn.getInputStream(); int len = 0; byte[] buffer = new byte[1024]; FileOutputStream out = new FileOutputStream("c:\\a.txt",true); while((len=in.read(buffer))!=-1){ out.write(buffer,0,len); } in.close(); out.flush(); out.close(); conn.close(); } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值