Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 会话属性未反映在JSP中_Java_Jsp_Session_Servlets - Fatal编程技术网

Java 会话属性未反映在JSP中

Java 会话属性未反映在JSP中,java,jsp,session,servlets,Java,Jsp,Session,Servlets,因此,我有一个jsp-one,它作为会话加载一些请求参数,我在第二个jsp中访问该会话 我的jsp 1代码是: <jsp:useBean id="Emails" scope="request" class="java.lang.String" /> <% String email = Emails; session.setAttribute( "allEmail",email); %> <p style="display:block" ><%= se

因此,我有一个jsp-one,它作为会话加载一些请求参数,我在第二个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>
<p style="display:block" ><%= session.getAttribute( "allEmail" )%></p>

我认为问题在于两个jsp都是同时初始化的,因此第二个jsp中的会话没有任何价值

这里要传递的是会话范围中的字符串。 1) 对此,您不需要jsp useBean。您可以使用当前拥有的scriptlet直接在会话范围中设置

要使用jsp useBean标记,组件类应为JavaBean类型。您使用的是不可变的字符串类。 所以您不能为要在useBean中使用的字符串设置任何属性。 不幸的是,在分配时未捕获/未抛出scriptlet错误(不知道)

    String email = Emails;
为什么在设置时它会工作

    session.setAttribute( "allEmail","hello world"); 
这与设置一样好:

    <%
        String email = "hello world";
        session.setAttribute( "allEmail",email);
    %>
然后将属性设置为:

    <jsp:useBean id="yourBean" class="package.YourBean" scope="bean scope">
       <jsp:setProperty name="yourBean" property="propertyName"  value="value"/>
       ...........
    </jsp:useBean>

...........

根据上述场景。因为请求肯定会保留会话对象

您可以尝试以下方法:-


当您在没有访问jsp1的情况下访问jsp2时,会话中似乎没有这样的属性……如果您使用的是
,您认为即使JSP在不同的时间初始化,这种方法也能工作吗?这对我来说非常有效,有没有其他方法可以工作,或者这是最干净的方法
    public class YourBean implements java.io.Serializable
    {
       private String propertyName = null;

       public String getPropertyName(){
          return propertyName;
       }
       public void setPropertyName(String propertyName){
          this.propertyName = propertyName;
       }
    }
    <jsp:useBean id="yourBean" class="package.YourBean" scope="bean scope">
       <jsp:setProperty name="yourBean" property="propertyName"  value="value"/>
       ...........
    </jsp:useBean>