在 ServletContext 中加载对象(应用程序范围)
我想将两个小的常量对象(一个 TreeMap
和一个 ArrayList
)放在 Struts2 web 应用程序(在 Tomcat 6 下运行)的 ServletContext
中的某个位置),这样这些对象就可以通过应用程序范围从任何 JSP 访问。
在 Struts1 下,我会使用其中一个启动“插件”(在 struts-config.xml 中定义)。 有没有一种与 Struts2 达到相同结果的等效方法?
或者(也许更好),由于我的 web 应用程序使用 Tomcat 中配置的 Spring 和 Spring 的 ContextLoaderListener ,我可以依赖 Spring 吗? 例如,通过创建一个声明一些适当的“ApplicationAware
”接口的 bean...
I would like to put two small constant objects (one TreeMap
and one ArrayList
) somewhere in the ServletContext
of a Struts2 webapp (running under Tomcat 6), such that those objects may be accessible from any JSP, through the Application Scope.
Under Struts1, I would have used one of those startup "plug-in
s" (defined in struts-config.xml
). Is there an equivalent way of achieving the same result with Struts2?
Alternatively (and maybe even better), since my webapp uses Spring configured in Tomcat with Spring's ContextLoaderListener
, can I rely on Spring instead? For instance by creating a bean that declares some appropriate "ApplicationAware
" interface...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果这是我的应用程序(并且我们使用相当相似的体系结构),我会将单例 Spring bean 注入到我的 struts2 控制器类的基类中,但我的所有 jsp 都有控制器,并且都共享一个公共基类。
If this was my application (and we're using a fairly similar architecture), I'd inject a singleton spring bean into the base class of my struts2 controller class, but all my jsp's have controllers and all share a common base class.
采取3:
您可能想查看 Spring Servlet 上下文范围
Take 3:
You might want to check out Spring Servlet Context scope
取2:
在您的 Spring bean 之一上实现 ServletContextAware 接口,然后对上下文进行必要的修改。 如果需要,请在 @PostConstruct 带注释的方法中执行此操作,因为这样您的 bean 在您更新 servletcontext 时就已完成。
Take 2:
Implement the ServletContextAware interface on one of your spring beans and just do the necessary modifications to the context. If necessary do it in a @PostConstruct annotated method because then your bean is complete at the time you update the servletcontext.