【发布时间】:2014-04-07 17:37:09
【问题描述】:
所以我有一个 jsp ,它加载一些请求参数作为我在我的第二个 jsp 中访问的会话。
我的 jsp 1 代码是:
<jsp:useBean id="Emails" scope="request" class="java.lang.String" />
<%
String email = Emails;
session.setAttribute( "allEmail",email);
%>
<p style="display:block" ><%= session.getAttribute( "allEmail" )%></p>
我的 jsp 2 代码是:
<p style="display:block" ><%= session.getAttribute( "allEmail" )%></p>
现在我可以看到第一个 jsp 中的 <p> 正确填充了数据,但我的第二个 jsp 中的段落只是空白
当我将session.setAttribute( "allEmail",email); 更改为session.setAttribute( "allEmail","hello world); 之类的东西时,我可以看到两个段落中都反映了正确的值。
我做错了什么?
填充 jsp1 的 servlet 具有以下请求调度程序
RequestDispatcher dispatch = request.getRequestDispatcher("jsp1");
我认为问题在于两个 jsp 同时初始化,因此第二个 jsp 中的会话没有价值。
【问题讨论】:
-
在没有访问jsp1的情况下访问jsp2时好像没有这个属性...
-
如果您使用
<jsp:useBean标签,请不要使用Scriptlet。如果您使用的是 Scriptlets,请不要使用 useBean 标记,而只需将您的 bean 放在会话中或直接使用 Scriptlets 请求属性。除了让事情变得混乱之外,为什么要将两者混为一谈? -
即使jsps在不同的时间初始化,你认为这会起作用吗?