时间:2023-05-30 08:54:22
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇spring框架,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
Abstract: This thesis introduced spring framework. Present tier uses Struts technique which is integrated into Spring through the configuration. Define the transaction management based on AOP technique in business tier in order to enhance the stability and flexibility of system. Define the base DAO class and configure in Spring framework in data tier to provide the standard exception types.
关键词: 软件架构;可维护性;事务管理
Key words: software architecture;maintainability;transaction management
中图分类号:TP392文献标识码:A文章编号:1006-4311(2010)16-0158-02
0引言
为了高效的完成业务功能需要系统具有良好的稳定性、可维护性和易于扩展的特点。以Spring为核心,以Struts为前端web表示层开发,以Hibernate为O/R映射的工具,建立了松散耦合软件架构,使系统的灵活性大大的提高。
1系统的架构设计
1.1 系统的架构分层MVC是一种经典的软件架构,其生成结构严谨的子系统化应用程序的有效性已得到证实[1]。本系统架构按照MVC的设计模式分为三层分别是表示层(Presentation)、商务层(Business)、数据层(Data)[2]。
表示层使用Struts应用框架作为实现框架,并将Spring的Web Application配置到Struts中。Struts最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Serve Pages (JSP) ,Servlet,标签库以及面相对象的技术水准[3]。
商务层和数据层使用Spring框架和Hibernate。处理了BO和DAO的依赖,处理了接口和实现类的依赖,事务处理,在DAO层对Hibernate API的包装,在DAO层的异常包装转换。Hibernate完成ORM功能。
基于Spring的表示层、商务层、数据层分层设计即使实现三层的松散耦合,又提供了集中配置的功能,使系统的各层功能明确,使系统的可维护性大大提高。
1.2 层间的调用的规约禁止表示层,商务逻辑层,数据访问层的跨层调用。数据信息的跨层传递可以使用DTO,如果PO信息量满足要求也可以把PO直接当作DTO使用,DTO类型不限可以使Java Bean,Map。DAO,BO必须声明接口,并且在编码中只允许使用接口类型,不允许出现实现类,增强系统可维护性,减少耦合性。
2数据访问层
2.1 设计的目的和方法主要目的是能够清晰地划分出应用层次而不管使用何种数据访问和事务管理技术;使应用对象之间的耦合松散。业务对象不再依赖于数据访问和事务策略;不再有硬编码的lookup;不再有难于替换的singletons;不再有自定义的服务注册。从而增强了系统可维护性。设计的方法是采用Spring和Hibernate相结合的方法。
基于O/R(Oriented/Relation)映射数据存取技术的Hibernate,在大型项目中被广泛地使用,它将应用系统逻辑和数据存储逻辑分开,而且它将所有数据存储逻辑都封装在持久层的类中,对应用系统开发者隐藏了数据存储的实现细节。应用系统开发者只要通过持久层提供的接口,以自己熟知的处理方法,向对象发送数据存储或数据装载信息,就可以完成对象持久化的工作。暂态对象和持久对象之间的区别也被隐藏起来,应用系统开发者使用同样的处理方式来对待暂态对象和持久对象。所以选择Hibernate作为底层数据持久化工具。
在Spring框架中可以集成了Hibernate,同时提供了的Hibernate的DAO的抽象类,将异常封装成一致的异常层次。Spring引进了DAO异常体系,主要目的是为了够清晰地划分出应用层次而不管使用何种数据访问和事务技术。
2.2 配置与定义在系统的数据访问层的设计中,为了提供统一的异常处理方式和统一的事务处理方式。在配置文件中定义Hibernate的Session Factory这样可以为所有的Spring中定义的Bean调用。根据IoC的原则,采用声明式的方式配置定义的Base DAO。Base DAO是Spring不可装载的基类,其主要的功能是负责其他的DAO提供Session Factory。这样可以为Hibernate Sessio Factroy提供统一的维护,增强系统的可维护性。用户自定义的DAO类要继承于Hibernate Dao Support类或其子类。并要定义用户自定义DAO的接口,在接口的定义中展现用户自定义类的方法,这样才能由Spring利用java反射机制生成其相应的DAO类的实体。这样所有的DAO子类就可以选择直接通过Hibernate Template来初始化,并将特定的异常转换为unchecked异常体系。
3业务层
业务层是整个系统的核心,其中包含着核心的商业逻辑,需要完善的日志操作日志,全面的事务管理。在本节将介绍在spring框架下配置BO和进行事务管理的配置。
3.1 Spring事务管理的概念Spring提供了一致的事物管理抽象。这个抽象是Spring最重要的抽象之一,它有如下的优点:
①为不同的事务API提供一致的编程模型,如JDBC、Hibernate、iBatis数据库层和JDO。提供比大多数事务API更简单的,易于使用的编程式事物管理API。②整合Spring数据访问抽象。③支持Spring声明式事物管理。
事物管理抽象为Plateform Transaction Manager,它的实现和定义同其他Spring容器中的对象一样都是由容器管理的。这个好处是即使使用JTA,也是有很有价值的抽象:事务代码可以比直接使用JTA更加容易测试。在Spring中,Transaction Exception是unchecked的。底层的事务失败几乎是致命的,很少有情况可以从他们中恢复,开发者依然可以扑获并处理Transaction Exception。Transaction Definition接口用来定义事务的,可以设定如下内容:
事务隔离程度:当前的事务和其他事物的隔离的程度。
事务传播程度:通常在一个事务中执行的所有代码都会在这个事务中运行。但是,如果一个事务上下文已经存在,有几个选项可以指定一个事务性方法执行行为。例如,简单的在现有的事务中运行,或者挂起现有的事务,创建一个新事务。
事务超时程度:事务在超时前能够运行多久。
只读状态:只读事务不需要修改任何数据。在只读的某些情况下是一种非常有用的优化。
Transaction Status接口为处理事物的代码提供一个简单的控制事务执行和查询状态的方法。通过get Transaction Status方法可以获得Transaction Status对象,他可能代表一个新的或已经存在的事务。如同J2EE事务上下文一样,Transaction Status也是和执行的线程相关联的,用来反映事务的状态。
3.2 基于AOP的事务管理的实现根据分析,决定使用Spring框架结合Hibernate实现事务管理的业务。Spirng和Hibernate本身不具备事务的管理的功能。Spring对Hibernate进行了封装,Hibernate 是JDBC 的轻量级封装。在事务管理过程中,Spring将事务委托给Hibernate,后者又将其委托给底层的JDBC或者JTA,以实现事务管理和调度功能。Hibernate的默认事务处理机制基于JDBC Transaction。JDBC的事务处理功能简单、易用。JTA的功能强大其管理的事务可以跨越connection,但其资源消耗较大。所以决定采用Hibernate的事物管理的默认实现。
通过以上的配置将Spring框架的事务管理功能映射到Hibernate的默认事务管理功能。并且自定义了异常类型Tmj Business Exception,当该异常被抛时,事务将进行回滚操作。
3.3 BO的基类的定义BO负责业务逻辑的对象,不及数据持久化的调用允许在BO抛出异常。BO内有一个或多个DAO Interface的成员变量,DAO初始化是通过Spring框架在xml文件配置的。A_BO调用B_BO必须把B_BO作为A_BO的属性,同时配置到Spring的配置文件中事务处理是控制在BO层,事务模型属于声明型事务。
采用AOP的编程的方法的,当在BO中的方法中抛出Business Exception时,事务自动回滚。在Trace Interceptor类中引用Tmj Logger类将用户的操作的行为记录如日记文件。在BO中利用面向方面的编程方法使事务管理和日志的记录一致的,增强了系统的稳定性,提高了系统的维护性。
4表示层的设计
表示层是同用户交互的界面,负责将数据表示。表示使用广泛使用的Struts应用框架架构。
Struts应用框架通过“Plug-in”元素同Spring框架结合起来。
Base Action的定义:Base Action对Action进行封装,减少了系统的冗余性。 Base Action主要提供如下的功能:get Bean()的将在Application Context中声明的bean引入到Web Application中,便于在表现层引用。
check Login()判断用户是否已经登录。
log AccessInfo()将用户的信息、访问时间和访问的页面ID等信息写入日志文件中。
5总结
在实现过程中,根据Spring提供的AOP的功能,配置完善的事务管理程序为系统提供了统一的透明的事务管理方法;使异常更容易的被分类处理,并记入日志,便于系统管理员分析错误;使系统的稳定性大大提高。
参考文献:
[1]Richard Jensen. Mapping Classes to Relational Tables. Java Pro, 2004, (4):11-12.
关键词:java;spring;持久化;移动开发;大数据
中图分类号:TP311.52
Spring是目前最流行的企业Java应用程序开发框架,全球有百万计的开发人员使用Spring来创建高性能,易于测试的,可重用的代码。Spring自2004年1.0版,至今年5月宣布4.0版的第一个里程碑版本完成,在核心框架不断进化发展,功能基本趋于完善的同时,为了迎接HTML5和移动客户端、大数据、NoSQL、社交网络等领域的挑战,陆续了一系列新的功能组件,本一简要介绍和使用探讨。
1 统一的持久化存储―― Spring Data
Spring Data组件的目的在于统一和简化对各类型持久化存储的访问,以及对新的数据访问技术提供支持,如非关系型数据库,map-reduce框架,以及基于云的数据服务等。Spring Data包含许多子项目,一一对应到具体的数据库,目前提供了对十余种数据访问技术的支持,主要有JPA、JDBC Extension、Redis、MongoDB、HBase、Neo4j、 Apache Hadoop、GemFire等。
Spring Data构建了统一的数据访问层作为数据持久化的顶层抽象,其基本的接口是Repository,派生出CrudRepository,PagingAndSortingRepository等接口,用于声明领域对象的CRUD (创建、查询、更新、删除)操作、排序和分页方法等通用功能。
数据访问层操作的传统方法,需要至少实施一个Repository类,它包含所需的CRUD方法来访问存储的实体子集。而Spring Data则做了进一步简化,让你摆脱大部分的实现代码,只需定义一个接口,声明你的具体业务方法,Spring Data会在运行时间对方法声明、注释进行检查、分析,推导出查询语句,正确生成实现代码。下面举例说明:
public interface CustomerRepository extends Repository {
Customer findByName(Name name);
}
上面的代码声明了findByName方法,Spring Data根据方法名自动生成select C from Customer c where c.name = ?1(JPA)查询语句。如果查询复杂,无法用方法名表示,则可用注释说明。
public interface CustomerRepository extends Repository {
@Query("select c from Customer c where c.name = ?1")
Customer findByName(Name name);
}
Spring Data的优势在于减少代码的编写,定义方法的同时定义查询语句,使文档变得更清晰,查询语句和Spring上下文同时编译组装,可以减少代码编写中的语法错误。但由于各类持久存储差异很大,无法提供通用API,只是提供了统一的编码模式。加之实时生成代码,运行速度受影响。
2 移动Web应用开发――Spring Mobile
Spring Mobile是支持移动Web开发的Spring MVC扩展,包括三项功能,一是服务器端的移动设备探测。通过分析一个HTTP请求中的User-Agent头和其他请求头来识别手机或平板的设备属性,如屏幕尺寸,制造商,型号等。获得当前设备信息的方法有若干种,最简单的方法是如果有ServletRequest或WebRequest引用,可以用DeviceUtils获得,代码如下:
Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
二是站点首选项管理,允许用户设置他要访问的是“普通”页面,还是“移动版”页面。即当前访问移动页面的用户可以切换到普通页面,以获得到某些移动页面没有的信息。三是站点切换,配置普通版网站和移动版网站使用不同的域名。即可以根据设备与指定的站点首选项将用户切换至最适合的站点。
Spring Mobile是在服务器端根据设备信息生成不同的页面返回客户端,与之相区别的,新兴起的响应式Web设计则是由客户端根据设备环境,自动调整页面布局和内容,长远看,响应式Web设计是将来的方向,因为不需要为每种设备做一个特定的网页版本,可以减少网页设计的工作量,但在目前响应式Web设计还未成熟,浏览器支持受限的情况下,Spring Mobile的方法则更可靠、实用。
3 Android本地开发框架――Spring for Android
Spring for Android是Android平台下的开发框架,与Spring 框架不同,它的目标是简化本地Android应用开发。其主要功能一是利用RestTemplate抽象层实现了REST客户端。RestTemplate与Spring其它模板类相似,RestTemplate的行为可以通过回调方法定义,HttpMessageConverter用来设定http内容的编组方式,它支持多种HTTP内容编组,利用Jackson或Gson实现了JSON编组、利用Simple XML Serializer实现了XML编组、利用Android ROME实现了RSS/Atom编组。下面举例说明:
String url = "http://localhost/search/web?v=1.0&q={query}";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
String result = restTemplate.getForObject(url, String.class, "SpringSource");
功能二是对Spring Social的支持。实现了OAuth客户端,能够支持Twitter、Facebook等主要社交站点的登陆。
Spring for Android可以简化Android 应用程序的开发,但是由于Android采用Intent方式实现应用生命周期管理,使得Spring Framework重要的依赖注入技术使用受限,影响了Spring在Andorid平台的进一步发展。
4 大数据处理――Spring XD
Spring XD是一个统一的,分布式,可扩展的系统,用于数据导入,实时分析,批量处理和数据导出,该项目的目标是简化大数据应用的开发。Spring XD建立在Spring Integration和Spring Batch基础之上,提供了一个轻量级的运行环境,可以容易的通过简单的DSL进行配置和组装。
主要功能一是支持各种输入源的高吞吐量分布式数据导入,如HDFS或Splunk等大数据存储系统。二是可以在导入数据时实时分析,例如收集度量和计算数值。三是可以通过批处理作业进行工作流管理,实现标准的企业系统(如RDBMS)与大数据系统(Hadoop)之间的结合。四是支持高吞吐量的数据导出,例如从HDFS、RDBMS或NoSQL数据库导出。
Spring XD用流(Stream)定义数据是如何收集,处理,存储或转发的。例如,某个流可以收集syslog数据,过滤再将其存储在HDFS中。可以用DSL定义流,DSL允许你使用UNIX管道和过滤器的语法建立简单的线性处理流程,定义复杂的流程则需要使用扩展语法。下面举例说明:
$ curl -d "time | log" http://localhost:8080/streams/test
上面的代码定义了一个名字为test的流,并将其发送给流服务器。流的内容为“time|log”,“|”符号表示连接数据源和数据接收器,流服务器会在预定目录中查找time和log的定义来设置流。在这个简单的例子中,定义time数据源每隔1秒发送当前时间,而log接收器则记录收到的time信息。删除流定义使用下面的命令:
$ curl -X DELETE http://localhost:8080/streams/ticktock
Spring XD使得Spring初步具有了大数据处理能力,填补了这方面的空白,但是功能还较弱,需要进一步增强。
虽然近年来,新兴的Web开发框架不断涌现,对Spring构成了威胁,但随着新的核心框架的,以及越来越多的新组件的开发,凭借优秀的核心功能和强大的扩展能力,Spring在企业级系统开发中的核心地位仍然牢固。
参考文献:
[1]罗时飞 精通Spring――深入Java EE开发核心技术 电子工业出版社 2008
[2]Craig Walls Ryan Breidenbach著 熊节译 Spring in Action(第二版)人民邮电出版社 2008
关键词:Struts;Spring;Hibernate;人力资源管理系统;依赖注入
中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)11-2637-03
Human Resource Management System Design and Implementation Based on Struts/Spring/Hibernate Integration Framework
HU Zhi-min
(Department of Information Engineering, Hunan Urban Construction College, Xiangtan 411100, China)
Abstract: Modern enterprise competition is the competition for talent, human resource management system can improve the efficiency of corporate talent management. Based on the Java EE platform, human resources management system has been designed, using Struts/Spring/Hibernate integration framework for the development of human resources management system, using the MVC pattern to the user interface and business logic completely separate, using dependency injection to improve the system components of the between independence. The use of Struts/Spring/Hibernate integration frameworks for information systems development, than the traditional multi-layer model has a higher flexibility and scalability.
Key words: struts; spring; hibernate; human resources management system; dependency injection
人力资源管理是知识经济时代企业管理的主要内容,“以人为本”突出了人在企业中的作用。随着市场竞争的日益激烈,企业竞争由外部竞争逐渐转变为全方位竞争,而人才的竞争更是企业竞争的焦点。
1998年前后,我国的很多大型企业都逐步认识到引才、用才、留才的重要性,于是,很多企业都先后设立了人力资源部。国内的一些高校也相继开设了人力资源管理专业。发展到现在,人力资源主要从事员工招聘选拔、绩效考核、薪酬福利管理、劳动关系协调等工作。而信息化人力资源的管理模式也由此脱颖而出。
同志指出:“人才问题是关系党和国家事业发展的关键问题。”;“国以人兴,政以才治,为政之道,要在得人”。新世纪、新阶段实施人才兴企战略,使人才越来越受到重视。[1]但是传统的人力资源管理方法已经不适应于信息时代的发展要求,在传统模式下,人力资源管理部门机构比较庞大,工作任务繁重,各种工作由于使用人工来操作极易出错。建立信息化的人力资源管理系统已经成为企业人力资源管理的首要任务。
根据企业人力资源管理需求,设计了基于Java EE的人力资源管理系统架构,采用Struts/Spring/Hibernate集成框架为基础进行了系统设计,采用MVC、依赖注入、过滤器等技术简化了系统开发,提高了系统的灵活性和可扩展性。
1 系统需求
为了提高企业信息化水平,促进企业管理的规范化、制度化、流程化,决定实施人力资源管理系统。希望通过这个系统的实施规范人事档案的管理,规范薪酬体系和薪酬发放的管理,规范人事的调动管理、培训管理和激励管理。并对招聘工作的职位、简历、面试、招聘题库、招聘考试、录用等环节加以规范。系统还需提供人事档案的导出和报表功能。
本系统将实现人力资源档案管理、薪酬管理、调动管理、培训管理、激励管理和招聘管理六大功能。其中人力资源档案管理是本系统的基础数据和核心内容。包含人力资源档案登记、人力资源档案登记复核、人力资源档案查询、人力资源档案变更和人力资源档案删除四个子模块。薪酬管理是系统中的一个重要部分,在系统管理模块设置薪酬标准项目后,进行薪酬发放登记。员工工作机构和职位发生变动的时候,通过调动管理执行登记员工调动档案,并登记其新的机构,职位和薪酬标准。通过培训管理进行教育培训档案的建立,修改和维护,培训信息等工作。激励管理主要信息包括获奖人员,奖惩时间、奖惩内容、奖金类别等信息,可以对每个员工奖惩信息进行增加、删除、编辑操作。招聘管理实现当某个岗位出现空缺的时候,或者随着公司业务发展,需要招聘新员工的时候,通过这个模块。后的职位可以进行修改。另外,需要提供职位查询的功能,查询已的职位,并对已的职位录入应聘者信息。
2 开发平台选择
2.1 Struts/Spring/Hibernate集成框架
Struts/Spring/Hibernate集成框架是Struts、Spring和Hibernate三种技术的有机融合,是目前应用最广泛的Java EE架构。在Struts/Spring/Hibernate集成框架中,Struts的作用是提供MVC模型,将界面、业务逻辑和数据分离,并提供一个高可扩展的架构。Spring作为依赖注入的容器,将项目中的构建进行粘结。而Hibernate提供了一个抽象的数据服务视图,将用户对数据库的访问进行高度抽象。[2]
Struts 是目前创建Web 应用最常用的表现层MVC 框架实现,是JakartaApache 的一个开源项目[3]。基于Model2 的Struts框架利用控制器和定制标签库将应用中的模型和视图分离,达到了层间松散耦合的效果,同时提高系统的灵活性、重用性和维护性。作为开源项目,Struts经受了大量实践的检验,功能越来越强大,体系也日臻完善,并且对其他技术和框架显示出良好的融合性。[4]
Spring由Rod Johnson创建,它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
2.2数据库服务器(SQL Server 2005)
SQL Server 2005是微软具有里程碑意义的企业级数据库产品,它在企业级支持、商业智能应用、管理开发效率等方面有了显著的增强,是集数据管理与商业智能分析于一体的、极具前瞻性的下一代数据管理与分析平台。
SQL Server 2005基于SQL Server 2000的强大功能之上,提供了一个完整的数据管理和分析解决方案,它将会给不同规模的组织带来不同的帮助。采用SQL Server 2005作为人力资源管理系统的数据库,综合考虑了系统规模、吞吐量、支出成本以及技术适应性等方面。
2.3应用服务器(Tomcat)
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。在人力资源管理系统中,采用Tomcat 5.5做为应用服务器。
3 系统设计
3.1 Action设计
Struts采用struts-config.xml来进行Action的配置,主页的Action配置如图1所示。
对应的xml编码如下:
3.2依赖注入设计
依赖注入由Spring进行管理,所有需要被注入的Bean,都在applicationContext.xml文件中进行配置,其中datasource Bean的配置如下:
net.sourceforge.jtds.jdbc.Driver
jdbc:jtds:sqlserver://localhost:1433/HR_DB
sa
123456
3
3
2
50
600
900
100
10
3.3 过滤器的应用
在系统开发过程中,需要解决Struts的中文支持问题,开始使用在Action中使用程序进行编码转换,但是随着Action数量的增多,这种方法不仅容易出错,而且浪费人力。为了提高开发速度,采用了过滤器的技术对中文编码进行支持,过滤器类由Spring直接提供,也可以由用户自己编写。过滤器在Web.xml文件中进行配置,配置如下:
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
GBK
forceEncoding
true
CharacterEncodingFilter
*.jsp
CharacterEncodingFilter
*.do
4 总结
在企业信息化建设的过程中,可以采用各种技术来构建系统,每种技术都有自己的适应范围。企业人力资源管理系统必须要适应企业的管理要求,而采用Struts/Spring/Hibernate集成框架可以提供一个高可配置和可扩展的系统,系统可以经过部分修改直接适应其他企业的需求,达到了软件重用的目的。
参考文献:
[1] 蔡琳.以科学发展观指导企业人力资源管理[J].经营管理者,2009(22):322.
[2] 杨海斌.基于SSH框架的高校网站群内容管理系统设计[J].软件导刊,2009,8(9):118-119.
关键词:EJB;spring
中图分类号:G718 文献标识码:B 文章编号:1672-1578(2016)01-0379-01
EJB (Enterprise JavaBean)是JavaEE重要的组成部分,其定义和规定了一个用于开发基于组件的企业级多重应用的标准。EJB需要严格地实现和继承各种不同类型的接口,相类似的以及重复的代码功能大量存在。同时EJB的配置也是非常复杂和繁琐的,同样通过JNDI进行目标对象查找的也是相当耗时。对于开发者学习EJB的需要高昂代价和成本,项目的具有极低的开发效率,应用程序运行对资源消耗极高,这些缺点都造成了EJB的在使用中非常困难。
随着JavaEE技术在不同领域大规模广泛的应用,同时EJB技术也受到很多的质疑,EJB的使用给JavaEE应用开发带来了很大的开销成本和开发上的复杂性。在EJB3.0之前,就是一个简单的EJB组件都需要编程远程/本地接口、Bean实现类以及Home接口,这使得其应用受限。正是由于EJB应用非常复杂,因此EJB也被称为重量级组件。
为了克服重量级组件EBJ的缺陷,许多轻量级容器因此产生。轻量级容器,是因为它们能将简单的、普通的JavaBean作为应用组件,并通过IoC(Inversion of Control,控制反转)来解耦组件之间的依赖关系。随着轻量级容器的大量的被应用,开发者逐渐开始采用轻量级进行应用程序的开发。Spring框架正是轻量级框架的代表,其着眼于JavaEE应用开发的绝大多数方面,通过其分层架构,并针对它们提供了集成的框架和一揽子解决方案。Spring在数据库管理、事务管理、持久化管理、线程管理、远程调用等方面用轻量级方案替代EJB。Spring独立于各种应用服务器,它是一个开源的组件,我们可以把它视作一个容器,它可以在无应用服务器支持的情况下提供应用服务功能,如声明式的事务、持久化等。
Spring框架通过IoC容器解决了组件相互的依赖关系,Spring的核心是轻量级IoC容器和AOP(Aspect Oriented Programming,面向切面编程),可以通过简单的Java对象提供企业级的服务;通过AOP的声明式的服务,为允许应用的业务逻辑与系统级服务进行内聚性的开发。这些简单的服务,可以实现系统开发的灵活性、可扩展性和无侵入性。
Spring在当前是一个著名的开源框架,它是在实现简单的企业级系统开发应运而生的。Spring框架包括很多应用模块,这些模块在不同的层次进行扩展,下层为上层提供服务。分层架构是框架的主要优点之一,分层结构可以允许开发者选择不同的层进行使用不同的组件,同时为应用系统开发提供集成的服务。Spring提供了JavaEE应用的各层的完美解决方案,而不是只单纯的服务于某一层。Spring为企业级应用开发提供了"一站式"的解决方案,并贯穿常见的表现层、业务层和持久层[16]的支持。Spring框架包含常用组件的体系结构,Spring Framework架构按功能被划分为多个封装的模块。Spring模块的之间的装配十分灵活,在不同的应用场合中,可以通过框架基于不同的子集模块进行构建。
Spring框架包含相互独立存在的七个基本的模块:
SpringCore:Spring框架的核心模块。它提供基本的IoC容器的实现,即依赖注入。
SpringDAO:提供JDBC的抽象层,能提供编程方式和声明方式控制事务,使得开发者不用去编写非业务功能的JDBC代码。JDBC DAO抽象层提供了有意义的异常层次结构,Spring DAO 中的面向 JDBC 异常继承了通用的 DAO 异常层次结构,使得在使用过程中非常方便。
SpringContext:构建在Core模块之上,并对Core模块的功能进行了扩张。同时提供了高级Spring IoC容器的实现,提供了Bean的访问方式,并且增加了用于系统资源定义、绑定、资源装载、透明的装载上下文方式和事件移值等重要功能。
SpringAOP:它建立了面向方面编程框架,实现了AOP联盟定义的AOP编程实现。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务[17]。
SpringORM:为当前流行的对象/关系映射框架(例如Hibernate、MyBatis以及JPA)提供集成。
SpringWeb:提供面向Web应用集成的功能,同时将Spring作为这些Web框架(例如Struts、JSF等)的后端实现。
Spring Web MVC:该模块提供MVC的实现机制,本框架是一个包含全部功能的可以构建 Web 应用程序的 MVC 优秀实现。通过策略接口使得MVC 框架变成了可以高度可配置的,本框架实现了很多视图技术,常用的包括 JSP、iText 、Tiles、POI和Velocity。
以上各模块以分层的方式进行组织,下面的模块是服务上面的,上面的模块依赖于下面的模块,Spring Core模块位于整个体系结构的最底层,它是Spring Framework工作运作的基础。
参考文献:
[1] Flanagan D. JavaScript: the definitive guide[M]. " O'Reilly Media, Inc.", 2002.
[2] 吴晓明,潘永红,谢惠芳. 基于jQuery的中南大学门户网站Web UI的实现[J]. 武汉大学学报(理学版),2012,S1:361-364.
关键词:Spring;AOP;数据库认证;日志管理
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-1982-02
Design and Implementation of Log about Database User Authentication Base on Spring and AOP
CHEN Huan-ying, MA Jing-jie
(Henan Quantity Engineering Occupation College, Pingdingshan 467001, China)
Abstract: There is a lot of businesses like database authentication, parameter's validation and abnormal process in the project development. The robustness of project is affected by their robustness. Using the old development, we describe repeatedservice code. The Spring and AOP can resolve these problems. The aspect is separated from topical business in progrom, using the aspect can efficiently solve the repetitive work.
Key words: Spring;AOP;database authentication;log administration
1 概述
1.1 什么是Spring
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
Spring框架是一个分层架构,由 7 个定义良好的模块组成[1]。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图1所示。
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
1) 核心容器:核心容器提供 Spring 框架的基本功能。
2) Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。
3) Spring AOP:Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。
4) Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。
5) Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具。
6) Spring Web 模块:Web上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。
7) Spring MVC 框架:MVC框架是一个全功能的构建 Web 应用程序的 MVC 实现。
1.2什么是AOP[2]
AOP――Aspect Oriented Programming, 简称AOP,面向方面/切面的编程。AOP是一种编程模式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入到面向对象的软件系统中,从而实现了横切关注点的模块化。日志、事务、安全验证等这些通用的、散步在系统各处的需要在实现业务时关注的事情就称为“方面”,也称为“关注点”。
2 AOP的实现原理
项目开发中一般的业务处理有记录日志,合法性检验等。
1) 将业务系统中这些日志、事务、安全验证等操作分离为单个的方面,集中处理,如图2所示。
实现特定功能的方面代码在AOP概念中又称为“通知(Adivice)”,通知分为前置通知、后置通知、环绕通知和异常通知。前置通知是在业务执行前自动执行的通知;后置通知是在业务执行后自动执行的通知;环绕通知能力最强,它可以在业务调用前执行通知代码,可以决定是否还调用目标方法;异常通知是业务方法抛出异常时自动执行的方面代码。
2) 讲方面分离出后,就专一的开发业务功能代码。
3) 通过Spring的方式将方面(即通知)织入到业务对象中。
AOP实现原理如图3所示。
3 以项目开发中的数据库登录验证日志管理为例讲解Spring与AOP的实现及运用
1) 数据库登录用户业务关键代码如示例1所示:
示例1:
public class UserBiz {
public User login(User user){
UserDao userDao=new UserDao();
User userg=userDao.login(user);
return userg;
}}
2) 使用前置通知实现方面代码如示例2所示:
示例2:
public class LogAdvice implements MethodBeforeAdvice {
private static DateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
public void before(Method m, Object[] args, Object target)
throws Throwable {
//Method m:被通知目标方法对象
//Object[] args:传入被调方法的参数
//Object target:被调方法所属的对象实例
System.out.println("\n[系统日志][" + sdf.format(new Date()) + "]"
+ m.getName()
+ "("+ Arrays.toString(args) + ")"
+" the method belong to "+target.getClass().getName());
}}
3) 使用Spring将方面代码织入业务对象中,关键代码如示例3所示:
示例3:
class="org.Springframework.aop.framework.ProxyFactoryBean">
aop.BookBiz
logAdvice
afterAdvice
aroundAdvice
ExcepAdvice
4 总结
无论是业务方法中,还是调用业务方法的代码中,都看不到日志代码的蛛丝马迹,可运行的时候,确实输出了日志代码(用户登录过)的信息。
通过使用Spring AOP,我们将日志代码分离出去,基本上不需要改动原来的代码,通过简单的配置,业务系统就具备了日志的能力。这样很好的提高了代码的重用性,这也就是Spring AOP备受大家欢迎的原因所在。
参考文献:
Abstract: The opensource framework based on J2EE technology is widely applied and increases development efficiency of the J2EE platform application software. The integration of Spring+Struts+Hibernate J2EE lightweightplatform and technology is discussed in this paper. The Algorithm, function, design and implementation of the Injection Mould Quotation system based on SSH is discussed. The system is convenient, rapid, accurate,scientific, good expansibility,maintainability and robustness.
关键词:Spring;Struts;Hibernate;模具;报价系统
Key words: Spring;Struts;Hibernate;molds;quotation system
中图分类号:TP31 文献标识码:A文章编号:1006-4311(2010)34-0163-01
0引言
Spring+Struts+Hibernate(SSH)是多层Web应用开发架构,这是一个开源的轻量级J2EE框架。大多数的web应用都被分成至少几个各负其责的层次,一般包括表现层、业务层、持久层,每层在应用程序中都有明确的责任。表示层使用Struts,业务逻辑层使用Spring,数据持久层则采用Hibernate,即将Struts应用中的业务逻辑交给Spring管理,相关类使用Spring的Beans配置完成,Hibernate负责数据的持久化。整个架构利用Spring的核心思想一IOC和AOP整合struts和Hibernate,达到层次和组件之间的松散耦合,提高系统的可重用性和可维护性,综合利用这三种框架还可进一步提高开发的效率,并且系统框架在安全性、稳定性和健壮性上都有良好的改进。本注塑模具报价系统以较普遍认可工时法算法为基础,结合材料重量法,并基于Spring+Struts+Hibernate平台设计开发,该系统既能对模具订单做出快速反应,易于操作,又有较高的准确性达到报价方便精准,系统可维护性、可扩展性、安全性好。
1整合的架构和技术平台
1.1 Spring+Struts+Hibernate架构核心技术Spring是一个开源J2EE框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件。核心容器提供Spring框架的基本功能,核心容器的主要组件是BeanFactory,它是工厂模式的实现,BeanFactory使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring上下文是一个配置文件,向Spring框架提供上下文信息,Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能,Spring AOP通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中,Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。
Struts是为开发基于模型(Model)―视图(View)―控制器(Controller)(MVC)模式的应用架构的开源框架,MVC是一种软件设计模式,现在已经被广泛的使用。MVC模式的主要目的是分离业务逻辑层和表示逻辑层。表示层是一个用户可以看到的界面,它只是给出完成具体业务功能的一种有效手段,与具体的企业业务无关。业务规则的修改不需任何表示层的改动,表示层的改动也不会影响业务规则。控制器是负责协调模型和视图层之间的数据流,响应用户的请求和行为管理模型数据。
Hibernate是采用ORM(对象关系映射)映射机制的持久层开源工具,它是JAVA应用和关系数据库之前的桥梁,负责POJO类(标准的Java Bean)对象和关系数据之间的映射。Hibernate对JDBC进行了非常轻量级的对象封装,向上层应用提供了面向对象的数据库访问API,实现了与数据库无关的持久层,使得程序员可以随心所欲的使用对象编程思维来操纵数据库。
1.2 Spring,Struts,Hibernate的有机结合三者有机结合实现合理系统分层,Struts主要实现控制层,Hibernate实现持久层,JSP实现视图层,事务模型层是核心Java类,由Spring实现事务管理和异常管理。三者结合只需要配置好相应的XML文件。
Spring配置applicationContext.xml,里面配置Hibernate数据源和Hibernate的持久映射类、依赖注入Hibernate模板、JDBC模板和事务管理,把DAO层和事务层的Java类通过Spring的依赖注射机制和AOP挂接配置起来,由spring管理事务层及更下层的DAO对象的关系,使事务管理和异常处理从Hibernate的持久层提升到了业务层,事务管理和异常处更加简便和灵活。Spring实现灵活Bean管理,BeanFactory使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
2系统基本算法功能
本注塑模报价系统采用基点工时法进行计算,结合材料重量法计算。所谓工时法就是按照模具制造工时计算模具价格的一种方法,其原理是:将总销售成本连同总利税平均分摊到企业的每一个实际工时中,首先核算出单位工时的价值,然后再根据模具的制造总工时计算模具的销售价格。工时法主要依据模具制造过程中所发生的总工时费用之和,再加上原材料费、设计费、工具费、试模费等得出。该方法考虑了影响制造总工时的主要因素,如制件的外表尺寸、复杂程度、产品精度、表面特征、模具结构等。在计算原材料费时考虑了标准模与自制模情况,标准模由用户自己填模架购置费、标准件购置费、耗用钢材费相加得到,自制模根据材料单价和重量乘积之和得到。最后把工时费和材料费考虑设计费、试模费、运输费、工具费、税率费根据总公式折算得到最终价格。
系统主要功能如下:①系统管理模块。②注塑模具报价模块。③报价参数设置模块。④报价统计查询模块。⑤权限管理模块。⑥数据库管理模块。⑦用户管理模块。
主要功能模块是注塑模具报价模块和报价参数设置模块,报价参数可灵活设置,使模具报价更科学有效。
3结束语
本系统基于Spring+Struts+Hibernate框架设计与实现,在较准确普遍认可工时法基础上根据企业实际情况结合材料重量法设计较科学精准算法,系统具有先进性、规范化、灵活性、方便性、可维护性、安全性好、可移植性好等特点。使报价人员摆脱了经验报价模糊不准和手工报价麻烦情况,使模具报价更方便快速准确,对提高模具企业的信息化水平经济经济效益具有重要的意义。
参考文献:
关键词:Web应用;Struts框架;Spring框架;Hibernate框架;实验教学
中图分类号:G642文献标识码:A文章编号:1009-3044(2010)07-1783-02
Based on SSH Frame Experiment Teaching Platform Research
SONG Qing-yuan, JIANG Ning
(School of Software, Nanchang University, Nanchang 330047, China)
Abstract: With the rapid development of Internet, the application program of server based on Browser/Server is widely used. There are many technologies and frameworks in developing web application. This article through to Struts, Spring and the Hibernate three kind of frame technology's analysis, designs based on the SSH lightweight experiment teaching platform application frame. This article carries on the elaboration to performance history's several key technologies, and to use this integrated frame to carry on the Web application system's design and the development has provided the reference.
Key words: Web application; Struts; Spring; Hibernate; experiment teaching
随着计算机网络技术的发展,使得教学方式由传统的校内教学向网上教学延伸。实验教学平台给网上教学活动提供了一个基本的运行环境,人们可以在网络环境下实现信息服务与资源共享。开发实验教学平台,将大大促进各个学科教学活动的进行,同时也适应了社会发展的需要。
SSH框架是将Struts、Spring、Hibernate框架良好的整合起来,使用Struts作为表示层框架,Spring作为业务逻辑层框架,Hibernate作为持久化层框架。
实验教学平台基于SSH轻量级框架搭建,使用Tomcat作为Web应用服务器。平台为学生提供充足的教学课件与实验资源,使学生能通过实验来加深对理论的理解,提供了师生互动功能,增强了教学效果。
1 实验教学平台的概要设计
1.1 系统概述
平台为学生提供充足的教学课件与实验资源,使学生能通过实验来加深对理论的理解;师生可以良好的互动,学生可以向老师提出自己问题并及时获得老师的答复。系统提供良好的安全机制保证本平台稳定的运行。如图1所示。
1.2 功能模块
1.2.1 登录
为了保证实验教学的规范和实验平台的安全性,学生和教师在使用该平台时,必须先登录。
1.2.2 实验预约
学生可以在实验室规定的开放时间内,自主选择做实验的时间。学生预约后,实验管理员在公告栏及时公布实验预约情况,必要时进行合理的调整。
1.2.3 教学内容
任课教师提前实验项目和实验指导书,以便学生提前了解实验目的,并让学生预习实验内容。
1.2.4 作业管理
学生从客户端书写实验报告或制作电子作业,并上传到服务器。教师下载实验报告或电子作业,批改并公布实验成绩。学生并可在线查询成绩。
1.2.5 公告
实验管理员可在公告区内各项通知,如实验规章制度、临时公告、各实验日程安排表、实验预约统计表等。
1.2.6 在线答疑
学生可就某一实验项目提出问题,老师进行非实时答疑。学生拥有对自己所提问题的管理权,包括修改、删除等。教师拥有对所授课程全部问题及答疑内容的管理权,包括修改、删除等。
1.2.7 教师和学生管理
实验管理员对任课教师和学生具有管理权,在每学期开学,管理员对任课教师和学生资料进行初始化。
2 SSH框架的总体设计
SSH轻量级框架是目前企业级应用开发主流的设计框架。如图2所示。
SSH轻量级框架成功的采用了Struts、Spring、Hibemate的优势,规避了三个框架的缺点,使得各个框架可以充分发挥自己的优势:
1) Struts是一个Web应用框架,主要用于表示层,其逻辑处理功能不强大,所以SSH框架将逻辑处理功能交给Spring框架来做,使得Struts框架可以专注于Web表示层开发。
2) Spring虽然也提供相应的模板和辅助类来对JDBC进行封装,但是这种封装并不很完善和灵活,在实际需求中不能满足各种用户要求,所以使用Hibemate来做持久层框架,使Spring可以专注于业务逻辑的开发。
3) Hibemate是一个面向Java环境的ORM数据库映射工具,这种映射技术可以把对象模型表示的对象映射到基于SQL的关系模型结构中,因此可以整合到J2EE系统中作为持久层框架。
SSH架构使用表示层、业务逻辑层、持久层实现,层与层之间边界清晰、功能独立,使得开发人员可以专注于自己熟悉的领域进行开发,能充分发挥团队化协作能力。使用Hibemate框架连接数据库,开发人员不用考虑不同数据库之间的差异,提高了数据处理的能力和效率。并且Spring、Hibernate与Struts并不依赖于具体的服务器。基于SSH开发出来的系统可以部署在多种服务器上。因此可以看出SSH是一个良好的设计框架,开发人员可以基于SSH框架进行J2EE企业级应用开发,提高开发效率,降低系统维护成本和开发人员的学习成本,便于团队之间合作开展。
3 基于SSH框架实验教学平台的详细设计
3.1 表示层设计
使用Struts作为表示层的实现框架,它继承了MVC设计模式,结合Struts标签库,可以很好地实现收集用户数据、显示页面。同时用户的任何请求都先通过Acegi的过滤器认证后,可以进一步访问系统的资源。
3.2 业务层设计
使用Spring框架来实现业务逻辑层,Ioc容器负责处理应用程序的业务逻辑、事务管理、DAO组件。业务逻辑层还需要提供与其它层交互的接口,管理业务对象之间的依赖性。
3.3 持久层设计
使用Hibemate来实现持久层,对JDBC进行封装,使开发人员可以用面向对象的思想来访问各种厂商的数据库
4 结束语
集成后的框架具备了三种框架的技术优势,将Struts的MVC机制,Spring的反转控制机制以及Hibernate的ORMapping映射机制融合在一起,以SSH架构在系统开发简洁性、开发效率、开发成本以及维护费用等方面有着很大的优势。
参考文献:
[1] 戎伟,张双.精通Struts[M].北京:人民邮电出版社,2006.
[2] 朱少敏,刘建明.基于轻量级JZEE平台的政府采购系统的设计与实现[J].计算机工程与设计,2007,28(24).
[3] 蒋纬,马光思.Spring与其他框架整合及流程分析[J].计算机工程,2007,33(14).
[4] 杨涛,周志波,凌力.基于struts和Hibernate的JZEE快速开发框架的设计与实现[J].计算机工程,2006,32(10).
[5] 宋秀琴,侯殿昆,方中纯.基于StrutS和Hibemate的Web应用的构建[J].网络与通信,2005,21(11).
[6] 丁振国,任新洁.基于Struts的Web应用开发研究[J].微机发展,2004,14(1).
[7] Dong J, Yang S. A Web Service for Visualizing Design patterns on Demand,Information Technology Coding and Computing,2005(4).
关键词:JAVAEE,Struts2,Hibernate,框架,Web,BBS
1. 引言
MVC开发模式和基于MVC模式的Struts 2框架的应用,研究Struts2如何最大限度的减少与Servlet API的耦合,从而使得单元测试工作变得更加容易。数据库持久层技术的研究,对典型持久层框架的研究,重点研究如何将底层数据库对象化。论文参考。
2. 技术简介
2.1 Html语言
HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。本系统将使用HTML来做web页面的显示。
2.2 JavaScript
JavaScript 使网页增加互动性。论文参考。JavaScript 使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由CGI 验证。本系统主要利用JavaScript做表单的验证。
2.3 Struts2
Struts 2 与Struts 1相比,有很多革命性的改进,但它并不是新的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
2.4 Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。论文参考。
2.5 Spring
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
3. 概要设计
3.1 系统功能介绍和模块介绍
系统包括主要的功能:新用户的注册,会员登录,用户自己修改信息,管理员删除用户,游客浏览留言,会员新增留言,会员留言回复,管理员删除留言,管理员新增和删除板块等功能。
系统管理员通过帐户密码验证后登录论坛管理系统,进行相应的后台管理如用户管理,讨论区管理和文章管理。用户通过帐户密码验证登录论坛服务系统后,能够在论坛内发表文章,回复文章,查询文章,浏览文章等。而讨论区管理员相对一般用户则应该能够进行相应的讨论区管理,比如删除文章,封锁用户ID等等。所以系统要实现下面四个模块的功能:用户注册登录功能, 会员发帖回复功能, 版主管理帖子功能,管理员管理论坛。
3.2 各模块详细功能
3.2.1 系统整体流程图如图1所示。
图1系统整体流程图
3.2.2 用户流程图流程图如图2所示。
图2 用户流程图
4. 详细设计
(1) 数据库持久层架构
①设计持久化对象:(PO)
Admin:管理论坛,添加模块,删除模块,授权用户,删除用户
User: 发帖,回帖,查看帖子,版主可以删除帖子和用户
Topic:论坛帖子
Reply:用户回帖
Board: 子版块的信息
ParentBoard :父版块的信息
Collect:用户收藏的帖子
②根据持久化对象之间的关系建立对象模型;
③根据持久化类之间的关系建立Hibernate对应的映射关系;
④根据Hibernate映射关系生成数据库
(2) 实现Dao层
①配置数据源,使用dbcp数据源,使用MySQL数据库,在Spring容器中进行配置
<bean id='dataSource'
class='org.apache.commons.dbcp.BasicDataSource'>
<propertyname='driverClassName'
value='com.mysql.jdbc.Driver'>
</property>
<propertyname='url' value='jdbc:mysql://localhost:3306/bbs'></property>
<propertyname='username' value='root'></property>
<propertyname='password' value='123'></property>
</bean>
② 配置SessionFactory对象,将Hibernate的映射文件注入
③配置Dao组件,将Dao层注入Spring容器管理
(3) 实现控制层和web层
Struts2 作为MVC框架连接模型层和web视图层,将Struts2的ACTION注入Spring容器管理
Web层由jsp技术实现,web.xml文件配置见具体代码。
结束语
本文利用现有的Web框架技术实现Struts框架、Spring框架和hibernate框架集成,提出基于JavaEE多层框架解决方案。并通过实例BBS系统对数据库持久层技术进行研究。实现了关系型数据库的对象化和面向对象软件的设计开发。
参考文献
[1] 李刚. 轻量级JavaEE企业应用实战(第二版) [M].北京:电子工业出版社,2009
[2] 李刚. Struts 2权威指南 [M].北京:电子工业出版社,2008.
[3] 郭晓华. JSP应用开发详解(第三版) [M].北京:电子工业出版社,2007.
[4] 付周京. 精通Hibernate3.0-Java数据库持久层开发实践 [M]北京:人民邮电出版社,2007.
[5] Ryan Asleson,Nathaniel T.Schutta.金灵译. Ajax基础教程 [M]北京:人民邮电出版社2006.
[6] 李刚. 轻量级JavaEE企业应用实战(第一版) [M].北京:电子工业出版社,2008
[7] 张钰. 精通Spring 2.x Java Web开发 [M].北京:电子工业出版社,2008
[8] 刘斌. NetBeans权威指南 [M].北京:电子工业出版社,2008
[关键词] 科技申报 MVCStruts Spring
一、JSP技术
JSP(Java Server Pages)技术是由Sun公司的用于开发动态Web应用的一项技术。它以其简单易学、跨平台的特性,在众多动态Web应用程序设计语言中异军突起,在短短几年中已经形成了一套完整的规范,并广泛地应用于电子商务等各个领域中。
JSP规范是Web服务器、应用服务器、交易系统以及开发工具供应商间广泛合作的结果。Sun开发出这个规范来整合和平衡已经存在的对Java编程环境(例如,Java Servlet和JavaBeans)进行支持的技术和工具。其结果是产生了一种新的、开发基于Web应用程序的方法,给予使用基于组件应用逻辑的页面设计者以强大的功能
二、 Struts2技术
Struts2并不是一个陌生的web框架,它是以Webwork的设计思想为核心,吸收struts1的优点,可以说Struts2是struts1和Webwork结合的产物。它的工作原理如下:
一个请求在Struts2框架中的处理可分为如下7个步骤:
(1)客户端发出一个指向servlet容器的请求(tomcat);
(2)这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器。
(3)过滤器FilterDispatcher是struts2框架的心脏,在处理用户请求时,它和请求一起相
三、Hibernate技术:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的Http Session。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将Http Sesion对象称为用户session。
Session Factory接口:Session Factory接口负责初始化Hibernate。它充当数据存储源的,并负责创建Session对象。这里用到了工厂模式。需要注意的是Session Factory并不是轻量级的,因为一般情况下,一个项目通常只需要一个Session Factory就够,当需要操作多个数据库时,可以为每个数据库指定一个Session Factory。
Configuration接口:Configuration接口负责配置并启动Hibernate,创建Session Factory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建Session Factory对象。
Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
四、 Spring技术
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。它能解决企业应用开发的复杂性,使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。Spring有如下特点:
a.轻量――从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
b.控制反转――Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反――不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
c.面向切面――Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的――完成业务逻辑――仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
d.容器――Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建――基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例――以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
e.框架――Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码它们也为Spring中的各种模块提供了基础支持。
五、MVC技术
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
1.视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由JSP元素组成的界面,在新式的Web应用程序中,JSP依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XJSP,XML/XSL,WML等一些标识语言和Web services.
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
2.模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
3.控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送JSP表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
参考文献:
关键词:J2EE;框架技术;公众信息服务;电子政务
中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)21-5892-02
在网络信息技术高速发展的大环境下,各类信息以海量的形式充斥在我们的生活、工作及学习周围,但由于这些信息的重复性,数据的准确度不高,社会公众很难准确、快捷的获取个人想要得到的本地数据和信息,对人们的网络生活造成极大的负面影响。因而由政府牵头整合政府、市场、企业等多方面资源,共同建设一个统一、开放、跨平台、系统结构层次清晰的公共信息服务平台,并以灵活多样的形式为本地公众提供准确、权威的信息服务已经成为当地互联网应用的的一种趋势和重要需求。
基于J2EE技术标准体系的框架技术的特点使其能够快速、有效地支持各类大中型Web应用建设,同时在大中型Web应用中,必然存在多个层次,需要使用几个不同的框架来支持。那么如何整合各层框架,让每个层在一种松耦合的方式下互相协作,这是在这一类型项目的建设中必须解决的一个实际问题。本文将介绍一个以Spring框架为核心,结合Struts及Hibernate框架的一种高效构建大中型Web应用的框架整合理论,并在此理论的基础上阐述了城市公众信息服务平台应用的设计思路和关键实现技术。
1 J2EE框架技术特点
目前随着软件开发技术的发展,可重用、可移植、易扩展,而且是经过良好测试具有较高稳定性及可用性的软件产品,越来越受到技术人员的青睐。因为这意味着技术人又可以有充裕的时间用来分析和构建业务逻辑,而不必花费太多的经历在繁杂的代码工程上面。于是人们将相同类型问题的解决途径进行抽象,抽取成一个具有标准意义的应用框架,而J2EE正是这样的一个框架。
1.1 Spring框架
Spirng框架是一个以控制反转(IOC)模式和面向方面编程(AOP)思想为核心的轻量级框架,主要用于对中间层业务组件的管理。常用的中间件解决方案EJB是一种重量级的容器,主要有以下缺点:必须实现EJB的接口,对业务逻辑组件侵入性很大;应用依赖于EJB容器,不能单独运行,另外启动时间长,测试复杂、配置很困难,而Spring则不然。
首先,Spring是一种轻量级的框架,是基于组件化、模块化的结构。它有分层的体系结构,因而针对Spirng开发的组件不需要任何外部库,也可以选择某个模块独立使用,从而避免了EJB复杂、启动时间长的缺点。
其次,Spring也是一个IOC容器。IOC模式是Spring的核心,它的本质是由容器控制业务对象的协作关系,而非传统的用程序编码在业务对象直接控制,控制权由程序代码转移到外部容器。通过IOC模式可以很容易地管理和替换业务对象。
另外,Spring又是比较全面的框架,它并没有象EJB一样从底层开始全面实现J2EE的功能模块。Spring提供了大多数的层次功能模块,但它并不是从头开始实现的,它通过对其它框架技术的支持来实现各层功能。它包括SpringCore核心层、MVC模块、SpringDAO、SpringORM、上下文控制、Web表示层、面向方面编程7个功能模块。
1.2 Hibernate框架
Hibernate是一种专业的对象关系映射(O/R)工具,通过Hibernate的O/R映射配置,可以用对象化的方式处理数据库表中的记录。Hibernate通过Properties文件建立数据库连接,通过映射文件(.hbm.xm1)将数据库表映射为Java类,表中的每条记录对应为类的实例,而数据列值映射为实例的属性。Hibernate将这些实例以持久对象(Persistentobject)形式向中间业务层提供服务。
1.3 Struts框架
Sturts框架很好地实现了MVC设计模式的理念。它通过ActionServlet实现对象的集中控制,并利用Struts-conifg.xml文件,巧妙地实现了视图、控制、模型层次之间的分离,使得页面设计与改变真正做到与代码无关。
2 整合框架的Web应用架构
通过对上述各种框架技术的介绍可知,如果单独以上任何一个框架技术来实现大中型的Web应用,会存在效率不高,解决问题不彻底等问题,而以Spring框架为核心,充分利用其开放性、模块化以及对业务对象、事务管理等特点,整合Sturts、Hibernate框架,可以构造出五层Web应用架构,分别为:客户层、Web层、业务层、持久层、企业资源层5个层次。整合出的Web应用架构如图1所示。
在客户层,由JSP页面负责传送请求(Request)和接收响应(Response)。在Web层,Sturts根据ActionServlet接受到的请求,指派对应的Action类。Action对象中的execute方法调用模型中的业务组件,决定“做什么”。在业务层,管理业务组件的SpringIOC容器负责向Action提供业务模型(Mode1)组件,决定“怎么做”和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件提升系统性能和保证数据完整性。业务层通过DAO数据访问对象,向持久层请求数据处理。在持久层,依赖于Hibernate的对象关系映射和对象化的查询语言操作,通过Hibernate的会话,处理DAO组件请求的数据,并返回处理结果。
对照基于EJB的一般Web应用结构,整合框架的Web应用架构中通过Spring提供的轻量级业务组件的管理和IOC容器,实现了对EJB技术的替代和更好的组件重用性,使业务组件间的协作更加松耦合。同时利用Spirng的开放性、模块化以及对Hibernate良好支持等特点,通过引入专门的O/R映射框架Hibernate实现了对关系数据库的对象化,隐藏了数据库的底层细节,便于开发者以统一的面向对象思想来开发应用。另外通过Sturts的MVC模式,开发清晰明确的业务流程和用户交互,实现表现逻辑和业务逻辑的解耦,摆脱了原有的开发模式带来的高耦合性。通过框架的整合不仅集成了各种框架的优势,同时也构造了层次清晰、结构合理的5层Web应用架构。
3 主要实现技术
本架构可采用Tomcat5.0作为Web服务器,Struts框架为1.2版本,Spring框架为1.4版,Hibernate框架为3.0版,根据上述整合框架的Web应用架构来实现平台的结构。
3.1 视图层页面设计
根据前端用户灵活的信息浏览需求,同时又要适应频道运作单位自己管理频道模块的需求,因此,页面设计改动不能影响到其它业务逻辑。在实现中通过Sturts的自定义标签,结合MVC模式,实现页面与业务逻辑分离,做到JSP页面不包含Java代码。
3.2 Web层请求响应控制
通过struts-conifg.xml配置文件把各个浏览页面都对应到每个Action,当页面发出请求后,根据struts-config.xml的配置文件中对应的Action部署,由Action对象调用框架内的业务层组件。
3.3 业务对象的IOC方式管理
Web层的Action只是决定“做什么”,并没有实现“怎么做”,具体的业务逻辑由业务层的业务组件来完成。在应用的实现中,把每一个业务组件包按接口类和实现类分开编码,当需要互相协作时,在代码层只要直接引用协作对象的接口类就可以了。协作对象的实现类统一由Spring容器根据配置文件的说明进行注入。可以分为3个服务组件:信息组件、信息审核组件、信息状态记录组件,在Spring的IOC机制下,利用配置文件和基于接口与实现分离的编码方式可以很好地实现这个组件之间的松耦合协作,减轻了应用对容器的依赖。
3.4 利用Spring框架实现事务管理及与持久层会话
通过Spring配置文件可以直接实现数据源、会话工厂、事务管理和数据访问对象的配置,数据访问对象根据上述Spring配置可以直接和持久层连接,这样在实现有中不用考虑这些功能的具体实现。Hibernate通过转换工具把各类信息保存表转换成相应的对象文件和.xml映射文件,Spring中的数据访问对象,直接对对象文件进行操作,由Hibernate完成数据的持久化。
4 结束语
在Web应用开发的实践中,如何根据项目建设需要,选择一个或多个框架来构建合适的Web应用体系结构是软件工程的首要任务。本文提出的整合框架的Web应用架构,独立了显示模块.轻量化了业务组件,对象化了数据库数据,使得显示模块、业务逻辑模块以及数据处理模块可以通过外部文件的简单配置,高效地重用到其他应用系统中去,大大提高了系统的开方性和开发效率,为开发电子政务、电子商务等类似应用提供了参考模式。
参考文献:
[1] (美)Stephanie Bodoff.J2EE 1.4标准教材[M].2版.北京:电子工业出版社,2000.
关键词:Java EE Struts 2 Spring Hibernate SSH
一、SSH框架
2006年,Sun公司提出了Java EE(Java Platform,Enterprise Edition)的概念,并同步出现了两个主要规范JSF 1.2和EJB 3.0。它是能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序,提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
随着经典Java EE平台广泛采用,在企业级应用开发领域,并没有在Sun所推荐的以EJB为核心的Java EE应用架构中看到其所承诺的效果,实际情况恰恰相反,EJB在大部分实际应用中带来的坏处远远超过了它带来的好处。
于是,Java EE社区全面开始了对EJB的批评与反思,整个Java EE业界开始寻求一种更加简单、更加方便使用的轻量级Java EE架构。最终,Struts 2、Spring、 Hibernate三个开源框架的组合(通常被称作SSH)以能够运行在普通Web容器中而不需要EJB容器的支持,且一样具有稳定的性能和极高的可扩展性、可维护性,成为目前最为流行、运用最广的轻量级Java EE平台。
(一) Struts 2
早在2000年5月,Craig R. McClanahan就向Java社区提交了一个Web框架,这就是后来的Struts。2001年6月,Struts 1.0正式。2006年,WebWork与Struts这两个优秀的Java Web框架的开发团队,决定合作开发一个新的、整合了WebWork与Struts的优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原先Struts的1.x版本产品称为“Struts 1”。
(二) Spring
Spring框架由Rod Johnson开发,2003年了Spring框架的第一个版本。Spring框架的核心是控制翻转IoC(Inversion of Control)/依赖注入DI(Dependence Injection)和面向切面AOP(Aspect-Oriented Programming)机制。
(三)Hibernate
在Java EE应用程序中,采用面向对象编程,用对象描述实体;而数据源层往往是关系型数据库系统,用二维表存储数据。为解决面向对象的应用程序和面向关系的数据库系统之间的“阻抗不匹配”,需要ORM(Object-Relational Mapping)把Java EE应用程序中的对象映射到关系型数据库中的二维表,用于实现实体对象的持久化并封装数据访问的细节。实现ORM功能的组建有很多,其中JBoss组织的Hibernate是目前最常被使用的组件。Hibernate第一个正式版本于2011年末,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
二、ERP权限审核系统
(一)功能需求
技术方面:考虑到目前局域网比较完善,以及今后维护方便,系统应采用C/S(浏览器/服务器)架构。
功能方面:实现事务码、通用角色、本地角色、ERP用户、不相容事务代码的增加、删除、修改、查询功能。通用角色、本地角色、ERP用户三个层级不相容情况审核。
(二)系统设计
系统功能设计分为四个层级:
领域模型:建立类Tcode、CommonRole、LocalRole、UserInfo、Incompatibility,同时,将上述类的共有字段提炼出来,建立其父类BaseObject。
持久层:建立接口IBaseDAO,实现操作数据库的增加、删除、修改、查询操作,并通过泛型参数,实现多元化的对象操作。
业务层:建立接口IBaseService,实现操作持久层的增加、删除、修改、查询操作,通过泛型参数,实现多元化的对象操作。
表现层:由两部分构成,一部分用于收集信息和展示处理结果,包括添加(save)、修改(update)、查询(query)、更改成功(success)、查询结果(view)5个jsp页面;另一部分是对收集信息和处理结果进行封装的action,包括类TcodeAction、CommonRoleAction、LocalRoleAction、UserInfoAction、IncompatibilityAction、CheckTcodeBase,同时,将上述前5类的共用的功能提炼出来,建立其父类BaseAction。
(三)系统实现
1、开发环境
Eclipse 3.7.1 + Java EE SDK 1.7 + Struts 2.2.1 + Spring 3.0.5 + Hibernate 3.4.0 + MySQL 5.5.20 + Tomcat 7.0。
2、搭建SSH集成环境
建立名为serp的Java Web项目,建立三个业务层和领域模型的包,将所需的jar包拷贝到WebContent/WEB-INF/lib下,并对web.xml进行配置,增加对Struts2和Spring的支持。限于篇幅,该处及后面的具体代码未详细列出,如有需要,可向作者获取。
3、领域模型的实现
该部分内容位于model包下,实现领域模型Java类,与数据库的表建立映射。BaseObject类包含共性的id、idName、idDescription等属性及其setter和getter方法,并覆写hashCode、equals、toString、compareTo方法。CommonRole类包含个性的roleName、roleTitle、position、tcodes等属性及其setter和getter方法。映射文件CommonRole.hbm.xml建立数据库表与Java类的映射。
4、持久层的实现
该层将接口类和实现类相分离,使其实现方式可以随时更改为其它方式,增加了维护灵活性。IBaseDAO接口定义saveObject、updateObject、deleteObject、queryObject等方法。BaseDAOHibernateImpl实现IBaseDAO接口。
5、业务层的实现
该层同样将接口类和实现类相分离,使其实现方式可以随时更改为其它方式,增加了维护灵活性。IBaseService接口定义saveObject、updateObject、deleteObject、queryObject等方法。BaseServiceSpringImpl实现IBaseService接口。
6、表现层的实现
(1)jsp页面的实现
该部分主要用于实现信息的收集及处理结果的展示。globalMessages.properties用于页面显示内容的定制,增加其适用性。首页index.jsp用于显示具体的功能模块,包括事务代码、通用角色、本地角色、ERP用户、不相容事务码的信息维护和通用角色、本地角色、ERP用户的不相容审核。通用角色清单显示页面viewcommonrole.jsp用于显示查询到的通用角色清单。
(2)action的实现
该部分主要用于对收集数据及处理结果的封装。Stuts.xml用于实现处理类的调度。applicationContext.xml用于具体处理的实现。BaseAction类包含共性的operateFlag、successString、opearateResult、baseService等属性及其setter和getter方法,并增加generateSql、operate方法用于处理查询语句的处理。CommonRoleAction类包含个性的commonRole、commonRoles等属性及其setter和getter方法,并覆写execute方法。
(四)部署运行
在Eclipse中部署程序,然后在浏览器中输入访问页面,即可看到程序效果,实现ERP权限的在线管理。
(五)总结
在实际的Java EE平台中,使用SSH2(Struts 2 + Spring + Hibernate)框架整合开发是最流行的开发平台,这种开发平台也被称为轻量级Java EE企业应用平台。与经典的基于EJB核心的Java EE应用相比,基于SSH2的轻量级Java EE应用简化了经典的Java EE应用的难度,在保留经典Java EE应用架构、高度可扩展性、高度可维护性的基础上,降低了Java EE应用的开发、部署成本,具备了快速、高效、易于使用的特点。本文通过研究Struts 2、Spring和Hibernate框架的体系结构,探索整合SSH开发了一个B/S多层架构的ERP权限管理系统,验证了轻量级Java EE在信息系统开发中的可行性,为企业深化ERP权限管理,开发高效率、低成本的应用系统提供了有效途径。
参考文献:
[1]杨磊.新手学Java Web开发.北京:北京希望电子出版社,2010.
[2]李刚.轻量级Java EE企业应用实战(第3版)——Struts 2+Spring 3+Hibernate整合开发.北京:电子工业出版社,2012.
[3]The Apache Software Foundation.Struts 2.http://.
对于各企事业单位,推出符合民众需求的产品和业务至关重要,是各个单位业务的最终实现目标。如何推出符合民众需求的产品和业务,调查问卷必不可少。通过调查问卷,我们可以了解用户的需求,以及根据用户的需求进一步完善。因此,建立完善的调查问卷系统是各企事业工作推进的保证。
目前,各企事业单位的调查问卷大都是采用传统的人工方式,但是采用人工方式容易出问题。一是用户填写调查问卷的时候,容易书写错误,造成纸张浪费,同时导致有效调查数据减少;二是每年的调查问卷会浪费大量的空间存放;三是人工方式无法精确进行调查,数据不够准确。
因此,开发在线的调查问卷系统刻不容缓。调查宝是一个简单易用的在线问卷调查系统,通过这个系统用户可以轻松地进行在线调查问卷的设计、调查数据的收集,并进行调查结果分析、生成调研报告。
调查宝界面友好、使用简捷,每个人都可以轻易地开展各种调查活动。与传统调查方式和其它调查网站或调查系统相比,调查宝具有快捷、易用、低成本等明显优势。调查宝是一个web系统,利用互联网的优势, 利用网络的便捷对目标群体进行调查,搜集有用数据后进行统计分析,挖掘数据的潜在价值。
2 相关技术介绍
2.1 Web应用系统架构
目前Web应用系统广泛采用MVC的设计模式,该模式是目前广泛流行的软件设计模式。MVC设计模式采用三层结构,即表示层、业务层和数据存取层。表示层提供与用户交互的界面、收集和显示数据;业务层提供系统的业务和功能代码;数据存取层负责完成数据库操作。这种系统架构极大地提高了软件系统的可扩展性和可复用性,同时优化了模块之间的耦合,改善了系统的安全性。
2.2 Struts2框架
struts1和webwork的技术两者进行合并产生了全新的Struts2框架,Struts2框架主要用于开发Web应用程序的表现层,核心就是struts2控制器Filter Dispatcher和action。在开发大型可扩展的Web系统时,为了减轻软件开发过程中的组件间的控制和调用工作,以及加快开发进度,我们常常使用Struts框架。该文采用Struts2作为表现层框架,其结构如下图所示。
2.3 Spring框架
Spring是以控制反转(IOC)和面向切面(AOP)为基础的,一种轻量级的框架。其中,IOC机制实现了由Spring框架完成创建被调用者,然后将被调用者注入到调用者,这就是“依赖注入”;AOP机制使用切面技术将非业务工作织入到主要业务过程中,实现了多线程。以控制反转和面向切面为核心的Spring框架可以有效地缓解企业级应用程序开发的复杂性。该文采用Spring作为业务逻辑层框架,其结构如下图所示。
2.4 Hibernate框架
之前,我们需要访问数据库时需要写大量的代码,那么Hibernate框架是一个ORM层的框架,封装了JDBC,通过编写映射文件完成对象关系映射,在业务层以面向对象的方式进行编程,不需要考虑数据保存形式,可以很好的实现数据的持久化。Hibernate是一个开放源代码的、轻量级框架。
该文采用Hibernate作为业务逻辑层框架,其结构如下图所示。
2.5 Ajax
随着web2.0的出现和发展,Ajax越来越受到关注。Ajax采用异步机制,促使页面局部刷新,提高了用户操作页面的体验,Ajax减少了过多的web页面刷新,提高了用户的可用性。网上投票系统中使用Ajax实现了拦截用户的重复登录。
3 网上投票系统系统需求分析
通过与用户的沟通和交流后,明确了系统的所需功能。该文综合分析网上投票系统的业务领域知识,从而详细描述软件功能需求,构建软件需求可行方案,为软件设计工作提供指南和依据。
1)用户登录和注册。管理员使用用户名和密码登录,投票用户投票前需要注册普通用户,登录系统后方可进行投票操作,和查看投票结果。管理员登录后可以新投票,维护投票,查询投票结果等。
2)新投票。管理员根据实际需求可以发起投票,创建投票问题和选项。注意投票选项至少有两项。
3)投票。系统用户注册后可以对已经完成的投票问题进行有选择的投票,即用户选择适合的选项提交,投票完成后系统会记录投票的结果。
4)查看投票结果。用户投票完成后,管理员可以查看每个投票主题的得票数。
5)维护投票。管理员登录系统后可以对投票问题及其选项进行修改。
调查宝在线投票系统主要包括管理员模块和普通用户模块,其具体功能模块图如下图所示:
4 网上投票系统设计
4.1 架构设计
系统采用S2SH框架技术和Ajax技术实现,使得各个模块之间实现了松耦合,完美地衔接起来。该架构使用Strut2作为表现层和控制层主要框架,数据持久层使用Hibernate框架,而Spring框架主要负责业务逻辑层。
S2SH框架如下图所示:
4.1.1 视图层
Struts2框架用于管理视图层,维护用户交互、JSP页面跳转、表单以及数据验证。本系统采用Struts2框架后,当用户请求访问的时候,ActionServlet会负责接收用户请求,然后查询配置文件找到相应的Action控制处理请求;Action控制器将领域对象提交给业务逻辑层服务组件进行处理,处理完毕后,再将处理结果返回给Action控制器并将结果显示在相应的视图上或者跳转到另一个JSP页面。同时使用Ajax异步处理机制实现网页的局部刷新,本系统没有采用传统的拦截器实现提示用户的重复登录,而是采用Ajax实现了提示用户的重复登录,同时使用Ajax的AoP技术实现在主要投票业务过程中织入日志。
4.1.2 业务逻辑层
网上投票系统的业务逻辑层主要由Spring框架完成,业务逻辑层围绕用户的具体业务,比如管理员发起投票主题、管理员进行查询投票结果、普通用户参与投票等,将具体业务封装在service中,由service调用Dao中的方法,这里就用到了Spring框架的IoC,即在调用者service中注入被调用者Dao。Spring框架实现了层间的松耦合,利于日后的维护和扩展。
4.1.3 数据持久化层
网上投票系统的数据持久化层由Hibernate框架完成,实现了数据关系表和对象之间的映射。本系统中的Dao中具体的对数据的操作均采用HQL语句完成。
网上投票系统将S2SH框架技术运用到系统架构建设中,保证了系统总体框架的稳定性,降低了各层间的耦合度,提高了系统业 务处理效率。
4.2 构建系统领域模型
软件开发中的领域模型对应现实世界中的对象,是对现实生活中具体对象的抽象。只有将具体对象抽象成领域模型,并理清其关系,才可顺利地进行系统开发,所以,构建系统领域模型至关重要。根据调查宝在线投票系统的需求以及功能,我们抽象出了该系统的领域模型,如下图所示:
5 总结与展望
文章详细阐述了基于S2SH框架的“网上投票系统”的设计原则与实现的方法。通过与客户的交流和沟通,形成了详细的需求文档,进一步分析了系统的功能模块,构建系统领域模型。系统采用当下最为流行的web开发框架S2SH,并结合Ajax有效地提高了用户的体验。
通过总结本系统的开发与研究工作,网上投票系统还需进一步研究:Hibernate框架关联数据的完全更新。
参考文献:
.计算机技术与发展, 2009(8).
[2] 缪勇.基于S2SH框架的Ajax框架的研究[J].电脑知识与技术, 2009(26).