天天看點

eclipes建立一個web項目web.xml不能自動更新的原因(web.xml和@WebServlet的作用)

在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屬性值就可以使用了!)

繼續閱讀