对于我自己程序的问题的解决办法:
在web.xml文件Struts Servlet配置处加入:
<!-- Modified by yeshaoting -->
<load-on-startup>0</load-on-startup>
e.g.
<servlet> <servlet-name>ActionServlet</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>
让ActionServlet在服务器启动加载servlet容器时,加载ActionServlet;而不是等到产生用户请求,需要初始化ActionServlet才加载ActionServlet.
因为消息资源是在加载jsp页面,解析<bean:message>标记时加载的;而未设置<load-on-startup>0</load-on-startup>的ActionServlet一般是在提交页面表单,跳转到servlet进行处理时加载的.另外,消息资源包又是在ActionServlet加载struts配置文件struts-config.xml后加载.
因此,需要在jsp页面请求前,加载ActionServlet 或者 消息资源,<load-on-startup>0</load-on-startup>能起到这一作用.