我想初始化(在Struts2中)一个属性(从文件加载数据)只有一次,并为整个struts 2应用程序提供该属性。 我怎么能实现这一目标?我需要覆盖struts 2调度程序吗?
此致 拉朱
答案 0 :(得分:1)
您可以创建ServletContextListener
中定义的web.xml
,用于打开您的媒体文件,并通过以下方式将所需值设置为ServletContext
:
getServletContext().setAttribute("dataKey", dataValue);
ServletContext
具有应用程序范围。
<强>更新强>
您可以创建一个实现ServletContextListener
的新类(这里是它的JavaDoc:ServletContextListener),这要求您定义contextInitialized()
和contextDestroyed()
方法。
在servlet开始接受请求之前调用方法contextInitialized()
。在contextInitialized()
方法中,您需要加入getServletContext().setAttribute("dataKey", dataValue)
来电。
要注册您的监听器,您需要在web.xml
文件中添加监听器定义:
<listener>
<listener-class>CLASS_PATH.CLASS_NAME</listener-class>
</listener>
您需要使用刚刚创建的上下文侦听器类的类路径和名称替换上述XML中的CLASS_PATH.CLASS_NAME。