我在struts 2中有一个简单的应用程序,它允许用户输入名称并提交。在struts 2动作类的服务器端创建一个新会话并在会话中存储username的值。在用户中。 jsp我试图显示存储在会话中的值,但它没有显示任何内容。
Index.jsp的代码如下所示
<body>
<form action="welcomeUser.action">
<input type="text" name="user">
<input type="submit" value="Submit">
</form>
</body>
struts.xml中的代码如下所示
<action name="welcomeUser" class="hart.test.Welcome">
<result name="success">user.jsp </result>
</action>
hart.test.Welcome中的代码如下所示
public class Welcome extends ActionSupport
{
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String execute()
{
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session=request.getSession();
//Checking session is new and creating a session
if (session.isNew() == false) {
session.invalidate();
session = request.getSession(true);
}
session.setAttribute("user1", user);
return SUCCESS;
}
}
User.jsp中的代码如下所示
<body>
Welcomeee <s:property value="%{#session.user1}"/>
</body>
问题是它只显示'Welcomeee'。任何人都可以告诉它的原因
答案 0 :(得分:0)
在<%@ taglib prefix="s" uri="/struts-tags" %>
文件的开头添加Struts 2 taglib定义:User.jsp
。
答案 1 :(得分:-1)
Struts2使用会话映射,它是底层HttpSession的包装器。通过实现SessionAware接口like described in this answer:
来使用它public class Welcome extends ActionSupport implements SessionAware {
private Map<String,Object> session;
public void setSession(Map<String,Object> session) {
this.session = session;
}
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String execute() {
session.put("user1", user);
return SUCCESS;
}
}