使用注解WebServlet配置Servlet報404錯誤的原因
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版本正確配置;
