Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 在Struts2中传递值_Java_Jsp_Struts2_Action - Fatal编程技术网

Java 在Struts2中传递值

Java 在Struts2中传递值,java,jsp,struts2,action,Java,Jsp,Struts2,Action,我有一个signup.jsp页面,新用户在其中输入他的电子邮件id。该页面的一个片段如下所示: <s:form action="signupprocess"> <s:textfield label="E-Mail" key="userid"></s:textfield> <s:password label="Password" key="password" cssStyle="margin-top:5px;"><

我有一个signup.jsp页面,新用户在其中输入他的电子邮件id。该页面的一个片段如下所示:

<s:form action="signupprocess">
        <s:textfield label="E-Mail" key="userid"></s:textfield>
        <s:password label="Password" key="password" cssStyle="margin-top:5px;"></s:password>
        <s:password label="Retype Passowrd" key="repass" cssStyle="margin-top:5px;"></s:password>
        <s:submit cssStyle="margin-top:5px;" />
        </s:form>
<s:form action="user_details">
                    <s:textfield label="First Name" key="firstname"></s:textfield>
                    <s:textfield label="Last Name" key="lastname" cssStyle="margin-top:5px;"></s:textfield>
                    <s:label label="Adress" cssStyle="margin-top:5px;"></s:label>
                    <s:textfield label="Line1" key="addr_1" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="Line2" key="addr_2" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="Line3" key="addr_3" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="City" key="city" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="State" key="state" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="Mobile" key="mobile" cssStyle="margin-top:5px;"></s:textfield>
                    <s:checkboxlist list="areas" name="userareas" label="Areas of Interest" cssStyle="margin-top:5px;"></s:checkboxlist>
                    <s:submit cssStyle="margin-top:10px;" />
                    </s:form>
现在,在所有后端处理完成后,即将用户的电子邮件和密码添加到数据库中,用户将被引导到user.jsp,在那里他必须填写个人详细信息。本页面如图所示:

<s:form action="signupprocess">
        <s:textfield label="E-Mail" key="userid"></s:textfield>
        <s:password label="Password" key="password" cssStyle="margin-top:5px;"></s:password>
        <s:password label="Retype Passowrd" key="repass" cssStyle="margin-top:5px;"></s:password>
        <s:submit cssStyle="margin-top:5px;" />
        </s:form>
<s:form action="user_details">
                    <s:textfield label="First Name" key="firstname"></s:textfield>
                    <s:textfield label="Last Name" key="lastname" cssStyle="margin-top:5px;"></s:textfield>
                    <s:label label="Adress" cssStyle="margin-top:5px;"></s:label>
                    <s:textfield label="Line1" key="addr_1" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="Line2" key="addr_2" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="Line3" key="addr_3" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="City" key="city" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="State" key="state" cssStyle="margin-top:5px;"></s:textfield>
                    <s:textfield label="Mobile" key="mobile" cssStyle="margin-top:5px;"></s:textfield>
                    <s:checkboxlist list="areas" name="userareas" label="Areas of Interest" cssStyle="margin-top:5px;"></s:checkboxlist>
                    <s:submit cssStyle="margin-top:10px;" />
                    </s:form>
现在在这个jsp的action类中,我希望能够访问特定用户的电子邮件id,以便只在该用户行的数据库中创建条目。如何从user.jsp的action类中的signup.jsp页面访问userid的值


如果需要,我可以提供任何进一步的信息

我相信您已经将signup.jsp中的值捕获为Action类中的实例变量,如下所示

public class SignupAction implements SessionAware{

   private String userid;
   // getters and setters for user id

   // do not create a getter for this
   private Map sessionData;

   public void setSession(Map sessionAttributes){

       this.sessionData = sessionAttributes;
   }

   public String execute(){

    sessionData.put("email",userid);
    // forward to user.jsp
   }

}
在下一个操作类中,它处理user.jsp中的表单提交

public class UserAction implements SessionAware{

       // do not create a getter for this
       private Map sessionData;

       public void setSession(Map sessionAttributes){

           this.sessionData = sessionAttributes;
       }

       public String execute(){

          if(sessionData.containsKey("email")){
            String email = (String)sessionData.get("email");
            // do what you want with email
          }

       }

    }

有关更多详细信息,您可以通过许多不同的方式看到这一点,您有什么具体问题?@RomanC我的具体问题是:PreparedStatement ps=conn.prepareStatementupdate用户集first\u name=?,last\u name=?,address=?,mobile=?其中email=;所以我想要注册中最后一个“?”的值。jsp@RomanC从注释中可以清楚地看出,还是我应该在问题中进行编辑?您可以将值存储在signup.jsp的action类的session中,并在user.jsp的action中检索class@Arkantos只有当用户登录时,而不仅仅是当他注册时,才会在我的应用程序中创建会话。那么还有其他解决方案吗?我想访问user.jsp的action类中的userid值,这是一个POJO。那么我如何使用struts标签呢?很抱歉我误解了你的问题,我已经编辑了我的答案,现在应该可以了:在我将电子邮件的值用于所需目的之后,我是否需要使会话或其他内容无效?我们在注销时使会话无效,但通常会话会在一段时间后超时,我想tomcat的默认值是30分钟,您可以将其更改为较低的值,甚至可以在web.xml中设置MaxInActiveInterval,即终止会话之前请求之间的最长时间。由于这是一个非登录流,我的建议是在使用完sessionMap后将这些值从sessionMap中删除,并让容器负责终止会话: