我正在尝试从 application1 中的操作类转发到 application2 中的 jsp。两个应用程序都在同一个 servlet 容器(glassfish 2.1)中运行。虽然我可以成功转发并显示 jsp,但在执行 ServletActionContext 的转发 api 之前,我无法从 application1 中设置的会话中检索属性/对象。我在 application2 的 jsp 中打印了 sessionID,它与我在 application1 中打印的 id 完全匹配。所以,我假设我的会话在这个过渡之间没有受到干扰。那么会话变量发生了什么?他们为什么/如何变成空的?
这是代码:
request.getSession().setAttribute("commonQuestions", "abc");
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
// Change the servletcontext to the second application
ServletActionContext.setServletContext(ServletActionContext.getServletContext().getContext("/TYP_PFRS_ETP"));
// Define request dispatcher for resource in second application
RequestDispatcher rd =
ServletActionContext.getServletContext().getRequestDispatcher("/jsp/helloworld.jsp");
rd.forward(request, response);