【问题标题】:Loading an object in ServletContext (application scope)在 ServletContext 中加载对象(应用程序范围)
【发布时间】:2009-01-15 06:32:56
【问题描述】:

我想将两个小的常量对象(一个 TreeMap 和一个 ArrayList)放在 Struts2 webapp(在 Tomcat 6 下运行)的 ServletContext 的某个位置,以便可以从任何 JSP 访问这些对象,通过应用范围。

在 Struts1 下,我会使用其中一个启动“plug-ins”(在struts-config.xml 中定义)。有没有一种等效的方法可以使用 Struts2 实现相同的结果?

另外(甚至可能更好),因为我的 web 应用程序使用在 Tomcat 中配置的 Spring 和 Spring 的 ContextLoaderListener,我可以依赖 Spring 来代替吗?例如,通过创建一个声明一些适当的“ApplicationAware”接口的 bean...

【问题讨论】:

    标签: spring tomcat plugins struts2 struts


    【解决方案1】:

    采取2: 在您的一个 spring bean 上实现 ServletContextAware 接口,并对上下文进行必要的修改。如有必要,请在 @PostConstruct 注释方法中执行此操作,因为在您更新 servletcontext 时您的 bean 已完成。

    【讨论】:

    • 我没有想到 @PostConstruct 注释。不错的触感!谢谢!
    【解决方案2】:

    采取 3: 您可能想查看Spring Servlet Context scope

    【讨论】:

      【解决方案3】:

      如果这是我的应用程序(并且我们使用的是非常相似的架构),我会在我的 struts2 控制器类的基类中注入一个单例 spring bean,但我所有的 jsp 都有控制器并且都共享一个共同的基类类。

      【讨论】:

      • 说实话,我喜欢 Struts2,但我尽可能避免使用 OGNL(太慢了!)——如果可能的话,我更喜欢依赖 EL。另外,我宁愿不通过拦截器在每个新请求中重新注入 ValueStack 上相同的常量对象......(这就是你的想法,不是吗?)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多