当web-container创建servlet实例时

时间:2013-11-22 05:21:01

标签: servlets

我不明白web-container在部署web-app时是否创建了servlet的实例,或者在服务器从客户端获取请求之后创建了这个servlet实例?

1 个答案:

答案 0 :(得分:0)

这取决于web.xml中的servlet定义。

如果指定load-on-startup元素,容器将预加载您的servlet。

如果未指定load-on-startup,则容器将推迟创建servlet,直到需要它为止。

来自Oracle文档:

此元素的可选内容是一个整数,表示相对于Web应用程序的其他Servlet加载和初始化Servlet的顺序。空白表示订单无关紧要,只要在启动包含Web应用程序的过程中加载并初始化Servlet。

示例:见下文。容器将首先预加载FooServlet和BarServlet,但在需要之前不会加载BingServlet。

<servlet>
    <servlet-name>FooServlet</servlet-name>
    <display-name>Foo Servlet</display-name>
    <servlet-class>com.foo.FooServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet> 
<servlet>
    <servlet-name>BarServlet</servlet-name>
    <display-name>Bar Servlet</display-name>
    <servlet-class>com.bar.BarServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet> 
<servlet>
    <servlet-name>BingServlet</servlet-name>
    <display-name>Bing Servlet</display-name>
    <servlet-class>com.bing.BingServlet</servlet-class>
</servlet>