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”示例,以进一步进行实验。