Servlet3.0规范不再要求所有Web组件(如Servlet、Listener、Filter等)都部署在web.xml文件中,而是允许采用"Web模块"来部署、管理他们;
1、Web模块
一个Web模块通常对应于一个JAR包,这个JAR包有如下文件结构:
<webModule>.jar ->Web模块的JAR包
|--META-INF
| --web-fragment.xml
|--Web模块所用的类文件、资源文件等
3、web.xml配置web模块加载顺序
在web.xml文件中指定的加载顺序将会覆盖Web模块中web-fragment.xml文件所指定的加载顺序;
<absolute-ordering>
<!-- 指定web模块按如下顺序加载 -->
<name>leegang</name>
<name>crazyit</name>
</absolute-ordering>
4、作用
Servlet3.0的Web模块支持为模块化开发、框架使用提供巨大方便;例如需要在Web应用中使用web框架,这就只要将该框架的JAR包复制到web应用中即可!因为这个JAR包的META-INF目录下可以通过web-fragment.xml文件来配置该框架所需要的Servlet、Listener、Filter等,从而避免修改web应用的web.xml文件。
1、Web模块
一个Web模块通常对应于一个JAR包,这个JAR包有如下文件结构:
<webModule>.jar ->Web模块的JAR包
|--META-INF
| --web-fragment.xml
|--Web模块所用的类文件、资源文件等
说明:Web模块与普通JAR的最大区别在于需要在META-INF目录下添加一个web-fragment.xml文件(被称为Web模块部署描述符);
2、Web模块示例:只定义一简单ServletContextListener,对应web-fragment.xml文件如下
<span style="font-size:18px;"><?xml version="1.0" encoding="GBK"?>
<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模块的唯一标识 -->
<name>crazyit</name>
<listener>
<listener-class>lee.CrazyitListener</listener-class>
</listener>
<ordering>
<!-- 用配置该Web模块必须位于哪些模块之前加载 -->
<before>
<!-- 用于指定位于其他所有模块之前加载 -->
<others/>
</before>
</ordering>
</web-fragment></span>
注意:将Web模块(java项目)编译、打包成JAR包,然后复制到任意WEB应用的WEB-INF/lib目录下,启动Web应用,Web模块就被加载;3、web.xml配置web模块加载顺序
在web.xml文件中指定的加载顺序将会覆盖Web模块中web-fragment.xml文件所指定的加载顺序;
<absolute-ordering>
<!-- 指定web模块按如下顺序加载 -->
<name>leegang</name>
<name>crazyit</name>
</absolute-ordering>
4、作用
Servlet3.0的Web模块支持为模块化开发、框架使用提供巨大方便;例如需要在Web应用中使用web框架,这就只要将该框架的JAR包复制到web应用中即可!因为这个JAR包的META-INF目录下可以通过web-fragment.xml文件来配置该框架所需要的Servlet、Listener、Filter等,从而避免修改web应用的web.xml文件。
特别说明:如果能帮助到您,请您留下点滴痕迹,让我知道我的存在是有意义的;如果不能帮助到您,请接受我的歉意;(示例下载)