天天看點

《Servlet、JSP和Spring MVC初學指南》——1.11 使用部署描述符

本節書摘來自異步社群《servlet、jsp和spring mvc初學指南》一書中的第1章,第1.11節,作者:【加】budi kurniawan(克尼亞萬) , 【美】paul deck著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

如在前面的例子中所見,編寫和部署servlet都是很容易的事情。部署的一個方面是用一個路徑配置servlet的映射。在這些範例中,是利用webservlet标注類型,用一個路徑映射了一個servlet。

利用部署描述符是配置servlet應用程式的另一種方法,部署描述符的詳情将在第13章“部署描述符”中探讨。部署描述符總是命名為web.xml,并且放在web-inf目錄下。本章介紹了如何建立一個名為app01c的servlet應用程式,并為它編寫了一個web.xml。

app01c有simpleservlet和welcomeservlet兩個servlet,還有一個要映射servlets的部署描述符。清單1.5和清單1.6分别展示了simpleservlet和welcomeservlet。注意,servlet類沒有用@webservlet标注。部署描述符如清單1.7所示。

清單1.5 未标注的simpleservlet類

清單1.6 未标注的welcomeservlet類

清單1.7 部署描述符

使用部署描述符有諸多好處。其一,可以将在@webservlet中沒有對等元素的元素,如load-on-startup元素。這個元素使得servlet在應用程式啟動時加載,而不是在第一次調用時加載。如果servlet的init方法需要花一些時間才能完成的話,使用load-on-startup意味着第一次調用servlet所花的時間并不比後續的調用長,這項功能就特别有用。

使用部署描述符的另一個好處是,如果需要修改配置值,如servlet路徑,則不需要重新編譯servlet類。

此外,可以将初始參數傳給一個servlet,并且不需要重新編譯servlet類,就可以對它們進行編輯。

部署描述符還允許覆寫在servlet标注中定義的值。servlet上的webservlet标注如果同時也在部署描述符中進行聲明,那麼它将不起作用。然而,在有部署描述符的應用程式中,卻不在部署描述符中标注servlet時,則仍然有效。這意味着,可以标注servlet,并在同一個應用程式的部署描述符中聲明這些servlet。

圖1.8展示了有部署描述符的目錄結構。這個目錄結構與app01a的目錄結構沒有太大差別。唯一的差別在于,app01c在web-inf目錄中有一個web.xml檔案(部署描述符)。

《Servlet、JSP和Spring MVC初學指南》——1.11 使用部署描述符

圖1.8 有部署描述符的b3的目錄結構

現在,在部署描述符中聲明simpleservlet和welcomeservlet,可以利用這些url來通路它們:

<code>http://localhost:8080/app01c/simple</code>

<code>http://localhost:8080/app01c/welcome</code>

關于部署以及部署描述符的更多資訊,請參考第13章。