在会话中存储对象 - struts2

时间:2012-06-12 12:31:50

标签: session struts2

嗨我在struts.xml中有这样的东西

   <action name="LoginAction" class="controller.LoginAction">
                <result name="error">/Error.jsp</result>
                <result name="success">/Wizard.jsp</result>
    </action>

编辑:

在操作中成功执行execute后,下一页将包含使用请求范围访问的数据。如何在会话范围中存储相同的数据呢?

我读到HttpServletRequest对象作为参数传递给Struts操作中的execute()方法,我总是可以使用HttpSession检索request.getSession()对象并将数据附加到它。

所以如果我在controller.LoginAction

中使用这样的东西
public String execute(HttpServletRequest req) {
    ...
}

我是否必须更改struts.xml?将execute添加为参数时,不会调用HttpServletRequest

   <action name="LoginAction" class="controller.LoginAction">
                <result name="error">/Error.jsp</result>
                <result name="success">/Wizard.jsp</result>
    </action>

这也是使用session这种方式的最佳方法吗?我试图用struts方法熟悉自己。

1 个答案:

答案 0 :(得分:3)

您可以实施SessionAware界面:

public class LoginAction extends ActionSupport implements SessionAware {
    private Map session;

    public String execute() {
        session.put("key", "value");
        // Plus any additional action code
    }

    // Plus setter (and optionally getter) for session map.
}

使用ActionContext的替代方式解释为here

SessionAware优于ActionContext。以下是对此的一些讨论: