struts2中如何设置和销毁会话变量?

2 struts2 session-variables destroy

我是 Struts2 的初学者。我在 PHP 中使用,在记录时将身份验证保存在会话变量中,我可以在注销后销毁该变量。我想知道如何在 Struts2 中执行相同的过程:在登录时设置会话变量并在注销时销毁它。万分感谢。

更新(附加解决方案)

除了有用的答案和评论之外,我们还可以使用:

session.remove("session_var_name"); // instead of session.clear();
Run Code Online (Sandbox Code Playgroud)

删除一个确切的会话变量,而不是删除所有会话变量。谢谢你们。

Uch*_*nwu 5

您可以执行以下操作之一

public class MyAction extends ActionSupport implements ServletRequestAware
{
    private HttpServletRequest httpServletRequest;

    public void setServletRequest(HttpServletRequest request)
    {
        this.httpServletRequest = request;
    }

    public String login()
    {
        httpServletRequest.getSession(false).setAttribute("key", your_session_object);
        return SUCCESS;
    }

    public String logout()
    {
        httpServletRequest.getSession(false).removeAttribute("key");
        return SUCCESS;
    }
}

public class MyAction extends ActionSupport implements SessionAware
{
    private Map sessionMap;

    public void setSession(Map map)
    {
        this.sessionMap = map;
    }

    public String login()
    {
        sessionMap.put(key, your_session_object);
        return SUCCESS;
    }

    public String logout()
    {
        sessionMap.remove(key);
        return SUCCESS;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二种选择(即实现)SessionAware是首选,因为它可以保护您免受ServletAPI 的影响。