2.4的web.xml不再区分每个element的顺序
比如下面这个是struts2官网的一个tutorial(Exception_Handling_Struts2_Ant)中的一个web.xml,welcome-file-list居然放置在了第一个<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
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">
<display-name>Exception_Handling_Struts2_Ant</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>当然,更常见的是每个servlet之后都有servlet-mapping,而2.3必须是需要所有servlet声明结束以后才能写所有servlet的servlet-mapping的 
2.4的web.xml中关于resource-env-ref等定义去哪里找?
我在http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd中并未发现,而且那个xsd没有2.3的dtd文件容易理解。servlet2.3和servlet2.4的区别在哪里

解决方案 »

  1.   

    因为我更熟悉servlet2.3的部署描述符,所以上面这些问题很多都是基于2.3来问的,如果开始就接触servlet2.4的人可能根本不会有我这些问题:)servlet2.4早随着JEE1.4已经出来了7年之久(2003年11月11日sun发布JEE1.4),struts2的运行必要条件就是servlet2.4, jsp2.0, java1.5, 但是我一直没有密切接触过,落伍了,泪奔~
      

  2.   

    补充一个,servlet2.4中taglib的声明不再是必须的了,可以在tld中通过uri来获得,为了兼容2.3的servlet,可以考虑在web.xml中加入到jsp-config中<jsp-config>
     <taglib>
        <taglib-uri>mytags</taglib-uri>
        <taglib-location>/WEB-INF/jsp/mytaglib.tld</taglib-location> 
     </taglib> 
    </jsp-config> 
      

  3.   

    关于specification和xsd请查看http://java.sun.com/xml/ns/j2ee