【问题标题】:How can I get stored session values in multiple Struts 2 action classes?如何在多个 Struts 2 动作类中获取存储的会话值?
【发布时间】:2021-03-20 05:46:53
【问题描述】:

如何在多个 Struts 2 动作类中获取存储的会话值?

我确实想在所有操作中使用SessionAware 接口。

【问题讨论】:

    标签: java session struts2 struts


    【解决方案1】:

    您有三个选择:

    1. 正确使用SessionAware
    2. 正确使用并使用使用SessionAware 的基本操作类。
    3. 做错了用ActionContext:
    Map attibutes = ActionContext.getContext().getSession();
    

    记录在 Struts 2 wiki 的 How do we get access to the session 下。

    为什么您想使用SessionAware 并让您的操作更容易测试?

    【讨论】:

    • 嗨戴夫,很高兴知道不同的方式,一旦我将一些键值放在会话映射中并在一个动作中,我是否能够通过使用不同的键来获得相同的值,而不是使用/实现 SessionAware 接口。 ?
    • @user1859100 会话就是会话,无论如何访问。
    【解决方案2】:

    如果您不想在多个类中使用SessionAware,那么至少您可以使用一个抽象类或您的操作类扩展的接口。它会将SessionMap 注入到您的操作类实例中。

    其他获取SessionMap或直接HttpSession的方式来自here

    如果你想在会话中添加一些东西,你应该从动作上下文中获取会话映射

    Map<String, Object> session = >ActionContext.getContext().getSession();
    session.put("username", username);
    session.put("role", 1);
    

    或者直接使用servlet session

    HttpSession session = >ServletActionContext.getRequest().getSession(); 
    session.setAttribute("username", username);
    session.setAttribute("role", 1);
    

    但第一种情况更可取,因为它得到了框架的支持。


    更多其他选项(您至少还有五个选项):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-14
      • 2011-09-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多