会话值不在jsp struts 2中显示

时间:2014-09-27 12:09:55

标签: java jsp struts2

我在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'。任何人都可以告诉它的原因

2 个答案:

答案 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;
    }
}