然后在浏览器中访问//localhost/myapp/我们得到
图一 浏览器显示
首先HttpServer 是从 HttpProvider 处得到的这里我们使用了 JDK 提供的实现用户也可以自行实现一个 HttpProvider 和相应的 HttpServer 实现
其次HttpServer 是有上下文(context)的概念的比如//localhost/myapp/ 中/myapp/就是相对于 HttpServer Root 的上下文对于每个上下文都有一个 HttpHandler 来接收 http 请求并给出回答
最后在 HttpHandler 给出具体回答之前一般先要返回一个 Http head这里使用 HttpExchangesendResponseHeaders(int code int length)其中 code 是 Http 响应的返回值比如那个着名的 length 指的是 response 的长度以字节为单位
Cookie 管理特性
Cookie 是 Web 应用当中非常常用的一种技术 用于储存某些特定的用户信息虽然我们不能把一些特别敏感的信息存放在 Cookie 里面但是Cookie 依然可以帮助我们储存一些琐碎的信息帮助 Web 用户在访问网页时获得更好的体验例如个人的搜索参数颜色偏好以及上次的访问时间等等网络程序开发者可以利用 Cookie 来创建有状态的网络会话(Stateful Session) Cookie 的应用越来越普遍在 Windows 里面我们可以在Documents And Settings文件夹里面找到IE使用的 Cookie假设用户名为 admin那么在 admin 文件夹的 Cookies 文件夹里面我们可以看到名为admin@(domain)的一些文件其中的 domain 就是表示创建这些 Cookie 文件的网络域 文件里面就储存着用户的一些信息
JavaScript 等脚本语言对 Cookie 有着很不错的支持 NET 里面也有相关的类来支持开发者对 Cookie 的管理 不过在 Java SE 之前 Java一直都没有提供 Cookie 管理的功能在 Java SE 里面 包里面有一个 CookieHandler 抽象类不过并没有提供其他具体的实现到了 Java SE Cookie 相关的管理类在 Java 类库里面才得到了实现有了这些 Cookie 相关支持的类Java 开发者可以在服务器端编程中很好的操作 Cookie 更好的支持 HTTP 相关应用创建有状态的 HTTP 会话
·用 HttpCookie 代表 Cookie
HttpCookie 类是 Java SE 新增的一个表示 HTTP Cookie 的新类 其对象可以表示 Cookie 的内容 可以支持所有三种 Cookie 规范
Netscape 草案
RFC
RFC
这个类储存了 Cookie 的名称路径值协议版本号是否过期网络域最大生命期等等信息
·用 CookiePolicy 规定 Cookie 接受策略
CookiePolicy 接口可以规定 Cookie 的接受策略 其中唯一的方法用来判断某一特定的 Cookie 是否能被某一特定的地址所接受 这个类内置了 个实现的子类一个类接受所有的 Cookie另一个则拒绝所有还有一个类则接受所有来自原地址的 Cookie
·用CookieStore 储存 Cookie
CookieStore 接口负责储存和取出 Cookie 当有 HTTP 请求的时候它便储存那些被接受的 Cookie 当有 HTTP 回应的时候它便取出相应的 Cookie 另外当一个 Cookie 过期的时候它还负责自动删去这个 Cookie
·用 CookieManger/CookieHandler 管理 Cookie
CookieManager 是整个 Cookie 管理机制的核心它是 CookieHandler 的默认实现子类下图显示了整个 HTTP Cookie 管理机制的结构
图 Cookie 管理类的关系
一个 CookieManager 里面有一个 CookieStore 和一个 CookiePolicy分别负责储存 Cookie 和规定策略用户可以指定两者也可以使用系统默认的 CookieManger