【发布时间】:2014-07-14 16:16:57
【问题描述】:
我有一种情况,我需要在 JSP 中设置 cookie,我需要在普通的 java 类中获取这些 cookie。
JSP:
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://localhost:8080");
url.openConnection().connect();
cookieJar.add(url.toURI(), cookie);
System.out.println("Added cookie using cookie handler");
%>
下面是 Java 类 [不是 servlet 类],该类在服务器中运行,它不是在 JSP 调用之后调用,而是仅在发生任何事件时才在应用程序的某个位置调用。下面是我编写的用于捕获 cookie 的代码。
URL url = new URL("http://localhost:8080");
URLConnection conn = url.openConnection();
conn.getContent();
CookieManager cm = new CookieManager();
CookieHandler.setDefault(cm);
cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieStore cs = cm.getCookieStore();
List <HttpCookie> cookies = cs.getCookies();
for (HttpCookie cookie: cookies) {
System.out.println("CookieHandler retrieved cookie: " + cookie);
}
如果我想检索非 servlet 类中的 cookie,这种情况是否可行? 上述代码的输出将返回空列表。 但是,如果我用 request.getCookie("UserName") 编写一个服务类,我会看到 cookie 值。 在这里,我需要了解如何在不使用请求对象的情况下获取 cookie 值。 因为请求对象并不总是在java类的多次调用中传递。而且我没有使用会话。 如果您有更好的方法,请告诉我。
谢谢-
【问题讨论】:
-
是否有任何理由否决这个问题。 ?请解释
标签: java jsp jakarta-ee servlets