Java 在JSP中设置cookie并从非servlet类中检索
我需要在JSP中设置cookie,并且需要在普通java类中获取这些cookie JSP:Java 在JSP中设置cookie并从非servlet类中检索,java,jsp,jakarta-ee,servlets,Java,Jsp,Jakarta Ee,Servlets,我需要在JSP中设置cookie,并且需要在普通java类中获取这些cookie JSP: CookieManager manager = new CookieManager(); CookieHandler.setDefault(manager); CookieStore cookieJar = manager.getCookieStore(); // create cookie HttpCookie cookie = new HttpCookie("UserName", "John Do
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调用之后调用的,而是只有在发生任何事件时才在应用程序中的某个位置调用的。下面是我用来捕获cookies的代码
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);
}
URL=新URL(“http://localhost:8080");
URLConnection conn=url.openConnection();
conn.getContent();
CookieManager cm=新CookieManager();
CookieHandler.setDefault(cm);
cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieStore cs=cm.getCookieStore();
List cookies=cs.getCookies();
用于(HttpCookie cookie:cookies){
System.out.println(“CookieHandler检索到的cookie:+cookie”);
}
如果我想在非servlet类中检索cookie,这个场景会起作用吗?
上述代码的输出将返回空列表。
但是,如果我用request.getCookie(“UserName”)编写一个servet类,我将看到cookie值。
在这里,我需要了解如何在不使用请求对象的情况下获得cookie值。
因为请求对象并不总是在java类的多次调用中传递。我没有使用会话。
如果你有更好的方法,请告诉我
谢谢-使用connection对象中的
getHeaderFields()
方法获取表示特定连接的头字段的名称-值对的完整列表
Cookie信息(如果存在)应位于“设置Cookie”标题字段下
Map<String, List<String>> headerFields = conn.getHeaderFields();
Set<String> headerFieldsSet = headerFields.keySet();
Iterator<String> hearerFieldsIter = headerFieldsSet.iterator();
Y0u可以参考此是否有任何理由否决该问题?plz解释从我的问题中我发现我正在打开一个URL连接,最终一个新的连接对象将不知道我在JSP中设置的cookie。在这种情况下,在我在JSP中设置cookie之后,cookie应该从浏览器发送到服务器。
while (hearerFieldsIter.hasNext()) {
String headerFieldKey = hearerFieldsIter.next();
if ("Set-Cookie".equalsIgnoreCase(headerFieldKey)) {
List<String> headerFieldValue = headerFields.get(headerFieldKey);
for (String headerValue : headerFieldValue) {
System.out.println("Cookie Found...");
String[] fields = headerValue.split(";\s*");
String cookieValue = fields[0];
System.out.println("cookieValue:" + cookieValue);
}
}
}