我想在applet和jsf组件之间传递参数 因此,当输入文本框的值发生更改时,其绑定(bind)支持 bean 会与 servlet 建立连接。 servlet 创建一个属性并使用 (request.getSession(true)).setAttribute(name, value); 保存到 HttpSession;
然后在某些事件中,applet 将访问另一个 servlet。该 servlet 将尝试检索先前保存到 session 中的属性。
但是,每次创建新 session 时,返回的属性都是 null。
我的问题是: session 应该持续吗? (我检查了allowcookies、weblogic的 session 超时)
如果是,我的应用程序可能会出现什么问题?
非常感谢您的帮助。
问候 K.
最佳答案
session 由 cookie 支持。在 JSP/Servlet 环境中,cookie 名称是 jsessionid
。要访问同一 session ,小程序必须发出 header 中包含所需 session cookie 的请求。另外,您需要确保 servlet 在相同的域和上下文中运行/监听。
首先,将 session ID 作为参数传递给小程序:
<param name="jsessionid" value="${pageContext.session.id}">
然后,在Applet中按如下方式连接Servlet:
String jsessionid = getParameter("jsessionid");
URL servlet = new URL(getCodeBase(), "servleturl");
URLConnection connection = servlet.openConnection();
connection.setRequestProperty("Cookie", "jsessionid=" + jsessionid);
// ...
这里servleturl
显然应该与web.xml
中servlet的url-pattern
相匹配。这应该在 request.getSession()
上的 servlet 中返回相同的 session 。
关于java - 新 session 是在 Applet 和托管 bean 的连续 servlet 请求之间创建的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956476/