`
234390216
  • 浏览: 10187642 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:460491
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1771181
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1394990
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:393701
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:678008
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:529018
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1178293
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:460921
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:149910
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:66654
社区版块
存档分类
最新评论

Servlet3.0模块化支持

阅读更多

Servlet3.0模块化支持

 

       Servlet3.0现在已经支持各Web组件的模块化了。也就是说现在我们可以把各Web组件单独拿出来进行开发,之后把它们打成对应的jar包放到主项目中就可以了,而不必像之前那样——所有的内容都必须在web.xml文件中进行定义。有了对模块化的支持后我们在实际应用中就可以把某些通用功能的FilterListenerServlet作为一个单独的Web模块进行定义,在需要使用它们的项目中就把对应Web模块对应的jar包加进去就可以了。是不是很有用呢?接下来我们就来看一下这些Web组件究竟是怎样模块化的。

       Web模块打成的jar包的内容的文件结构要求是这个样子的:

|--META-INF

|     |--web-fragment.xml

|     |--resources

|     |     |--jsp、图片等,相当于web的根目录

|--class文件和类路径下的文件

 

       其中web-fragment.xml文件是必须要的。上述目录结构就相当于在我们的类路径下有一个META-INF目录,该目录下有web-fragment.xml文件及包含jsp、图片等资源的resources目录。针对于上述这样的目录结构,所以当我们在使用Maven构建项目的时候,我们的Maven项目的目录结构应该是这个样子的:



 
       web-fragment.xml文件的作用与Web应用下的web.xml文件的作用是相似的,在web.xml文件可以配置的信息都可以在web-fragment.xml文件中进行配置。此外,它们的文档结构也非常的相似。所不同的是web-fragment.xml文件的根元素是web-fragment,所使用的schema也是web-fragment相应的schema。

<web-fragment 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-fragment.xml文件中我们可以通过<name>元素来指定当前模块的名称,用<ordering>元素来指定当前模块相对的加载顺序。<ordering>元素下面可以指定<before><after>元素,而<before><after>元素下又可以指定<name><others>元素。我们来看几个指定ordering的示例。

在其他模块之前加载

   <ordering>
      <!-- 在其它模块之前加载 -->
      <before>
         <others/>
      </before>
   </ordering>

  

在指定模块之后加载

   <ordering>
      <!-- 在指定模块之后加载 -->
      <after>
         <name>模块名称</name>
      </after>
   </ordering>

  

       除了可以在web-fragment.xml文件里面通过<ordering>元素定义当前模块的加载顺序外,我们还可以在web.xml文件中通过<absolute-ordering>元素指定各模块的 加载顺序。而且web.xml文件中指定的加载顺序比web-fragment.xml文件中指定的加载顺序具有更高的优先级。如:

   <absolute-ordering>
      <name>module1</name>
      <name>module2</name>
      <name>module3</name>
      <others/>
   </absolute-ordering>

  

       接下来我们来展示一个创建web模块的例子。假设我们要创建一个叫做module1的模块,其中含有一个Module1Servlet,其代码如下所示:

public class Module1Servlet extends HttpServlet {
 
   private static final long serialVersionUID = 1L;
 
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp)
         throws ServletException, IOException {
      this.doPost(req, resp);
   }
 
   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp)
         throws ServletException, IOException {
      req.getRequestDispatcher("/module1.jsp").forward(req, resp);
   }
 
}

  

       接着我们在类路径下创建一个META-INF文件夹,在该文件夹下创建一个resources目录,在resources目录下创建一个module1.jsp文件。接着在META-INF目录下创建一个web-fragment.xml文件,其内容如下:

<web-fragment 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">
  
   <!-- 指定模块名称 -->
   <name>module1</name>
   <!-- 加载顺序 -->
   <ordering>
      <!-- 在其它模块之前加载 -->
      <before>
         <others/>
      </before>
   </ordering>
  
   <servlet>
      <servlet-name>module1Servlet</servlet-name>
      <servlet-class>com.xxx.Module1Servlet</servlet-class>
   </servlet>
  
   <servlet-mapping>
      <servlet-name>module1Servlet</servlet-name>
      <url-pattern>/servlet/module1</url-pattern>
   </servlet-mapping>
  
</web-fragment>

 

       之后我们把该项目打成一个jar包就可以把它作为一个jar加到其它Web应用中,在其它Web应用中使用了。放到其它Web应用中后,我们通过访问/servlet/module1就可以访问到我们module1模块中定义的Module1Servlet了。

 

 

  • 大小: 6.2 KB
2
3
分享到:
评论
3 楼 pengkey 2014-06-27  
234390216 写道
pengkey 写道
楼主,请问如果不打jar包,直接在eclipse或myeclipse里部署测试,怎么弄?
不可能每改一点东西都打个jar包再部署吧?

项目依赖可以解决你的问题。

不行啊,项目依赖是把依赖项目的META-INF目录发布到web项目的classes目录下,根本就访问不了,是否有方法可以改变其发布的路径?
2 楼 234390216 2014-06-25  
pengkey 写道
楼主,请问如果不打jar包,直接在eclipse或myeclipse里部署测试,怎么弄?
不可能每改一点东西都打个jar包再部署吧?

项目依赖可以解决你的问题。
1 楼 pengkey 2014-06-24  
楼主,请问如果不打jar包,直接在eclipse或myeclipse里部署测试,怎么弄?
不可能每改一点东西都打个jar包再部署吧?

相关推荐

    servlet3.0模块实现demo

    使用servlet3.0提供的模块化特性,实现web项目的多模块化开发

    JavaEE 6 Servlet 3.0 中的新特性

    • 模块化web.xml • 动态配置 • 异步Servlet • Servlet 3.0 — 易于开发 – 主要关注点 • 增强了API 以便使用SE 5 中新的语言特性 – 例如:批注、泛型(Generics) – 在上次JavaEE 5 中漏掉的Servlet • 部署...

    Servlet3.0 新特性之模块化实践

    NULL 博文链接:https://lyndon-lin.iteye.com/blog/1879609

    Java™ Servlet 规范.

    2.1.3 有条件 GET 支持 ..........................................................................................................................16 2.2 实例数量 ...........................................

    Servlet3.1规范(最终版) PDF

    16 2.3.1 加载和实例化 ................................................................................................................................16 2.3.2 初始化 ....................................

    DataGear数据可视化分析平台

    Servlet 3.0+ 编译: (执行单元测试编译,需要预先配置单元测试环境) mvn clean package (不执行单元测试编译,无需预先配置单元测试环境) mvn clean package -DskipTests 运行: cd datagear-webappembd/...

    tomcat6、7、8、9, maven3.5

    3.3版本提供了更多的模块化设计,允许通过添加和删除控制servlet请求处理的模块来定制servlet容器。此版本还包含许多性能改进。 的Apache Tomcat 3.2.X。版本3.2自3.1以来增加了几个新功能; 主要的努力是重构内部以...

    基于springboot+vue前后端分离架构一卡通消费系统源码+项目说明(支持人脸、刷码、实体卡).zip

    系统采用模块化、软硬件分离、前后端分离设计,极大地方便了一卡通系统扩展、升级。 # 技术选型 特别感谢 &gt; 项目基础框架采用若依,特别感谢若依,让开发更简单,减少前期的基础代码开发时间。 --- - 系统环境 &gt; ...

    JAVA WEB典型模块与项目实战大全.part2(第二卷)

    第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+...

    java8源码-LearnSpring:学习springboot

    servlet3.0 版本新增若干注解,使得 Servlet, Filter, Listener 可以不必声明在 xml 中,而是可以以类加注解的形式出现,这样 web.xml 就不是必须的了。 一是 WebApplicationInitializer 这个类,做了很多 web 容器...

    JAVA WEB典型模块与项目实战大全.part4

    第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+...

    JAVA WEB典型模块与项目实战大全.part3(第三卷)

    第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+...

    Java_EE_6规范中文版

    6.4 Servlet 3.0标准 6.5 JavaServer PagesTM标准 6.6 Expression Language标准 6.7 JavaTM Message Service 6.8 JavaTM Transaction API 6.9 JavaMailTM 1.4标准 6.10 Java 连接器体系结构标准 6.11 Java EE Web...

    JAVA WEB典型模块与项目实战大全.part1(第一卷)

    第22章 用户登录模块(Struts 2.X+Guice+国际化) 第3篇 项目案例实战 第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+...

    spring-annotion:Spring源码分析以及注解开发

    Spring注解驱动开发,包含一个refresh()方法的流程(在resources目录下) 模块介绍 ---&gt; ext扩展原理包含beanFactoryPostProcessor,...启动也包含SpringMVC注解化开发和Servlet3.0注解开发

    DataGear数据可视化分析平台-其他

    Servlet 3.0+ 编译: (执行单元测试编译,需要预先配置单元测试环境) mvn clean package (不执行单元测试编译,无需预先配置单元测试环境) mvn clean package -DskipTests 运行: cd datagear-webappembd/target...

    JAVA WEB典型模块与项目实战大全

    第5章 验证模块(jsp+servlet+jsvaildation)  5.1 表单基础  5.2 客户端表单验证框架  5.3 服务器端验证  5.4 实现图形验证码  5.5 避免重复提交功能  5.6 缩略加水印图像  5.7 小结  第6章 网络...

    springboot学习思维笔记.xmind

    Servlet3.0+异步方法处理 Spring MVC的测试 MockMVC MockHttpServlerRequest MockHttpServletResponse MockHttpSession SpringBoot基础 SpringBoot概述 什么是SpringBoot SpringBoot核心...

    J2EE应用开发详解

    EJB 179 11.1 EJB简介 179 11.1.1 EJB的特点 179 11.1.2 EJB类型与组成 180 11.1.3 EJB 3.0的新特性 181 11.2 元数据注释和部署描述符 181 11.2.1 元数据注释 181 11.2.2 部署描述符 182 11.3 EJB支持JNDI 183 ...

    ssh(structs,spring,hibernate)框架中的上传下载

    将FileActionForm直接作为业务层的接口入参,相当于将Web层传播到业务层中去,即将业务层绑定在特定的Web层实现技术中,按照分层模型学院派的观点,这是一种反模块化的设计,但在"一般"的业务系统并无需提供多种UI...

Global site tag (gtag.js) - Google Analytics