- <servlet>
- <servlet-name>action</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts.xml</param-value>
- </init-param>
- <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>
其它的不说,只说load-on-startup这一项。引用下其他地方的资料
Servlet specification中关于load-on-startup的解释:
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application. The optional contents of these element must be an integer indicating the order in which the servlet should be loaded. If the value is a negative integer, or the element is not present, the container is free to load the servlet whenever it chooses. If the value is a positive integer or 0, the container must load and initialize the servlet as the application is deployed. The container must guarantee that servlets marked with lower integers are loaded before servlets marked with higher integers. The container may choose the order of loading of servlets with the same load-on-start-up value.
我遇到过这样的问题,web容器是tomcat,在配置web.xml的时候没有写load-on-startup,然后访问带有html:form标签的页面,每次第一次访问的时候总会出现action not found 异常,在url里直接写的时候又是正常的,通过url访问action后再打开刚刚的页面又全都好了。
从上面的黑字和我的经历可以看出不写load-on-startup时tomcat是在直接访问servlet的时候才进行初始化ActionServlet,当你访问页面的时候,ActionServlet的init()都没有执行,当然会出现异常啦。
所以记住load-on-startup这东西一定不能丢了,继续研究web.xml