标签:不同 基础上 没有 引用 ati 今天 uil color 示例
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声:
注:关于Servlet3.0新特性今天着重演示web-fragment.xml模块化配置文件(在实际项目遇到的),关于其他新特性可以参考此文章:Servlet3.0新特性详解 或者 博友文章
普通的web.xml文件文件模板是:
<?xml version="1.0" encoding="UTF-8"?> <web-app 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-app_3_1.xsd" version="3.1"> ................ </web-app>
web-fragment.xml文件模板是:
<?xml version="1.0" encoding="UTF-8"?> <web-fragment id="WebFragment_ID" version="3.0" 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"> ............ </web-fragment>
首先就是根标签的不一样正常的web.xml文件标签是 <web-app></web-app> 这表示主要的Javaweb项目的配置文件,而web-fragment.xml文件根标签是<web-fragment></web-fragment>,和web-fragment.xml 与 web.xml 除了在头部声明的 XSD 引用不同之外,其主体配置与 web.xml 是完全一致的,Servlet 3.0 引入了称之为“Web 模块部署描述符片段”的 web-fragment.xml 部署描述文件,该文件必须存放在 JAR 文件的 META-INF 目录下,该部署描述文件可以包含一切可以在 web.xml 中定义的内容。JAR 包通常放在 WEB-INF/lib 目录下,除此之外,所有该模块使用的资源,包括 class 文件、配置文件等,只需要能够被容器的类加载器链加载的路径上,比如 classes 目录等。可以说这个新特性还是很实用的,不用把之前臃肿的配置全部放在web.xml文件中了,可以把一些初始化的配置全部配置到web-fragment.xml文件中,比如在分布式项目中,spring的包扫描,在一些公司中都会有相应的规范约束,就连controller和service等等都要求包名都要遵守规范,这样我们就可以提取出来一个工程,统一加载spring的配置文件,在web-fragment.xml中加载这些spring的配置文件,这样在其他开发者工作中,不用每次都要配置spring的几乎重复的配置,直接引用相应的jar包即可完成配置,这样可以打打提高效率。
例如:
******************************************
这样在其他开发者引用该项目以后,就可以做到"0配置spring"就可以使用spring带来的方便。
*首先:web.xml肯定是第一个执行的因为web.xml是web项目的入口
*多个web-fragement.xml 的执行顺序是可以配置的,示例:
使用部署描述符(web.xml)中的<absolute-ordering>元素,可以按如下所示设置绝对顺序:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <name>MyApp</name> <absolute-ordering> <name>MyFragment1</name> <name>MyFragment2</name> </absolute-ordering> ... </web-app>
Web片段的相对排序:
使用web-fragment.xml中的<ordering>元素,可以设置相对顺序。下面给出三个不同的web-fragment.xml文件,如下所示:
web-fragment.xml:
<web-fragment> <name>MyFragment1</name> <ordering><after><name>MyFragment2</name></after></ordering> ... </web-fragment>
web-fragment.xml:
<web-fragment> <name>MyFragment2</name> ... </web-fragment>
web-fragment.xml:
<web-fragment> <name>MyFragment3</name> <ordering><before><others/></before></ordering> .. </web-fragment>
在<before>指明所述含有片段必须在片段名称之前预订下嵌套提供<name>标记。<after>标记指定必须在嵌套的<name>标记下提供的片段名称之后对片段进行排序。在<before> <others/> </before> 指明所述含有片段必须是在web.xml后的排序的第一个。
以上内容的网页片段顺序如下:
参考文献来自:Web片段的排序
*首先创建一个test的maven工程,这里只有web-fragment.xml文件,其他没有只是作为演示:
在web-fragment.xml文件中配置context-param参数:
然后安装到本地仓库
注意:该文件必须存放在 JAR 文件的 META-INF 目录下,在maven中配置:
<build> <resources> <resource> <directory>src/main/resources</directory> <targetPath>META-INF/</targetPath> </resource> </resources> </build>
*****************
*创建一个AA的javaweb项目,添加一个监听器,或者上下文参数:
启动项目打印结果:
从结果可以看出在test工程里web-fragment.xml配置的参数生效了,只需要应用该jar包就可以完成web.xml文件的模块化配置。
Servlet3.0新特性之web-fragment.xml模块化配置文件
标签:不同 基础上 没有 引用 ati 今天 uil color 示例
原文地址:https://www.cnblogs.com/xiejn/p/12687976.html