【问题标题】:Scopes of ActionMapper, ActionProxy, ActionInvocation, ActionContext objects in Struts2?Struts2中ActionMapper、ActionProxy、ActionInvocation、ActionContext对象的作用域?
【发布时间】:2014-10-05 11:17:51
【问题描述】:

ActionMapper, ActionProxy, ActionInvocation, @ 987654324@ 在 Struts2 应用程序中创建。由于我是 Struts2 框架的新手,我对这些对象的范围感到非常困惑。

【问题讨论】:

    标签: struts2 scope actioncontext


    【解决方案1】:

    ActionMapper 是在启动时创建的,它有一个单例范围。

    ActionContext 是由Dispatcher 在准备要执行的操作时创建的,它是ThreadLocal,它没有任何作用域。

    当操作执行时,ActionInvocationActionProxy 被创建,它们也没有范围。

    您可以在 Struts2 架构的a big picture 上看到这一点。

    【讨论】:

    • 感谢 Roman 提供此信息,但我知道 ActionContext 包含表示 SESSION 的映射对象,可在其他请求中访问的 APPLICATION 范围对象意味着其他线程。所以如果 ActionContext 是 threadlocal 那么我们如何在其他线程中访问 ActionContext 包含的对象?
    • 通过创建和初始化一个新的ActionContext。
    • @user2485767 因为会话是在操作上下文中设置的。该会话只是 servlet 规范会话。
    • 在其他线程中它不会破坏,但正如 Dave 在这里提到的(感谢 Dave),您需要在使用之前将会话设置为操作上下文。相同的会话对象在 http 会话中,因此您可以使用 servlet API 轻松访问它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2013-04-28
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多