一、概述

  web-fragment是servlet3.0的新特性

  目标:在不影响web.xml整体结构的情况下,独立开发web模块,提高复用性、降低耦合。

  原理:容器识别web-fragment.xml配置文件,将其与整体应用合并。

  应用:将引用了web-fragment的模块打成jar包,导入到主程序中。

二、web-fragment.xml配置头信息

  servlet3.0版本

<web-fragment 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-fragment_3_0.xsd" version="3.0">  
   
</web-fragment>

  servlet3.1版本

<web-fragment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd"
     version="3.1">
</web-fragment>

   注:xmlns的地址有改变,引用错了会报错

三、配置信息

  web-fragment.xml的配置和web.xml差不多一样,有个别属性不同,后面慢慢终结了。

  模块的配置名称和加载顺序,不绝对固定,当有多个模块在同一个模块后加载,这多个模块的顺序不是固定的。

//模块名称,可以不要,主要是配置web-fragment.xml的加载顺序时需要用到
<name>MyFragment1</name>

//模块MyFragment1在MyFragment2后加载
<name>MyFragment1</name>  
<ordering><after><name>MyFragment2</name></after></ordering>
//模块MyFragment3在MyFragment2之前加载
<name>MyFragment3</name>
<ordering><before><name>MyFragment2</name></before></ordering>

<ordering><before><others/></before></ordering>  //第一个执行
<ordering><after><others/></after></ordering>    //最后一个执行

  另外可以在web.xml中统一配置,这个是绝对顺序,二选一。

web.xml  
<web-app>  
<absolute-ordering>  
    <name>MyFragment3</name>  
    <name>MyFragment2</name>  
  </absolute-ordering>  
  ...  
</web-app>  

  其它配置属性<listener>、<filter>、<servlet>和web.xml没什么区别。

web-fragment组成的整个项目用maven不怎么好打包,需要先把每个模块的jar打好,pom中的依赖也要搭建好。不过web-fragment程序是高独立性的,通过jar包可集成。