在iframe中检索属性

时间:2011-08-16 01:49:24

标签: jsp iframe request session-variables

我在检索IFRAME中的请求属性时遇到问题。 以下是片段,在jsp1.jsp中,我有2个IFRAMES,其src是jsp2.jsp和jsp3.jsp .i想要在两个页面中检索请求属性。基本上该属性是类的对象和一些在jsp1.jsp页面中为类变量设置了值。我想在这3个页面之间共享该对象。在IFRAME内部,我获取属性的空值。我已经尝试了session.setAttribute和request.setAttribute

jsp1.jsp

<td>
<%
Search beans=(Search)request.getAttribute("s");
session.setAttribute("s");
%>
<iframe name="frame1" id="frame1" tabIndex="-1" width="100%" height="100%"   
frameborder="0" src="jsp2.jsp"></iframe>
<iframe name="frame2" id="frame2" tabIndex="-1" width="100%" height="100%" 
frameborder="0" src="jsp3.jsp"></iframe>
</td>

jsp2.jsp

Search beans = (Search)session.getAttribute("s");
if (beans != null) {
//process the bean
}

有人可以让我知道如何检索设置的属性。而且我也不能将它作为参数传递给jsp2.jsp,因为它是一个对象

由于 Priyam

1 个答案:

答案 0 :(得分:3)

HTML <iframe>基本上指示网络浏览器在给定的src网址上发送全新 HTTP请求并嵌入其响应。它不在Web服务器中父JSP页面的请求中运行。因此,将对象作为请求属性传递是行不通的。只有在 之前已经建立了页面时,该会话才会起作用。

我不明白为什么你这样使用<iframe>。当唯一目的是包含与父页面位于同一服务器的页面片段时,这是一种非常糟糕的方法。只有当您想在网页中嵌入外部内容时,<iframe>才有用。

将服务器端替换为类似<jsp:include>的内容,它将以您最初的方式运行。

<jsp:include page="jsp2.jsp" />
<jsp:include page="jsp3.jsp" />

它们将包含在同一个HTTP请求中,因此可以访问其属性。好处很大。您的问题立即得到解决,搜索引擎优化将得到极大改善(<iframe>内容未被编入索引作为父页面的一部分)和用户体验(当内部存在链接和表单时,网站行为更具可预测性和强大性) <iframe>)。