Accessing Cookies

您可以在 Rich Internet Application(RIA)中设置和检索 Cookie。 Cookies 可以增强您的 RIA 的功能。例如,考虑在各种网页上都有 Servlets 的情况。网页上的 Servlets 无法直接访问另一个网页上的 Servlets 或与之共享信息。在这种情况下,Cookie 提供了 Servlets 之间的重要连接,并帮助一个 Servlets 将信息传递给另一个网页上的另一个 Servlets。 Java Web Start 应用程序还可以使用 cookie 在 Client 端上存储信息。

Cookie Applet 示例具有一个CookieAccessor类,用于检索和设置 Cookie。

Retrieving Cookies

以下代码段显示了CookieAccessor类的getCookieUsingCookieHandler方法:

public void getCookieUsingCookieHandler() { 
    try {       
        // Instantiate CookieManager;
        // make sure to set CookiePolicy
        CookieManager manager = new CookieManager();
        manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
        CookieHandler.setDefault(manager);

        // get content from URLConnection;
        // cookies are set by web site
        URL url = new URL("http://host.example.com");
        URLConnection connection = url.openConnection();
        connection.getContent();

        // get cookies from underlying
        // CookieStore
        CookieStore cookieJar =  manager.getCookieStore();
        List <HttpCookie> cookies =
            cookieJar.getCookies();
        for (HttpCookie cookie: cookies) {
          System.out.println("CookieHandler retrieved cookie: " + cookie);
        }
    } catch(Exception e) {
        System.out.println("Unable to get cookie using CookieHandler");
        e.printStackTrace();
    }
}

CookieManager类是 cookie管理 的主要入口点。创建CookieManager类的实例并设置其CookiePolicy。将此CookieManager的实例设置为默认的CookieHandler

打开您选择的网站的URLConnection

接下来,使用getCookies方法从基础CookieStore中检索 cookie。

Setting Cookies

以下代码段显示了CookieAccessor类的setCookieUsingCookieHandler方法:

public void setCookieUsingCookieHandler() {
    try {
        // instantiate CookieManager
        CookieManager manager = new CookieManager();
        CookieHandler.setDefault(manager);
        CookieStore cookieJar =  manager.getCookieStore();

        // create cookie
        HttpCookie cookie = new HttpCookie("UserName", "John Doe");

        // add cookie to CookieStore for a
        // particular URL
        URL url = new URL("http://host.example.com");
        cookieJar.add(url.toURI(), cookie);
        System.out.println("Added cookie using cookie handler");
    } catch(Exception e) {
        System.out.println("Unable to set cookie using CookieHandler");
        e.printStackTrace();
    }
}

Retrieving Cookies所示,CookieManager类是 cookie管理 的主要入口点。创建CookieManager类的实例并将该实例设置为默认的CookieHandler

使用必要的信息创建所需的HttpCookie。在我们的示例中,我们创建了一个新的HttpCookie,将UserName设置为John Doe

接下来,将 cookie 添加到基础 cookie 存储中。

运行 CookieServlets 示例

要访问 cookie,您必须签署 RIA JAR 文件并请求在安全沙箱外部运行的权限。请参阅jarsigner工具的文档以了解如何对 JAR 文件进行签名。有关请求权限的信息,请参见富 Internet 应用程序中的安全性

下载源代码用于“ Cookie Applet”示例,以进一步进行实验。