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

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

    在这个"Servlet 3.0模块实现demo"中,我们将探讨如何利用这些新特性实现一个模块化的Web项目,以及如何通过Maven进行依赖管理。 一、Servlet 3.0的主要特性 1. **注解驱动的Servlet**:在Servlet 3.0中,我们不再...

    servlet 3.0 jar 包综合下载

    8. **Pluggable Servlet Container**:Servlet 3.0标准使得Servlet容器更加模块化,开发者可以自定义Servlet容器,或者开发独立于容器的应用程序,增强了灵活性和可移植性。 9. **动态注册**:开发者可以在运行时...

    Servlet 3.0jar包和source包

    4. **微容器**:Servlet 3.0引入了微容器的概念,允许在没有完整web应用部署的情况下运行部分组件,提高了模块化和部署灵活性。 5. **WebSocket支持**:虽然Servlet 3.0本身不直接支持WebSocket,但它是WebSocket ...

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

    在这个主题中,我们将深入探讨Servlet 3.0的模块化实践,以及如何利用这些特性优化开发流程。 一、模块化架构 在Servlet 2.5及之前版本中,Web应用通常被打包为单一的WAR文件,这导致了代码耦合度高,不易管理和...

    Servlet3.0新特性解析

    这个特性极大地提高了应用的可扩展性和模块化程度,使得开发人员可以更加自由地控制Servlet的生命周期。 综上所述,Servlet3.0的这些新特性为Java Web开发带来了显著的改进。监听器和过滤器的注解驱动注册简化了...

    Servlet3.0 Demo

    Servlet3.0允许在应用内部定义自己的微容器,这意味着应用可以自定义初始化过程,增强了模块化和扩展性。 6. **Filter的注解支持**: `@WebFilter`注解使得Filter的注册和配置变得更简单。开发者可以直接在Filter...

    servlet3.0 jar \ doc \pdf 相关文档资料

    Servlet 3.0引入了微容器概念,使得应用程序可以在不依赖全局web.xml的情况下运行,实现了模块化和可插拔的部署。 6. **Pluggable Contexts**: 开发者可以自定义Web应用程序上下文(ServletContext),实现更...

    Servlet 3.0 API - Apache Tomcat 7.0.41

    5. **微容器(Microcontainer)**:Servlet 3.0引入了微容器的概念,允许在Web应用程序内部创建自定义的部署组件,增强了模块化和可扩展性。 6. **WebSocket支持**:Servlet 3.0规范添加了对WebSocket协议的支持,...

    servlet3.0规范

    通过使用Servlet 3.0的模块化特性,开发者可以构建微容器,只包含应用程序所需的最小依赖,从而实现更轻量级的部署。 6. **预加载Servlet**: 开发者可以通过注解指定Servlet在应用启动时自动加载,无需等待第一...

    servlet-api-3.0.zip

    - **可选依赖**:Servlet 3.0引入了可选依赖的概念,使得模块化开发更加灵活,应用可以只加载实际需要的Servlet和过滤器。 2. **Servlet生命周期**: - **初始化**:Servlet实例化后,会调用`init()`方法进行初始...

    servlet 3.0 规范提案

    开发者可以直接在代码中注册Servlet和过滤器,使得小型应用或者模块化应用的开发变得更加简单。 4. **动态注册**: - 开发者可以在应用程序运行时动态注册Servlet、过滤器和监听器,提供了更大的灵活性。`...

    JavaEE 6 Servlet 3.0 中的新特性

    Servlet 3.0 对 web.xml 进行了模块化处理,使得配置更加灵活。开发者可以选择仅在需要的地方使用它,而不是像以前那样需要包含大量的配置信息。 #### 动态配置 Servlet 3.0 还支持动态配置,这意味着应用可以运行...

    servlet3.0+jboss7+jsp+Mysql5.0+IDEA13 登录注册(jar包,css齐全)

    JBoss 7采用了模块化设计,提高了性能和启动速度。它支持热部署,使得开发者在开发过程中无需重启服务器即可看到代码变更的效果。此外,JBoss 7提供了对Servlet 3.0的支持,方便我们部署和管理Web应用程序。 3. **...

    Servlet3.0新特性,Servlet3新特性,Servlet3注解,Servlet3异步处理【蕃薯耀】

    在本篇文章中,我们将深入探讨Servlet3.0的主要新特性,包括注解、异步处理、容器初始化参数以及模块化部署等。 首先,Servlet3.0最显著的特征之一是广泛使用注解(Annotation)。传统的Servlet配置通常需要在web....

    Servlet3.0微框架

    Servlet3.0允许开发者创建自定义的ServletContext实现,这为创建模块化应用提供了可能,每个模块可以有自己的ServletContext,降低了模块间的耦合。 5. **WebSocket支持** 新增了对WebSocket协议的支持,允许...

    javax.servlet-3.0

    【标题】"javax.servlet...综上所述,"javax.servlet-3.0"代表了Servlet API的一个重要里程碑,提供了许多现代化的特性,极大地改进了Java Web开发的效率和性能。对于Java开发者来说,理解和掌握这些特性是至关重要的。

    servlet 3.0 spec

    综上所述,servlet 3.0规范为Java Web开发提供了一个强大的、模块化的、灵活的框架,它对Java EE的其他技术提供了良好的支持,并且通过注解和其他特性简化了Web应用的开发。开发者使用这个规范可以创建可扩展的、...

    servlet-3.0最新规范pdf

    3. **可插拔的Servlet容器**:Servlet 3.0引入了模块化的概念,允许开发者创建独立于具体容器的Servlet模块。这使得Servlet应用可以在不同的服务器之间轻松迁移,同时也方便了单元测试。 4. **URL路径映射增强**:...

    详解Servlet3.0新特性(从注解配置到websocket编程)

    Servlet 3.0 新规范提出了模块化开发,也就是每个 Servlet、Filter、Listener 都可以有属于自己的配置文件,功能和 web.xml 一样,它只负责配置当前的 Servlet。然后我们只需要将配置文件和自己写的 Servlet 等内容...

Global site tag (gtag.js) - Google Analytics