1. 程式人生 > >系統學習JavaWeb之特別篇使用註解WebServlet配置Servlet報404錯誤的原因

系統學習JavaWeb之特別篇使用註解WebServlet配置Servlet報404錯誤的原因

    有些人可能會遇到這種種情況,在採用註解WebServlet配置Servlet的時候,明明在配置了urlPatterns屬性,部署應用程式的時候也沒有出錯。但是就是在瀏覽器發請求的時候訪問不到資源,報404錯誤request resource is not available。搗騰了半天也不知道,到底是哪而出錯了?

    Servlet3.0之後新增了註解,用於簡化Servlet、Filter及Listener的宣告,這樣就在配置Servlet的時候多了一個選擇。Servlet3.0的部署描述檔案web.xml的頂層標籤<web-app>有一個metadata-complete屬性,該屬性為true,則容器在部署時只依賴部署描述檔案,忽略所有標註,如果不配置該屬性,或者將其設定為false,則表示啟動標註支援。當metadata-complete="false"時,web.xml和註解對於Servlet的影響同時起作用,兩種方法定義的url-partten都可以訪問到該Servlet,但是當通過web.xml定義的url-partten訪問時,註解定義的屬性(初始化引數等)將失效。

    但是,我們要知道JDK是在5.0之後才支援註解特性的,所以要想使用Servlet3.0的這個新特性必須JDK5.0以後的版本。而Tomcat容器是在7.0以後才開始支援此特性。所以通常使用WebServlet註解報404錯誤的原因可以總結如下:

    使用的是JDK5.0以前的版本;

    使用的是Tomcat7.0更早的版本;

    使用了web.xml檔案但是web-app標籤的version屬性不為3.0,導致容器沒有按照Servlet 3.0版本正確配置;