import java.applet.Applet; import java.util.ArrayList; import java.util.Date; import netscape.javascript.JSObject; import sgb.util.Strings; public class CookieManager { private Applet applet; public CookieManager(Applet applet) { this.applet = applet; } private JSObject getDocument() { JSObject win = (JSObject) JSObject.getWindow(applet); return (JSObject) win.getMember("document"); } public void setCookie(String name, String value) { if (Strings.isNullOrEmpty(name)) throw new IllegalArgumentException(); Cookie cookie = new Cookie(); cookie.setName(name); cookie.setValue(value); setCookie(cookie); } public void setCookie(Cookie cookie) { if (cookie == null) throw new IllegalArgumentException(); JSObject doc = getDocument(); doc.setMember("cookie", cookie.toString()); } public String getCookieValue(String name) { return getCookie(name).getValue(); } public Cookie getCookie(String name) { if (Strings.isNullOrEmpty(name)) throw new IllegalArgumentException(); Cookie[] cookies = getCookies(); for (Cookie cookie : cookies) if (cookie.getName().equals(name)) return cookie; return null; } public Cookie[] getCookies() { JSObject doc = getDocument(); String[] token = ((String) doc.getMember("cookie")).trim().split(";"); ArrayList<Cookie> cks = new ArrayList<Cookie>(); for (String tk : token) { String[] tks = tk.trim().split("="); String name = tks[0]; String value = tks.length > 1 ? tks[1] : null; Cookie cookie = new Cookie(); cookie.setName(name); cookie.setValue(value); cks.add(cookie); } return cks.toArray(new Cookie[0]); } public void removeCookie(String name) { if (Strings.isNullOrEmpty(name)) throw new IllegalArgumentException(); Cookie cookie = new Cookie(); cookie.setName(name); cookie.setExpireDate(new Date(0)); setCookie(cookie); } }
2009/02/03
set/remove cookie using applet
jdk/jre 1.4 later, the library is included in plugin.jar file.