一、概述
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包可集成。