这些Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本引入的改进,并可能使用已不再可用的技术。
有关Java SE 9及后续版本中更新的语言功能的摘要,请参见Java语言变更。
有关所有JDK版本的新功能、增强功能和已移除或不推荐选项的信息,请参见JDK发布说明。
您可以在您的富互联网应用程序(RIA)中设置和检索cookie。 Cookie可以增强您的RIA的功能。例如,考虑一种情况,您在各个网页上有小程序。一个网页上的小程序无法直接访问或共享与另一个网页上的小程序的信息。在这种情况下,cookie提供了小程序之间的重要连接,并帮助一个小程序将信息传递给不同网页上的另一个小程序。Java Web Start应用程序也可以使用cookie在客户端存储信息。
Cookie小程序示例中有一个CookieAccessor类,用于检索和设置cookie。
以下代码片段显示了CookieAccessor类的getCookieUsingCookieHandler方法:
public void getCookieUsingCookieHandler() {
try {
// 实例化CookieManager;
// 确保设置CookiePolicy
CookieManager manager = new CookieManager();
manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(manager);
// 从URLConnection获取内容;
// cookies由网站设置
URL url = new URL("http://host.example.com");
URLConnection connection = url.openConnection();
connection.getContent();
// 从底层CookieStore获取cookie
CookieStore cookieJar = manager.getCookieStore();
List <HttpCookie> cookies =
cookieJar.getCookies();
for (HttpCookie cookie: cookies) {
System.out.println("CookieHandler检索到cookie: " + cookie);
}
} catch(Exception e) {
System.out.println("无法使用CookieHandler获取cookie");
e.printStackTrace();
}
}
CookieManager类是cookie管理的主要入口点。创建CookieManager类的实例并设置其CookiePolicy。将此CookieManager实例设置为默认的CookieHandler。
打开一个URLConnection到您选择的网站。
接下来,通过使用getCookies方法从底层的CookieStore检索cookie。
以下代码片段显示了CookieAccessor类的setCookieUsingCookieHandler方法:
public void setCookieUsingCookieHandler() {
try {
// 实例化CookieManager
CookieManager manager = new CookieManager();
CookieHandler.setDefault(manager);
CookieStore cookieJar = manager.getCookieStore();
// 创建cookie
HttpCookie cookie = new HttpCookie("UserName", "John Doe");
// 将cookie添加到特定URL的CookieStore中
URL url = new URL("http://host.example.com");
cookieJar.add(url.toURI(), cookie);
System.out.println("使用cookie处理程序添加了cookie");
} catch(Exception e) {
System.out.println("无法使用CookieHandler设置cookie");
e.printStackTrace();
}
}
如检索Cookies所示,CookieManager类是cookie管理的主要入口点。创建CookieManager类的实例,并将该实例设置为默认的CookieHandler。
使用所需信息创建所需的HttpCookie。在我们的示例中,我们创建了一个新的HttpCookie,将UserName设置为John Doe。
接下来,将cookie添加到底层cookie存储中。
要访问cookie,必须对RIA JAR文件进行签名,并请求在安全沙箱之外运行的权限。请参阅jarsigner工具的文档,了解如何对JAR文件进行签名。有关请求权限的信息,请参阅富互联网应用程序中的安全性。
下载Cookie Applet示例的源代码以进一步进行实验。