当前位置:首页>网络学院>程序开发>JAVA教程>文章内容

Java SE 6 新特性: HTTP 增强

[ 来源:www.it55.com | 作者: | 时间:2007-07-23 | 收藏 | 推荐 ] 【

  2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络和 Instrumentation 方面都有不错的新特性和功能加强。 本系列文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。 IT资讯之家 www.it55.com

  本文是系列文章的第二篇,介绍了Java SE 6 在 HTTP 方面的新特性。

http://www.it55.com/

      概述 sflj www.it55.com kg^&fgd

  Java 语言从诞生的那天起,就非常注重网络编程方面的应用。随着互联网应用的飞速发展,Java 的基础类库也不断地对网络相关的 API 进行加强和扩展。在 Java SE 6 当中,围绕着 HTTP 协议出现了很多实用的新特性:NTLM 认证提供了一种 Window 平台下较为安全的认证机制;JDK 当中提供了一个轻量级的 HTTP 服务器;提供了较为完善的 HTTP Cookie 管理功能;更为实用的 NetworkInterface;DNS 域名的国际化支持等等。 sflj www.it55.com kg^&fgd

      NTLM 认证

vd;k;l www.it55.com rdfg

  不可避免,网络中有很多资源是被安全域保护起来的。访问这些资源需要对用户的身份进行认证。下面是一个简单的例子:

45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  1.客户端首先将用户的密码加密成为密码散列;

it55.com

  2.客户端向服务器发送自己的用户名,这个用户名是用明文直接传输的;

it55.com

  3.服务器产生一个 16 位的随机数字发送给客户端,作为一个 challenge(挑战) ;

45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  4.客户端用步骤1得到的密码散列来加密这个 challenge ,然后把这个返回给服务器;

http://www.it55.com/

  5.服务器把用户名、给客户端的 challenge 、客户端返回的 response 这三个东西,发送域控制器 ;

免费资源www.it55.com

  6.域控制器用这个用户名在 SAM 密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge; it55.com

  7.域控制器比较两次加密的 challenge ,如果一样,那么认证成功; 45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  Java 6 以前的版本,是不支持 NTLM 认证的。用户若想使用 HttpConnection 连接到一个使用有 Windows 域保护的网站时,是无法通过 NTLM 认证的。另一种方法,是用户自己用 Socket 这样的底层单元实现整个协议过程,这无疑是十分复杂的。

sflj www.it55.com kg^&fgd

  终于,Java 6 的 Authentication 类提供了对 NTLM 的支持。使用十分方便,就像其他的认证协议一样: IT资讯之家 www.it55.com

  Cookie 是 Web 应用当中非常常用的一种技术, 用于储存某些特定的用户信息。虽然,我们不能把一些特别敏感的信息存放在 Cookie 里面,但是,Cookie 依然可以帮助我们储存一些琐碎的信息,帮助 Web 用户在访问网页时获得更好的体验,例如个人的搜索参数,颜色偏好以及上次的访问时间等等。网络程序开发者可以利用 Cookie 来创建有状态的网络会话(Stateful Session)。 Cookie 的应用越来越普遍。在 Windows 里面,我们可以在“Documents And Settings”文件夹里面找到IE使用的 Cookie,假设用户名为 admin,那么在 admin 文件夹的 Cookies 文件夹里面,我们可以看到名为“admin@(domain)”的一些文件,其中的 domain 就是表示创建这些 Cookie 文件的网络域, 文件里面就储存着用户的一些信息。

sflj www.it55.com kg^&fgd

  JavaScript 等脚本语言对 Cookie 有着很不错的支持。 .NET 里面也有相关的类来支持开发者对 Cookie 的管理。 不过,在 Java SE 6 之前, Java一直都没有提供 Cookie 管理的功能。在 Java SE 5 里面, java.net 包里面有一个 CookieHandler 抽象类,不过并没有提供其他具体的实现。到了 Java SE 6, Cookie 相关的管理类在 Java 类库里面才得到了实现。有了这些 Cookie 相关支持的类,Java 开发者可以在服务器端编程中很好的操作 Cookie, 更好的支持 HTTP 相关应用,创建有状态的 HTTP 会话。

sflj www.it55.com kg^&fgd

  ·用 HttpCookie 代表 Cookie

www.it55.com

  java.net.HttpCookie 类是 Java SE 6 新增的一个表示 HTTP Cookie 的新类, 其对象可以表示 Cookie 的内容, 可以支持所有三种 Cookie 规范:

免费资源www.it55.com

  Netscape 草案

45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt

IT资讯之家 www.it55.com

  RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt it55.com

  这个类储存了 Cookie 的名称,路径,值,协议版本号,是否过期,网络域,最大生命期等等信息。 www.it55.com在线教程

  ·用 CookiePolicy 规定 Cookie 接受策略 45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

  java.net.CookiePolicy 接口可以规定 Cookie 的接受策略。 其中唯一的方法用来判断某一特定的 Cookie 是否能被某一特定的地址所接受。 这个类内置了 3 个实现的子类。一个类接受所有的 Cookie,另一个则拒绝所有,还有一个类则接受所有来自原地址的 Cookie。

www.it55.com在线教程

  ·用CookieStore 储存 Cookie www.it55.com

  java.net.CookieStore 接口负责储存和取出 Cookie。 当有 HTTP 请求的时候,它便储存那些被接受的 Cookie; 当有 HTTP 回应的时候,它便取出相应的 Cookie。 另外,当一个 Cookie 过期的时候,它还负责自动删去这个 Cookie。

www.it55.com

  用 CookieManger/CookieHandler 管理 Cookie

www.it55.com在线教程

  java.net.CookieManager 是整个 Cookie 管理机制的核心,它是 CookieHandler 的默认实现子类。下图显示了整个 HTTP Cookie 管理机制的结构: it55.com

      图 2. Cookie 管理类的关系 45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

<a href='/html/xueyuan/chengxukaifa/JAVAjiaocheng'><u>Java</u></a> SE 6 新特性: HTTP 增强(图二)

www.it55.com在线教程

  一个 CookieManager 里面有一个 CookieStore 和一个 CookiePolicy,分别负责储存 Cookie 和规定策略。用户可以指定两者,也可以使用系统默认的 CookieManger。 vd;k;l www.it55.com rdfg

  例子 www.it55.com在线教程

  下面这个简单的例子说明了 Cookie 相关的管理功能:

sflj www.it55.com kg^&fgd

(编辑:IT资讯之家 www.it55.com

返回顶部
共2页: 上一页 1 [2] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]