2012-09-26 42 views
8

在代碼中的一個我看到,沒有<servlet-mapping>標籤,只有其如下我們可以調用沒有<servlet的映射>一個servlet在web.xml中的條目

<servlet> 
    <servlet-name>startServlet</servlet-name> 
    <servlet-class>com.login.StartupServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

宣稱能這樣沒有工作<servlet-mapping>並在<load-on-startup>1</load-on-startup>上工作??

該servlet將在服務器啓動時加載,以連接到數據庫並對緩存執行很少的操作。

PS:這是在Servlet 2.0+版本上,沒有註釋。

感謝 Punith

回答

7

您發佈的代碼定義的東西,你可以稱之爲一個「初始化的Servlet」。它不是直接從外部訪問(使用URL),而是由Servlet容器啓動。

這是有效的,但它不能被客戶端訪問。它通常用於初始化目的。您可以使用Servlets 3.0批註在沒有<servlet-mapping>的情況下訪問servlet。

請注意<load-on-startup>不包含true/false值(0/1),但是它定義了一個整數,它是啓動順序。數字越大意味着該小服務程序將在之後加載數字較小的數字。

+0

其實安全工具之一是拋出錯誤,說... web.xml中定義的Servlet不能訪問沒有相應的servlet映射。 –

+1

嗯,它的真實性:-)但是,我不認爲它應該顯示一個錯誤 - 在我看來,一個警告會更合適。 –

2

此模式通常用於初始化Java EE Web應用程序。例如,對於EJB 3.1中引入的渴望@Singleton註釋,這是一種流行的解決方法。

相關問題