servlet 2.5的寫法
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
version="2.5">
別以為看到這里就結(jié)束了,很可惜地告訴你,這段代碼是錯誤的。不信你嘗試打開一下這個鏈接http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd,你會發(fā)現(xiàn)是no page found。
那為什么tomcat6的范例程序能夠工作呢,那是因為在tomcat6的lib里面,已經(jīng)存在這個文件,所以也不需要從網(wǎng)絡(luò)上面抓取。其實你按照這個web.xml寫了servlet 2.5的程序,在tomcat6里面也是可以運行的。
可是當(dāng)我使用eclipse+xmlbuddy的時候,問題就出來了,因為web-app_2_5.xsd一直不能下載,xmlbuddy一直報錯,并且沒有語法提示功能。通過搜索,我發(fā)現(xiàn)了web-app_2_5.xsd的真實地址其實是http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd,而它的namespace是http://java.sun.com/xml/ns/javaee,于是代碼應(yīng)該改成:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
留意一下不同的部分,其實是因為sun把j2ee改名為javaee。
ps,另外附上servlet 2.4的寫法
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">