Java 在Struts2中传递值
我有一个signup.jsp页面,新用户在其中输入他的电子邮件id。该页面的一个片段如下所示: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;"><
<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中删除,并让容器负责终止会话: