如果图片看不到,请移步:http://sdrv.ms/1dGzTCh
一、Web产品的客户化定制开发概述
很多产品在为具体客户进行部署后,每个客户都有可能提出一些个性化的需求,这就需要对产品进行一定的定制开发,此现象在中小IT公司尤其常见。在产品的定制开发过程中不可避免的需要在原产品中增加或修改功能,由于JavaWeb技术本身对模块化的支持严重不足,在进行定制开发时通常会导致版本控制混乱、开发调试不便和部署复杂等问题。
目前客户化定制开发常见模式主要有:
1.直接修改方式
通常通过SVN创建产品的分支,然后直接修改源码,添加或变更产品的部分功能。
此方式修改方便,但会导致产品版本控制混乱。
2.覆盖方式
类似直接修改方式,但不直接在产品源码中修改,在部署时先部署产品然后将修改后的类和资源文件向产品部署目录进行覆盖。
此方式部署较复杂,通常还需要修改已部署产品的配置文件,另外也会导致版本控制问题。
3.产品架构设计支持方式
产品在设计之初就考虑到各种客户化定制的需求,采用OSGI插件或其它技术支持客户化功能变更。
此方式的主要问题是设计复杂增加开发难度,另外调试不便。
Servlet3.0 WebFragment简介
2010年发布的Servlet3.0规范(从属于JavaEE6的一部分)中增加了Web片段技术,大大加强了Web项目的模块化开发支持。Servlet3.0中同时增加了异步Servlet、WebSocket、原生文件上传、注解等多种现代化特性。
目前几乎各种主流Web服务器都已经支持Servlet3.0/JavaEE6,例如:Tomcat7.x、Jetty8.x、GlassFish3.x等。
同样各种开发工具也已经提供支持,例如:Eclipse3.6、MyEclipse9.1、Netbeans7.x、IntelliJ 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.在主项目和模块项目中各自Servlet和JSP尝试模块化开发模式
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")”,注解括号中是指ServletB的UrlMapping,可以按需设置。
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文件中没有额外的配置,因此模块项目的加入没有污染主项目,部署也非常简单。
5 结论
因此Servlet3.0 WebFragment提供的模块化开发模式,完全克服了传统产品客户化项目的问题,其效果达到了引用第三方jar包的便捷性。
相关推荐
海康威视作为全球领先的安防解决方案提供商,其提供的WEB3.0控件开发包是针对其综合安防平台iSecure Center V1.4.0的重要组件,旨在帮助开发者创建基于HTML的交互式监控应用。该开发包是专为增强网页端视频监控功能...
通过以上分析,我们可以看出这个基于Servlet的网页聊天室项目涵盖了Web开发的多个重要方面,包括服务器端编程、客户端交互、数据管理、安全性以及用户体验设计。开发者需要具备扎实的Java基础、熟悉Web开发框架,并...
C# 3.0版本引入了许多新特性,如LINQ、匿名方法和扩展方法等,这些都对设计模式的应用产生了深远影响。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在C#中,可以通过静态字段和双重检查锁定来...
基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于...
基于jsp-servlet的客户管理系统CRM基于jsp-servlet的客户管理系统CRM 基于jsp-servlet的客户管理系统CRM基于jsp-servlet的客户管理系统CRM 基于jsp-servlet的客户管理系统CRM基于jsp-servlet的客户管理系统CRM 基于...
这是一个基于jsp+servlet的web项目,没有用到框架技术,主题是客户资源管理系统,有名片信息管理、客户信息管理、组信息管理、用户信息管理、同一人物设定,管理员专区等模块,其中包括图片上传,文件上传、权限控制...
Java基于Servlet框架实现的CRM(客户关系管理)系统是一个典型的Web应用程序,主要目的是帮助企业管理和优化与客户的交互。这个系统特别适合Java初学者学习,因为它涵盖了基础的Web开发技术和企业级应用的一些核心...
### 大规模定制模式下的敏捷产品开发 #### 一、大规模定制的概念与发展趋势 大规模定制是一种结合了标准化生产和个性化服务优势的新型生产模式。在这一模式下,企业能够以接近大规模生产成本的价格,为客户提供...
服务管理在B2B场景下重点关注服务适配和产品化,确保服务能够根据客户需求定制,并转化为可持续盈利的产品。合作伙伴管理则涉及多种类型的合作伙伴管理策略,以适应不同解决方案、行业和地区的需求。 其次,CRM3.0...
本项目“基于Servlet+Spring+Mybatis的客户关系管理系统”是一个典型的Java Web应用程序,适用于毕业设计,旨在帮助学生掌握Web开发的核心技术并实践实际项目开发流程。 首先,让我们深入理解这三大核心技术: 1. ...
**Winform的PetShop3.0开发模式详解** PetShop3.0是一个经典的.NET Framework应用程序示例,它展示了如何利用Windows Forms(Winform)技术构建一个功能完备的宠物商店管理应用。这个项目不仅包含了基本的UI设计,...
其次,互联网3.0时代的到来使得消费者的消费模式升级,追求体验、品质和个性的消费体验,企业必须适应这种变化,满足客户的个性化需求。 文章还提出了创新企业商业化转型模式的具体措施,包括采集市场需求、设计...
【紫薇山庄别墅项目定制化开发模式的设计与实施】 紫薇山庄别墅项目采用了创新的全程定制化开发模式,这是在当前中国房地产市场上的一种前瞻性开发策略。这种模式旨在通过提升产品品质,满足客户的个性化需求,从而...
本文将深入探讨一个基于Servlet和JSP技术构建的汽车销售管理系统,该系统旨在实现客户预定车辆、客户管理、车辆管理以及司机管理等核心功能,以期为汽车销售业务提供更为高效、便捷的操作平台。 一、Servlet与JSP...
【标题】基于Servlet+Mybatis+Bootstrap的客户关系管理系统CRM是一个综合运用了多种技术的Web应用程序,用于管理和优化企业与客户之间的关系。该系统的核心组件包括Servlet、Mybatis和Bootstrap,这三者在Web开发中...
随着煤矿井下履带钻机客户定制化的不断普及,针对履带钻机产品种类及规格呈现精细化、多样化、复杂化等特点,成功开发了多变幅履带钻机模块化平台。分析了模块化平台研制过程中的4个关键环节:模块化平台的建设,...
Servlet是Java平台中用于开发Web应用程序的核心技术之一,它是一个Java类,遵循Java Servlet API规范,用于处理来自客户端(通常是Web浏览器)的HTTP请求,并生成响应。Servlet的主要优点包括持久性、平台无关性、可...