刘坤彪 姜 玲
(1.武汉城市职业学院,湖北 武汉 430064;2.武汉交通职业学院,湖北 武汉 430065)
随着市场竞争的日益激烈,我国广大中小企业正普遍面临产品研发能力不足、经营管理水平落后、产业链协作能力低下等严峻挑战,迫切需要利用信息化技术来提升企业的综合竞争能力。近年来,随着云计算、物联网等技术的发展和日趋成熟,一种网络化制造新模式——云制造应运而生。中小企业云制造服务平台主要包括统一用户管理、制造资源注册发布、制造需求发布、制造服务注册中心、制造服务撮合管理、制造服务交易管理、制造服务业务管理、业务信用评估与分析、行业性知识聚集与服务网络化社区、服务平台系统管理等功能。该平台将成为我国中小企业充分利用和共享制造资源,提升产品设计、工艺、制造、营销业务服务能力的有效途径。为了尽可能提高系统各功能模块的独立性、扩展性,系统采用多层架构,使得各个模块的变化尽可能少地影响其它模块,提高系统的扩展性和可维护性。SSH框架在平台的多层架构上很好地满足了开发要求。
采用Struts2、Spring、Hibernate整合技术框架构建云制造服务平台,从而对各类制造资源和服务资源进行统一的集中智能化管理,通过网络和一个云制造平台中间件,将制造生命周期的前期、中期、后期提供给用户,提供一种可随时获取、按需使用的廉价优质的服务。云制造服务平台实现了制造业向服务业的转换,将为我国制造企业充分利用、共享社会制造资源,提升企业综合竞争能力提供重要支撑手段。
Struts2框架主要应用在控制层和表现层。Struts2控制器分为核心控制器FilterDispatcher与业务控制器Action,在web应用中核心控制器负责拦截所有的用户请求,业务控制器获取Web请求中的信息、Web应用的相关信息和用户会话信息,并根据这些信息进行业务逻辑处理,最后返回代表处理结果的字符串。此外,Struts2框架提供了强大的标签库,从而大大减少了JSP页面的脚本编码,而且可以处理表现层的数据,如输出表单数据的校验信息。通过自定义标签创建的JSP表单,可以实现对用户数据的封装,同时自定义标签还提供了像模板定制等多种显示功能,在UI(User Interface)开发中具有很大的优势。Struts2框架使得Web应用的MVC(Model View Controller)之间松散耦合。
对于一个复杂的Web应用,后端数据的持久化是影响其性能的最主要因素。为了减少数据库变化对“业务层”的影响,使用ORM(Object Relation Mapping,对象关系映射)开源框架Hibernate,它封装了数据访问细节,为业务逻辑层提供了面向对象的API,所以Java程序员可以使用面向对象的编程思维来操纵数据库。Hibernate允许将数据库中的信息存放入对象,这样可以在连接断开的情况下把这些数据显示到UI层,而那些对象也可以返回给持久层,从而在数据库里更新。Hibernate是当前Java社区中事实上的对象关系映射工业标准,它采用POJO(Plain Old Java Object,简单的传统Java对象)编程模型,从而允许持久对象拥有复杂的结构,如混合类型、集合、属性以及用户自定义的类型,屏蔽了底层关系数据库复杂的细节,降低了编写应用程序的复杂度。
Spring能有效地组织J2EE(Java2Enterprise Edition)应用各层的对象。不论是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的管理下有机地协调和运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对象也无须关心持久层的DAO对象的具体实现,各层对象的调用完全面向接口。这一切都归功于Spring的核心机制——依赖注入,它是指程序在运行过程中,如果调用者需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入将Bean与Bean以配置文件的方式组织在一起。在进行模块设计时,高层的抽象模块通常是与业务逻辑相关联的,它应该具有可重用性,而不依赖于低层的实现模块。Spring从分考虑到了与Hibernate的协同工作,通过内置的Hibernate支持类(HibernateDao-Support),可以在保持Hibernate强大功能的同时,以简化的方式使用Hibernate操作数据库。作为一个全方位的应用程序框架,Spring通过AOP(Aspect Oriented Programming,面向切面编程)针对业务处理过程中的切面进行提取,所面对的是处理过程中的某个步骤或阶段,以获得各部分之间低耦合性的隔离效果。
围绕“分散资源集中使用,集中资源分散服务”的云制造思想,为使分布式的资源能够充分利用和共享,必需建立一套完整的体系架构,以保证企业云制造服务平台能够从技术的先进性、管理的科学性、运行的合理机制、友好的服务等多方面提高企业的竞争力。中小企业云制造服务平台的功能结构如图1所示。
图1 中小企业云制造服务平台的功能结构
图2 基于SSH的系统分层结构
本文以关键字搜索模块的开发为实例,分析SSH在整个云制造服务平台中的应用。关键字搜索模块的作用是根据用户输入的关键字在平台内查找与之匹配的云制造服务资源信息。在MySQL中为本系统创建数据库cloud,然后在cloud中创建数据表release(见表1)。
表1 数据表release结构
在web.xml中主要增加Struts2和Spring框架的支持,配置文件的主要内容如代码1所示。
代码1
5.2.1 配置数据库连接
Spring对ORM的一个重要支持就是提供统一的数据源管理机制,即在Spring容器中定义数据源、指定映射文件和Hibernate属性等。在MyE-clipse开发环境中加载Spring后,在应用工程的WEB-INF文件夹下自动生成applicationContext.xml文件,即Spring的默认配置文件,在该文件中配置数据库连接的主要内容如代码2所示。
代码2
5.2.2 配置SessionFactory
Spring为创建SessionFactory实例提供了一个FactoryBean,通过指定该Bean的属性,就可以获得SessionFactory对象,它能以完全面向对象的方式操纵数据库。在applicationContext.xml文件中配置SessionFactory的主要内容如代码3所示。
代码3
5.2.3 在Spring框架中集成Struts2
组件Action是Struts框架的核心部分,它用于处理业务逻辑。Spring容器采用装配Bean的方法对所有action组件进行统一管理,以实现对Struts2框架的集成。针对搜索模块,在applicationContext.xml文件中配置Struts2的主要内容如代码4所示。
代码4
在DAO模式下,将所有的数据库原子操作都封装在DAO层内,所有对数据表的CRUD操作都由对应的DAO组件完成。为本系统搜索模块创建的DAO类InfoManage.java如程序1所示。
程序1 InfoManage.java
根据本系统对搜索模块功能的要求,我们可以设计对用户输入的关键字进行有效性验证的CheckAction类、执行查找的SeekAction类、实现数据分页的PageAction类、查找所有资源的AllResource类以及查找单一资源的getResource类。以上Action类的关键实现代码分别如程序2、程序3、程序4、程序5、程序6所示。
程序2 CheckAction.java
程序3 SeekAction.java
程序4 PageAction.java
程序5 AllResource.java
程序6 getResource.java
为了使模型组件Action和视图组件关联起来,就需要通过Struts2框架的配置文件struts.xml对Action组件进行配置。针对本系统的搜索模块的Action配置的主要内容如代码5所示。
代码5
通过对本系统搜索匹配模块功能基于SSH框架的分层设计与编码实现,我们对SSH框架有了更深刻的认识。Struts2较好地解决了web应用中视图、控制器和模型组件间的关联,但对于特别复杂的云制造服务Web平台,还显得不够。Hibernate可以帮助web应用实现更加高效、强大的数据持久化,确保系统的性能和稳定,Spring基于“依赖注入”,可以更好地管理整个web应用的各种资源,实现各组件之间的松散耦合。因此,Struts2、Spring和Hibernate集成,可以为企业搭建更加优秀的web平台,只有深入领会SSH框架设计思想的精髓,才能在实践中灵活运用。
[1]蒲子明,许勇,等.Struts2+Hibernate+Spring整合开发技术详解[M].北京:清华大学出版社,2010:502-503.
[2]郝玉龙,迟健男.轻松掌握Struts2[M].北京:清华大学出版社,2011:237-239.
[3]王伟平.Struts2完全学习手册[M].北京:清华大学出版社,2011:210-212.