2011-02-24 55 views
8

我在Eclipse(helios)+ Glassfish v3中創建了一個簡單的「hello world」servlet。我正在使用Glassfish的eclipse插件看起來WEB-INF /文件夾中沒有web.xml而是sun-web.xml。這是我第一次在GlassFish,但有點在沒有web.xml中的驚訝 - 所以這裏有一些問題:Eclipse + Glassfish v3中沒有web.xml?

  1. 在哪裏檢查網址的映射爲servlet?在Eclipse中創建一個新的Servlet時,它會要求我提供URL映射,但是我無法在任何可以調整設置的.xml文件中找到它。
  2. 如果沒有任何web.xml,從頭開始創建它很容易出錯。你有什麼建議?谷歌爲樣品和玩耍?不應該自動創建嗎?
  3. 有沒有人遇到過這個?我嘗試查找web.xml和sun-web.xml之間的區別,但結果並沒有什麼啓發。我不想學習另一個xml的配置目的,這也是glassfish具體。

我們必須配置servlet上下文,映射等,特別是在開發/測試過程中,但web.xml的絕對缺失讓我難以置信。

回答

12

由於Java EE 6規範(一般而言)和Servlet 3.0規範(特別是)試圖不再強調部署,Eclipse允許您在爲Java EE 6創建動態Web項目時不創建web.xml文件描述。

您可以使用註釋來提供已包含在web.xml文件中的所有數據。 Javadoc for the Servlet 3.0 annotations是相當鈍的。您應該通讀Servlet 3.0 spec from the jcp.org site以獲得更多解釋性文字。

要更改Servlet 3.0 servlet的URL映射,首先要查看的地方在於servlet的源代碼。查找(並更改)urlPatterns元素的值。

如果您嘗試創建基於Servlet 3.0的Web應用程序,請儘量避免創建web.xml文件。

sun-web.xml/glassfish-web.xml文件用於'完成'部署到GlassFish容器中的戰爭文件的描述。

關於WebServlet等註釋的另一個注意事項...他們沒有註釋的類融入的類層次結構,所以正確的使用@WebServlet的會是什麼樣

@WebServlet(
    name = "MyServlet", 
    urlPatterns = {"/path_to_servlet"} 
) 
public class MyServlet extends HttpServlet {} 
+0

這正是我一直在尋找的!我確實發現了它的一些小問題,但是更歡迎有凝聚力的解釋!謝謝! – PhD 2011-02-24 17:52:43

+1

您可以右鍵單擊eclipse項目並選擇「Java EE工具」 - >「生成部署描述符存根」以生成它。 – Pargat 2013-08-23 12:00:46

+0

從Servlet 3規範 - > 10.13包含web.xml部署 描述符: 如果web應用程序不包含任何012xxServlet,Filter或Listener組件或正在使用註釋聲明一樣。換言之,僅包含靜態文件或JSP頁面的應用程序不需要 存在web.xml。 – Vicky 2013-10-02 01:37:38

3

因爲Glassfish 3.x是完全認證的Java EE 6服務器,它支持Servlets 3.0。從Servlets 3.0開始,可以通過註釋指定web.xml設置。

例如

@WebServlet(
    name = "MyServlet", 
    urlPatterns = {"/path_to_servlet"} 
) 
public class MyServlet {} 
+0

我沒有意識到這一點...感謝指針:) – PhD 2011-02-24 03:27:12

4

看來,這是一個壞習慣,點擊「完成」,當你創建一個「新建>動態Web項目」 - 你應該繼續點擊「下一步」,進入最後的窗口 - 您選擇「生成web.xml部署描述符」的窗格 - 默認情況下它未被選中。

那麼,說我創建網絡應用程序有點生鏽。在這裏,我認爲這是一個玻璃魚特定問題。

+0

我打算髮佈一個答案,鏈接到[此截圖](http://4.bp.blogspot.com/_4aRLuh8AW_A/ TUYjKApT42I/AAAAAAAAAhw/iibmuOHBw7Y/s1600/Prepare-JSF-project-%252303.png):)你好,你自己發現它。 – BalusC 2011-02-24 03:29:18

+0

@BalusC:我知道我可以依靠你:D – PhD 2011-02-24 05:09:27

10

如果你發現你需要一個web.xml文件,您可以在部署描述符上下文點擊Project Explorer視圖,應該有一個選項「生成部署描述符存根」。這將爲您創建一個web.xmldisplay-namewelcome-file-list元素。

0

要添加到TMN所說的內容,我注意到項目瀏覽器在出於某種原因執行SVN更新之前不會顯示部署描述符。如果你有這個問題,請嘗試更新你的代碼。我已經在HEAD修訂版上,但由於某種原因,更新顯示了該視圖。

+1

這應該是一個評論@ Clete2。 – karlphillip 2012-09-26 02:11:52

相關問題