在eclipse中創建一個Web項目的時候,雖然有web.xml生成,但是再添加Servlet類文件的時候總是看不見web.xml的更新,所以異常的郁悶!上網查了查,原來我們在創建Web項目的時候,會彈出一個對話框,“Dynamic web module version”這個選項默認成了3.0,按照老規范,應該是在eclipse的WebContent \ WEB-INF \ 目錄下創建web.xml的。而新規范是可以不用web.xml的,如tomcat 7.0就支持新規范,這樣相關的servlet配置會以注解的形式直接寫到代碼里面了,比如@WebServlet。 當然如果你用老的項目導入,可以選擇Dynamic web module version這個選項設成2.5,這樣web.xml就會自動更新了。
@WebServlet(“/HW”)的含義:
@WebServlet(“/HW”)//默認設置的是urlPatterns屬性
public class HelloServlet extends HttpServlet {
只要在Servlet上設置@WebServlet標注,容器就會自動讀取當中的信息。上面的@WebServlet告訴容器,如果請求的URL是“/HW”,則由HelloServlet的實例提供服務。可以使用@WebServlet提供更多信息。
@WebServlet(
name="Hello",
urlPatterns={"/HW"}
)
上面的@WebServlet告知容器,HelloServlet這個Servlet的名稱是Hello,這是由name屬性指定的,而如果客戶端請求的URL是/HW,則由具Hello名稱的Servlet來處理,這是由urlPatterns屬性來指定的。在Java EE相關應用程序中使用標注時,可以記得的是,沒有設置的屬性通常會有默認值。例如,若沒有設置@WebServlet的name屬性,默認值會是Servlet的類完整名稱。
注意:Tomcat中, 如果web.xml和@WebServlet屬性都設置了,那么對不起,@WebServlet
中的urlPatterns屬性就不起作用了!(可以將web.xml從WEB-INF目錄中移走,或者刪除
這樣@WebServlet中的urlPatterns屬性值就可以使用了!)