java - 新 session 是在 Applet 和托管 bean 的连续 servlet 请求之间创建的吗?

标签 java session servlets applet

我想在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/

相关文章:

java - Spring Boot REST Hibernate - 创建用户

java - Java 字符 reverseBytes 中的问题

javascript - 如何使用 Ajax 将数组值从 Javascript 格式化为 Java Servlet

java - 使用 Spring 和 Thymeleaf 嵌入具有精确时间的 YouTube 视频

c# - asp.net中如何实现 "Utilize SSL/TLS Session identifier" session 固定的解决方法

php - 如何销毁 Symfony 2 中的所有 session

javascript - 是否可以通过使用 JS 在客户端设置 cookie 来伪造 PHP 中的 session ?

java - 在 doPost() 响应中发送数据?

Java servlet 和 IO : Create a file without saving to disk and sending it to the user

java - 部署War时Tomcat 6错误