`
yvfish
  • 浏览: 262204 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

基于Servlet3.0 WebFragment特性优化Web产品的客户化定制开发模式

阅读更多

如果图片看不到,请移步:http://sdrv.ms/1dGzTCh

 

一、Web产品的客户化定制开发概述

很多产品在为具体客户进行部署后,每个客户都有可能提出一些个性化的需求,这就需要对产品进行一定的定制开发,此现象在中小IT公司尤其常见。在产品的定制开发过程中不可避免的需要在原产品中增加或修改功能,由于JavaWeb技术本身对模块化的支持严重不足,在进行定制开发时通常会导致版本控制混乱、开发调试不便和部署复杂等问题。

 

目前客户化定制开发常见模式主要有:

1.直接修改方式

通常通过SVN创建产品的分支,然后直接修改源码,添加或变更产品的部分功能。

此方式修改方便,但会导致产品版本控制混乱。

 

2.覆盖方式

类似直接修改方式,但不直接在产品源码中修改,在部署时先部署产品然后将修改后的类和资源文件向产品部署目录进行覆盖。

此方式部署较复杂,通常还需要修改已部署产品的配置文件,另外也会导致版本控制问题。

 

3.产品架构设计支持方式

产品在设计之初就考虑到各种客户化定制的需求,采用OSGI插件或其它技术支持客户化功能变更。

此方式的主要问题是设计复杂增加开发难度,另外调试不便。

Servlet3.0 WebFragment简介

2010年发布的Servlet3.0规范(从属于JavaEE6的一部分)中增加了Web片段技术,大大加强了Web项目的模块化开发支持。Servlet3.0中同时增加了异步ServletWebSocket、原生文件上传、注解等多种现代化特性。

目前几乎各种主流Web服务器都已经支持Servlet3.0/JavaEE6,例如:Tomcat7.xJetty8.xGlassFish3.x等。

同样各种开发工具也已经提供支持,例如:Eclipse3.6MyEclipse9.1Netbeans7.xIntelliJ IDEA 10.x等。

 

二、WebFragment实践

 

开发环境:MyEclipse9.1/Tomcat7.0

 

1.创建一个标准Web Project做为主项目

此项目除了JavaEE版本从JavaEE5变化为JavaEE6,项目整体结构上没有特别之处,主要区别是web.xml中的版本号定义为3.0

 

1.1项目结构视图

屏幕剪辑的捕获时间: 2012/8/1 16:27

 

1.2 web.xml截图

屏幕剪辑的捕获时间: 2012/8/1 16:27

 

2.创建一个Web Fragment Project做为项目模块

 

2.1选择Web Fragment Project项目向导

屏幕剪辑的捕获时间: 2012/8/1 16:32

 

注意:如果找不到Web Fragment Project,请勾选“Show All Wizards”选项。

 

2.2 创建Web Fragment Project项目

屏幕剪辑的捕获时间: 2012/8/1 16:32

 

注意:“Dynamic Web Project name”项务必选中主项目。

 

2.3 Web Fragment项目结构视图

 

 

屏幕剪辑的捕获时间: 2012/8/1 17:07

 

可以看到此项目结构类似于普通的“Java Project",项目结构中没有常见Web项目的WebRoot目录,而是在src下多了一个META-INF目录。

目录下的resources目录相当于主Web项目中的WebRoot目录,resources目录需要自行创建。

目录下的web-fragment.xml就是此Web项目片段的配置文件,相当于主Web项目中的web.xml

 

 

2.4  web-fragment.xml截图

屏幕剪辑的捕获时间: 2012/8/1 16:43

 

可以看到web-fragment.xml文件中的根标签与web.xml文件中的根标签不同,但实际上它们的内容元素(子标签)都是相同的。

 

 

3.在主项目和模块项目中各自ServletJSP尝试模块化开发模式

 

3.1在主项目“Product”中创建ServletA

创建Serlvet的过程与Serlvet2.5/JavaEE5中基本没有区别,使用默认生成的代码即可。

 

3.2在模块项目“ProductPlugin”中创建ServletB

3.2.1使用Servlet向导创建ServletB

屏幕剪辑的捕获时间: 2012/8/1 16:43

 

注意:可以不用勾选“Generate/Map web.xml file”选项,因为在Fragment项目中根本不存在web.xml文件,所以也不需要理会向导中的错误提示信息。

 

3.2.2 在模块项目中引入JavaEE6

ServletB创建之后会发现,代码中出现错误提示

屏幕剪辑的捕获时间: 2012/8/1 17:10

 

此错误很明显是由于项目中未引入JavaEE相关类库,导致无法识别HttpServlet类。

 

在项目上右击,选择“Build Path -> Add Library”,打开添加库窗口,选择“MyEclipse Libraries -> JavaEE 6 Libraries”点击确定,错误自动消除。

屏幕剪辑的捕获时间: 2012/8/1 17:15

 

3.2.3 配置ServletB

 

可以按照JavaEE5中配置Servlet的标准方式在web-fragment.xml中配置ServletB,在此示例中将尝试注解的方式进行配置。

打开ServletB代码,在类声明前增加“@WebServlet("/ServletB")”,注解括号中是指ServletBUrlMapping,可以按需设置。

 

3.3 在模块项目中创建一个JSP

只要把JSP文件创建到src/META-INF/resources/目录下即可,可以在文件内容中添加一些关于模块项目的说明文字。

 

4.运行项目,验证模块化开发结果

4.1运行效果截图

4.1.1 主项目默认欢迎页

 

4.1.2 主项目ServletA

 

4.1.3 模块项目ServetB

 

4.1.4 模块项目JSP

 

通过每个功能的URL地址来看,使用WebFragment模块化开发的运行结果,与普通的WebProject开发的运行结果是一致的。

 

 

4.3 打包项目部署,分析打包结果

将主项目按照传统过程导出为标准WAR文件,然后按照生产环境部署到Tomcat7中。

进入Tomcat7/webapps/Product目录,可以看到目录中并不存在模块项目“ProductPlugin”中的jsp/servlet文件,而是在“WEB-INF/lib”目录下多出了一个“ProductPlugin.jar”文件。

模块项目“ProductPlugin”以jar的方式存在,所有模块项目的代码和资源文件都已经打包在“ProductPlugin.jar”文件中,主项目的web.xml文件中没有额外的配置,因此模块项目的加入没有污染主项目,部署也非常简单。 

 

结论

 

因此Servlet3.0 WebFragment提供的模块化开发模式,完全克服了传统产品客户化项目的问题,其效果达到了引用第三方jar包的便捷性。

1
0
分享到:
评论

相关推荐

    基于Servlet+JSP+SQL Server实现的客户信息管理系统.zip

    基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于...

    基于Servlet+Mybatis+Bootstrap的客户关系管理系统CRM.zip

    基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目...

    基于jsp-servlet的客户管理系统CRM.zip

    基于jsp-servlet的客户管理系统CRM基于jsp-servlet的客户管理系统CRM 基于jsp-servlet的客户管理系统CRM基于jsp-servlet的客户管理系统CRM 基于jsp-servlet的客户管理系统CRM基于jsp-servlet的客户管理系统CRM 基于...

    基于jsp+servlet的客户资料管理系统

    这是一个基于jsp+servlet的web项目,没有用到框架技术,主题是客户资源管理系统,有名片信息管理、客户信息管理、组信息管理、用户信息管理、同一人物设定,管理员专区等模块,其中包括图片上传,文件上传、权限控制...

    U8快速客户化开发工具-基础介绍

    U8快速开发工具是针对客户化开发的特点,基于U8平台而开发的一套简化、快速、高效的U8单据开发工具。使用快速开发工具开发的单据与U8标准单据风格一致,可通过数据库脚本的简单调整设置单据上字段格式(文本、日期、...

    基于jsp+servlet开发的电子商务平台

    基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet...

    基于servlet网页聊天室

    用java+servlet+jsp这些技术实现了可以在网页上进行聊天(聊天纪录主要保存在servletContext里面),该项目主要是实现的功能是客户和客服之间的关系

    基于ATO模式的煤矿井下多变幅履带钻机模块化平台开发

    随着煤矿井下履带钻机客户定制化的不断普及,针对履带钻机产品种类及规格呈现精细化、多样化、复杂化等特点,成功开发了多变幅履带钻机模块化平台。分析了模块化平台研制过程中的4个关键环节:模块化平台的建设,...

    Java Web应用开发:servlet.ppt

    知道如何解决web开发中的中文乱码问题,知道乱码问题产生的原因和解决方法 会debug服务端代码 什么是Servlet Servlet是Java web应用中最核心的组件,完全用Java语言编写,它运行于服务端,它的程序代码被服务器动态...

    基于JSP+JDBC+Servlet的一个简单的客户管理系统.zip

    基于JSP+JDBC+Servlet的一个简单的客户管理系统 基于JSP+JDBC+Servlet的一个简单的客户管理系统 基于JSP+JDBC+Servlet的一个简单的客户管理系统 基于JSP+JDBC+Servlet的一个简单的客户管理系统 基于JSP+JDBC+Servlet...

    基于servlet jsp做的学生选课系统

    Bean: 用来实例化数据库中信息的实体类,规范数据存储。 JSP:主要负责程序界面的制作,实现显示成逻辑。 Servlet:主要负责接收前台用户的提交信息并且做相应的处理然后将处理结果。 返回给前台客户,负责整个程序...

    基于Web的客户关系管理系统的开发

    基于Web的客户关系管理系统的开发 相关论文资料

    设计模式——基于C#的工程化实现及扩展

    本书基于C# 2.0的语法,试图将GOF 23中的模式以一种可工程化的公共库而非Example的方式呈现给读者。内容包括以下7部分。 第1篇主要是概括性的介绍;第2篇创建型模式介绍通过将实例化职责委托他方对象的办法,隔离...

    基于Xilinx FPGA的SATA3.0 IP核.pdf

    纯FPGA逻辑实现,支持SATA3.0白皮书涵盖的所有功能,客户可以定制裁剪一些功能,如“省电模式”以及一些用不到的“指令集”,以减少资源消耗;支持SATA3.0接口的硬盘,包括磁盘/固态盘,3.5寸/2.5寸/mSATA等形式,...

    java基于servlet框架实现的CRM客户关系管理系统(适合初学者)

    java基于servlet框架实现的CRM客户关系管理系统(适合java初学者),希望给需求的朋友带来帮助,可以借鉴一下。

    servlet temple

    当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能:  (1) 创建并返回一个包含...

    javaweb Servlet基础教程

    Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是...

    基于Servlet+Spring+Mybatis的客户关系管理系统.zip

    基于Servlet+Spring+Mybatis的客户关系管理系统

    NetTask一款基于.net core3.0开发的的通用任务管理系统.zip

    是一款基于.net core3.0开发的的通用任务管理系统,将任务逻辑和任务调度彻底分离,并可通过Web界面远程监控和管理任务。 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统...

Global site tag (gtag.js) - Google Analytics