web.xml中load-on-startup的作用
如下一段配置,熟悉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> 可以用來改變這種狀況,根據自己需要改變載入的優先順序!