Session 在会话中存储对象-struts2

Session 在会话中存储对象-struts2,session,struts2,Session,Struts2,嗨,我在struts.xml中有类似的东西 <action name="LoginAction" class="controller.LoginAction"> <result name="error">/Error.jsp</result> <result name="success">/Wizard.jsp</result> </action>

嗨,我在struts.xml中有类似的东西

   <action name="LoginAction" class="controller.LoginAction">
                <result name="error">/Error.jsp</result>
                <result name="success">/Wizard.jsp</result>
    </action>
我必须更改struts.xml吗<当
HttpServletRequest
作为参数添加时,不会调用code>execute

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

/Error.jsp
/Wizard.jsp
以这种方式使用会话也是最好的方法吗?我正在尝试熟悉struts方法。

您可以实现界面:

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
的替代方法

SessionAware
优于
ActionContext
。以下是关于这方面的一些讨论:


会话以外的其他数据持久化方法或在会话中存储数据的其他方法。这是将数据存储到会话中的完美方式。只是用另一个问题编辑了我的原始帖子,你读错了或者你读错了;S2操作方法不接受任何参数。这解释了为什么执行方法不会被参数调用。谢谢你澄清这一点。如果我没记错的话,struts1操作方法采用了这样的参数。我猜你是因为这个而感到困惑
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.
}