我想将httpsession中的数据从jspportlet传递到servlet。通过ajax调用从oracle调用的servlet作为页面portlet。
有很多例子,如何做到这一点,但如何传递httpsession数据?
因为(我认为)ajax调用不同于portlet上下文的url(比如 $.post( "/app/servlet", data)
),它找不到原始会话,而是在我尝试访问时创建了一个新会话 request.getSession()
.
portlet和servlet位于同一个war应用程序中,当前在jdeveloper、apache proxypass和proxypassreverse中运行,Map到webserver url: http://webserver.local/app
,注册了连接的portlet生产者: http://webserver.local/app/providers/
我将提供者注册页面上的登录频率设置为“始终”。
我将portlet放在一个随机页面中 http://webserver.local/path/to/page
我认为这就是页面上portlet生成的会话与servlet不相等的原因。
如果在上调用jsp portlet http://webserver.local/app/felvitel.jsp
打开servlet http://webserver.local/app/servlet
,我可以得到相同的会话,所以这就是为什么我确定它的网址问题。
但是portlet必须在页面内部使用,而不仅仅是单独使用,而且我不知道如何Mapservlet url,或者更改cookie以找到相同的会话。
现在我将会话id存储在jsp页面的hidden中: <input type="hidden" id="sessionkey" value="<%=session.getId()%>"></input>
…javascript创建一个cookie name="JSESSIONID", value=$("#sessionkey").val(), path=/app
它在工作,servlet得到相同的会话,但我认为这是另一种方式。
我可以从jsp页面修改cookie吗?我试着在饼干和 cookie.setPath("/app");response.addCookie(cookie1);
但是外观没有任何作用,当我读到它时,它必须在其他地方设置,而不是在jsp页面上工作,它必须在头创建时设置。
或者其他解决方案?
暂无答案!
目前还没有任何答案,快来回答吧!