java网络编程读书随笔

URL由5部分组成:

 1.模式也称为协议  2.授权机构  3.路径  4.片段标识符也成为段或ref  5.查询字符串

例如在URL中 http://www.ibibio.org/javafaq/books/jnp/index.html?isbn=232#toc 中,模式是http,授权机构www.ibibio.org,路径是javafaq/books/jnp/index.html,片段标识符isbn=232。 

  授权机构可以进一步划分为用户信息,主机,端口。例如在http://[email protected]:8080/ 中,授权机构是[email protected]:8080,包含用户信息admin,主机www.blackstart.com,端口8080。

  URL类提供了9个公共方法用于读操作:

    getFile()  主机名后的第一个斜线(/)一直到片段标识符#之前的字符,都是文件部分(标识和路径)

     getPath()  类似于getFile()只是不包含片段标识部分

     getHost()    getProtocal()    getRef() 

    getPort()如果没有指定端口则返回-1  getQuery()    getUserInfo()  

    getAuthority()  授权机构。包含用户信息,主机和端口信息 

Http协议:

  缓存:默认情况下使用GET方式请求的页面可以缓存,也应当缓存。使用post方式访问的页面通常不应该缓存。

    1.Expires 首部(主要针对HTTP 1.0),指示可以缓存资源,直到指定的时间(GMT)为止

    2.Cache-control首部 (HTTP 1.1) 提供了细粒度的缓存策略:

      max-age=[seconds]:  从现在到缓存项过期之前的秒数

      public :可以缓存经过认证的响应。否则已认证的相应不能缓存

      private:仅单个用户缓存可以相应,而共享缓存不保存

      no-cache:缓存项仍然可以缓存,不过客户端在每次访问时都要用一个Etag或last-modified首部重新验证相应的状态

      no-store: 不管怎么样都不缓存

    3.last-modified:首部 指示资源最后一次修改时间。当本地缓存的副本早于last-modified日期时,它才会真正执行GET来获取资源

    4.Etag 首部(HTTp 1.1)是资源改变时这个资源的唯一标识。客户端使用一个head请求来检查这个标识符,只有当本地缓存的副本有一个不同的ETag时,它才会获取资源

  注意:Cache-control 和expires 在首部同时出现时,Cache-control 会覆盖Expires

  MIME: 

Cookie

  要在浏览器中设置一个cookie ,服务器会在HTTP搜捕包含一个Set-Cookie.

cookie包含多个属性用于控制它们的作用域,包括过期时间,路径,端口,版本和安全选项

默认情况下,cookie来自哪个服务器就应用于哪个服务器。也可以使用domain属性设置一个域。

    Set-Cookie:user=lili;domain=.example.com 。这样浏览器不仅会把cookie发送到www.example.com,还会发送到aa.example.com域的任何主机

    cookie 的作用于还受路径的限制,所以会返回到服务器的某些目录,而不是全部。默认作用域是追出的URL和所有的子目录。

set-cookie:user=lili;path=/restricted.只会应用到相应服务器的/restricted子目录,而不能应用于网站的其他部分。

set-cookie:user:lili;max-age:3600    //设置cookie会在3600秒后删除      set-cookie:user:lili;expires:GMT 时间   //设置cookie会在指定的时间删除   

CookieManager :java 6t提供的存储和获取cookie的类

URLConnection

使用URLConnection类的基本步骤:

  1.构造一个URL对象        2.调用这个URL对象的openConnection()获取一个对应该URL的URLConnection对象。   3.配置这个URLConnection对象    4.读取首部字段 

  5.获得输入流并读取数据   6.获得输出流并写入数据     7.关闭连接

  获取指定的首部字段   Content-Type Content-length Content-encoding Date Last-modified   expires  //getContentType()   MIME类型及编码方式

  获取任意首部字段         getHeaderField(String name)//名称不区分大小写 

 

  URLConnection类有7个保护的实例字段,并赋予了默认值,定义了客户端如何向服务器做出请求

  protected   boolean doInput=true     //为true时,允许从服务器读取数据

  protected   boolean doOutput=false  //默认false,但是POST请求时,需要设置为true,可以向服务器写数据。

  protected   boolean useCaches=defaultCaches;

  protected   boolean connected=false;  //是否在连接

  protected   long ifModifiedSince=0; 最后一次修改的时间

猜你喜欢

转载自www.cnblogs.com/ylaxfcy/p/7819664.html