转自:http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html
如下一段配置,熟悉DWR的再熟悉不过了:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
我们注意到它里面包含了这段配置:<load-on-startup>1</load-on-startup>,那么这个配置有什么作用呢?
贴一段英文原汁原味的解释如下:
Servlet specification:
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.
翻译过来的意思大致如下:
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
如下题目:
2.web.xml中不包括哪些定义(多选)
a.默认起始页
b.servlet启动延迟时间定义
c.error处理页面
d.jsp文件改动后重新载入时间
答案:b,d
通常大多数Servlet是在用户第一次请求的时候由应用服务器创建并初始化,但<load-on-startup>n</load-on-startup> 可以用来改变这种状况,根据自己需要改变加载的优先级!
分享到:
相关推荐
当Servlet容器启动时,它会读取web.xml文件,并根据`load-on-startup`标签中的数值对Servlet进行排序。值越小,Servlet被加载和初始化的优先级越高。如果多个Servlet设置了相同的值,容器则会按照它们在web.xml文件...
当我们在web.xml中设置了多个Servlet时,可以使用load-on-startup来指定Servlet的加载顺序,服务器会根据load-on-startup的大小依次对Servlet进行初始化。 2. 控制Servlet的启动时机:load-on-startup的值也可以...
Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素...
<load-on-startup>1</load-on-startup> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> <!-- 配置会话超时 --> <session-config> ...
Tomcat 中 web.xml 文件的详细说明 Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用...
- **在服务器启动时装载servlet**:通过`load-on-startup`元素指定servlet的加载顺序,值越小越早加载。 6. **声明过滤器** 使用`<filter>`和`<filter-mapping>`元素定义过滤器,以控制请求和响应的处理流程。 7...
`web.xml`是Java Web应用程序的核心配置文件,它遵循Java EE规范中的定义,用于定义Web应用的组件、监听器、过滤器以及它们之间的映射关系。在这个文件中,你可以配置Servlet、过滤器、会话超时、错误页面、欢迎文件...
<load-on-startup>1</load-on-startup> ``` #### 6. 声明过滤器 过滤器用于拦截客户端请求并在请求到达目标资源之前进行预处理,以及在响应发送回客户端之前进行后处理。声明过滤器需要使用`<filter>`元素。 **...
在Java Web开发中,`web.xml`是应用的部署描述符,它包含了应用程序的各种配置信息。其中,`context-param`和`init-param`是两个重要的元素,用于设置应用级和Servlet级的初始化参数。理解它们的用法和如何在Servlet...
`<load-on-startup>`元素决定Servlet在Web应用启动时的加载顺序。 7. `<servlet-mapping>`: 为Servlet设置映射,使得特定的URL可以调用Servlet。`<servlet-name>`引用Servlet的名称,`<url-pattern>`定义请求的URL...
本文将详细解析`web-app_2_3.dtd`中定义的主要元素及其作用,帮助开发者更好地理解和应用这些配置。 #### 1. `icon`元素 `icon`元素用于指定Web应用程序的小图标,包括一个16x16像素的小图标和一个32x32像素的大...
- 初始化:当Servlet首次被请求或者在web.xml中配置了`load-on-startup`时,Servlet容器会调用Servlet的`init()`方法进行初始化。 - 服务:每当有新的请求到来,Servlet容器创建一个Servlet实例,然后调用`service...
web.xml的配置顺序也遵循一定的规则,比如ServletContext总是在其他组件之前被创建,而servlet的加载顺序则根据<load-on-startup>值的大小和实际出现的顺序进行配置。正确理解web.xml的每个标签及其作用是开发Java ...
<load-on-startup>0</load-on-startup> ``` 其中,`<init-param>` 元素用于配置初始化参数,`<param-name>` 元素用于指定参数名称,`<param-value>` 元素用于指定参数值。在上面的示例中,配置了三个初始化参数:...
<load-on-startup>1</load-on-startup> 在上面的配置中,定义了一个名为"default"的 Servlet,类名为 org.apache.catalina.servlets.DefaultServlet,並設置了兩個初始参数:debug 和 listings。 2. Servlet ...
- **`load-on-startup`**:指示服务器在启动时加载servlet的优先级,值越小优先级越高。如果未设置此属性,则在第一次请求时加载servlet。 - **`<servlet-mapping>`**:映射servlet到具体的URL路径。 - **`servlet...