spring框架范例6篇

spring框架

spring框架范文1

关键词:J2EE;Struts;Spring;Hibernate;整合架构

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)24-5911-03

Study on Method of Integration of the J2EE Framework Based on Struts, Spring and Hibernate

WANG Mei-qin

(Zhejiang Tongji Vocational College Of Science and Technology, Hangzhou 311231, China)

Abstract: This paper introduced the MVC design pattern and three kinds of open-source framework technologies (Struts, Spring and Hibernate),analyzed the theory and characteristics.The paper discussed three integration technologies of Struts and Spring framework,compared their advantages and disadvantages,improved the third method and gived more detailed code; To the integration of Spring and Hibernate framework,the paper gived its implementation and central code.The purpose of the framework integration was loose coupling between components and highly improve the software developing efficiency.

Key words: J2EE; Struts; Spring; Hibernate; Integrated Architecture

J2EE技术是目前B/S架构应用中最为成熟的技术之一,被几乎所有的JavaWeb开发人员所熟悉,在这个领域中人们经常会谈论三个非常流行的轻量级开源框架Struts,Spring,Hibernate。目前J2EE企业级开发技术较成熟,开发模式也较繁多,较流行开发模式MVC更是普遍,现在使用最多的可能就是SSH这三种框架。而软件应用框架不是一个可用的应用系统,它是一个半成品,由一些相互协作的类和相关接口组成,应用开发人员可在该软件应用框架基础上进行二次开发,以实现特定功能的应用系统[1]。在多层Web体系结构设计中,普遍存在着开发产品性能差、维护工作量大及应变能力不足等缺点。因此,在开发Web应用系统的过程中,提高开发效率,合理选取技术进行分层设计、框架搭建,充分发挥应用系统的灵活性、安全性和实用性尢为重要。

笔者在本文中主要研究讨论SSH这三种开源框架的糅合使用到底是怎样实现的方法和策略,分析了Struts、Spring和Hibernate框架的工作原理和技术优势,研究了三种框架的具体整合方案,设计了一个通用、高效、易于扩展的WEB应用架构。在该架构中,表示层采用Struts,业务层采用Spring,持久层采用Hibernate,各层功能独立,层次之间松散耦合,为实现高效、灵活的WEB应用提供一种新的思路及方法。

1 J2EE简介

J2EE是英文“Java 2 Platform,Enterprise Edition”的缩写。Java2平台企业版是Sun公司定义的一套全然不同于传统应用开发的技术架构。从整体上讲,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE和适用于企业级应用的J2EE。图1是一个比较简单的J2EE体系架构图。

2 Struts、Spring和Hibernate框架分析

2.1 MVC设计模式

MVC是Model-View-Controller的缩写,中文翻译为"模式-视图-控制器",MVC源于传统的面向对象语言SmallTalk-80,是第一个分开表示逻辑和业务逻辑的设计模式。MVC引入视图(表示层)、模型(数据)和协调两者的控制器,使之相对独立,从而提高灵活性和复用性。模型、视图、控制器三者之间的关系和各自的主要功能,如图2所示。

2.2 基于MVC设计模式的Struts框架技术

Struts是一个在JSP Model2基础上实现的MVC框架,主要分为模型(Model)、视图(Viewer)和控制器(Controller)三部分,其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性和可重用性[2]。Struts框架的体系结构如图3所示[3]。

Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml。Struts-config.xml集中了所有页面的导航定义。对于大型的Web项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在。

2.3 基于IoC和AOP的Spring框架技术

Spring是一个开源框架,由Rod Johnson创建,目的是解决企业应用开发的复杂性,功能是使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。Spring 是一个轻型的控制反转(IoC)和面向切面(AOP)的容器框架,使用一个外部 XML 配置文件可以方便地利用它把对象连接在一起,每个对象都可以利用JavaBean 属性进行一个依赖对象的引用,而用户自己的任务就只需要在一个 XML 配置文件中设置一下连接属性[4]。

1) 轻量级

轻量是指从大小与开销两方面而言Spring都是轻量的,完整的Spring框架可以在一个大小只有1MB多的JAR文件中,并且Spring所需的处理开销也是微不足道的。

2) IoC和Spring

IoC是“Inversion of Control”的缩写,意思是控制反转,又称为“依赖注入”。Spring通过一种称为控制反转(IoC)的技术促进了松耦合,当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。

3) AOP和Spring

AOP是OOP的延续,是“Aspect Oriented Programming”的缩写,意思是面向切面编程,是一种可以通过预编译方式和运行期动态实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。这种技术允许业务逻辑与系统服务进行内聚性的开发,使得应用对象只做它们应该做的,完成业务逻辑,仅此而已。

4) Hibernate框架技术

Hibernate是一个开放源代码的对象关系映射(Object Relation Mapping,简称ORM)框架,它提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制,Hibernate负责持久化层,完成数据库的crud操作,为持久层提供OR/Mapping,从而大大减少数据访问的复杂度,把对数据库的直接操作,转换为对持久对象的操作。

3 Struts、Spring和Hibernate框架的整合方法

Web应用系统框架层次分为四层:表现层、持久层、业务层、域对象层。每个框架分别负责一个层次的实现,表现层使用Struts,业务层使用Spring,持久层使用Hibernate。每层在应用程序中都有明确的责任,各层以一种松耦合方式彼此作用但又彼此独立,各层不用管低层的技术细节。集成框架开发出来的Web系统无论在整体结构上还是在局部的复杂业务模型中都有了更低的耦合性,它们的灵活性与可维护性也得到了提高,从而消除了单独使用这三种框架开发系统的不足。

3.1 装载应用程序环境

无论使用哪种方法,都需要使用Spring的ContextLoaderPlugin为Struts的ActionServlet 装载Spring应用程序环境。就像添加任何其他插件一样,简单地在struts-config.xml文件添加该插件,代码如下:

“org.springframework.web.struts.ContextLoaderPlugin”>

3.2 Struts与Spring框架的整合

目前Struts 与Spring框架常见的整合技术有下列三种:

1) 使用Spring的ActionSupport类整合Struts;

2) 使用Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor;

3) 将Struts Action管理委托给Spring 框架。

下面对前两种方法进行简单的介绍,并给出第三种方法具体实现的步骤。

1) 使用Spring的ActionSupport类整合Struts

手动创建一个 Spring 环境是一种整合 Struts 和 Spring 的最直观的方式。需要注意的地方是:①通过从 Spring 的 ActionSupport 类而不是 Struts 的 Action 类进行扩展,从而创建了一个新的 Action;②使用org.springframework.web.struts.ActionSupport 类提供的getWebApplicationContext() 方法获得一个 ApplicationContext。这种技术很简单容易,但替换麻烦需要重写代码。

2) 使用Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor

这种方法分三步进行:第一步是在struts-config.xml文件中加入:;第二步是在 Spring 上下文配置文件中用名称属性注册一个bean,以匹配 struts-config 动作映射名称;第三步是通过创建了一个JavaBean属性创建Struts动作,DelegatingRequestProcessor自动地配置这种属性。DelegatingRequestProcessor方法的确比第一种方法好,但仍然存在一些问题,如果使用一个不同的RequestProcessor,则需要手动整合Spring的DelegatingRequestProcessor,添加的代码会造成维护的麻烦并且将来会降低应用程序的灵活性。

3) 将 Struts Action管理委托给Spring框架

这种方法通过Spring提供的两个和Struts相关类来实现:org.springframework.web.struts. DelegatingActionProxy,org.springframework.web.struts.ContextLoaderPlugIn。ContextLoaderPlugIn实现Struts的PlugIn接口,需要在struts-config.xml中作相应的配置,然后在applicationContext.xml中配置相应的节点,委托以后,修改Struts-config.xml中的action属性,使action的type值不指向具体的实现类,统一改为类type="org.springframework.web.struts.DelegatingActionProxy",在applicationContext.xml中的bean name值设定与Struts-config.xml中action path值一样,以使类能够根据传入的path在springContext环境中找到相应的bean,并将实例返回给Struts。这在三种方法中是最好的,但同时也存在一些问题,考虑做些改进。可以对RequestProcessor类的ProcessActionCreate()方法进行一些扩展,使得ProcessActionCreate()方法把ActionServlet实例纳入Spring的容器管理。主要代码摘录如下:

Protected Action processActionCreate(HttpServletRequest rq,HttpServletResponse rs,ActionMapping mp) throws IOException{

try{//查找相关Bean

String bName=DelegatingActionUtils.determineActionBeanName(mp);

//返回Bean的实例

//监控Servlet当前状态和对Servlet进行操作。

Return(Action);this.webApplicationContext.getBean(beanName,Action.class);}

Catch(NoSuchBeanDefinitionException ex){

Return super.processActionCreate(rq,rs,mp);}

}

最后,在Struts配置文件struts-config.xml中加上声明,通知Struts执行时调用RequestProcessor的扩展类DelegatingStruts。使得Struts加载Action时,DelegatingStruts会根据提供的参数,找到对应的Bean,实现Spring提供的所有服务,并把实例返回给Struts。

3.3 Spring和Hibernate框架整合的实现方法

Spring整合Hibernate主要是对Hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期。

1) 配置SessionFactory,让Spring来创建Session.

在Hibernate的配置文件或者在Spring的配置文件中均可以进行SessionFactory的配置,选择使用Spring来对Hibernate进行管理,这样最后生成的工程里就不包含hibernate.cfg.xml了,好处是在一个地方就可以对Hibernate进行管理了。

2) 配置事务管理器

增加如下代码:

?

3) 对事务管理器进行事务设置

增加如下代码:

??

最后可以把事务应用到具体的类中就完成了整合过程。

4 结束语

Struts+Spring+Hibernate框架是目前众多软件企业主流的应用技术,Struts作为一种MVC的实现,很好地实现了显示逻辑与业务逻辑的分离。Spring使用IoC容器作为构建架构的基础,通过IoC实现组件的装配,降低了各组件之间的依赖,实现了各组件的松耦合,使得各组件可以单独进行开发和测试,这些特性都使得整个应用系统具有良好的可扩展性和可维护性。Hibernate作为一种持久层框架与Spring天然的搭配,把它们整合在一起,使开发人员可以完全以面向对象的方式进行系统分析、系统设计并可以使用面向对象的操作方式操作数据库记录。更为重要的是,应用系统在不同数据库间移植非常方便,只需在配置文件中更改即可。总之三个框架的整合能够充分发挥者在各自领域的优势,通过IoC装配各组件,通过AOP进行事务管理,能够轻松实现一个开发简单、结构良好、功能强大、层次清晰的Web应用系统。

参考文献:

[1] GAMMA E,HELM R,JOHNSON R,et al.Design patterns:Elements of reusable object-oriented software[M].Addison Wesley,1994.

[2] Struts,MVC的一种开放源码实现[DB/OL]./developerworks/cn/java/j-struts/

[3] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.

[4] Eric Jendrock,Jennifer Ball,Debbie Carson,et al.The Java EE 5 Tutorial.[EB/OL] /javaee/5/docs/tutorical/doc/.

spring框架范文2

关键词: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

spring框架范文3

随着互联网宽带技术应用的成熟,以及物流和支付系统的完善,电子商务成为互联网普及应用的主流,影响着千家万户的生活和经济行为,并日益成为社会商业活动的重要形式。因此,各行业均希望可以快速展开网上营销渠道。新形式下,电商网站开发人员如何缩短开发周期,进一步提高工作效率,是每一个程序员所面临的问题。各大WEB框架的出现,使得电商网站服务器端逻辑的设计非常便利,利用它进行网站的开发,可以节省很多的时间和精力。本文基于Spring MVC来构建一个电子商务网站,希望可以对读者学习和使用Spring MVC建站产生一些帮助。

2 网上电商平台Estore(Online electric business

platform estore)

2.1 Estore简介

Estore是采用Java技术设计开发的网上电子商务平台,采用了Spring MVC3、Hibernate3和Freemarker相结合的技术架构。继承了Java高效、跨平台、稳定且安全等多方面的优点[1],能够支持Oracle、Sqlserver、Mysql等数据库,统一在后台管理网站的模板,用户可利用标签自定义显示内容和方式。

2.2 Estore的运行环境

Estore原则上支持全系列JAVA运行环境、数据库,主要使用以下环境:

(1)WEB服务器:Weblogic、Tomcat、WebSphere、JBoss等。

(2)数据库服务器:Oracle、Mysql、SqlServer、DB2等。

(3)操作系统:Windows、Linux、Unix等。

3 基于Spring MVC的电商平台的设计与开发

(The design and development of electric business

platform based on the spring MVC )

3.1 Spring MVC简介

3.1.1 Spring MVC架构

Spring MVC的整体架构如图1所示[2],视图层采用Html或Jsp实现;控制层采用Servlet实现,整个框架采用同一个Servlet,以实现请求的中转;模型层采用Java实现,主要决定用来做什么;在模型层后面添加了一个DAO,目的是将决定做什么和具体怎么做分开。

图1 Spring MVC的架构

Fig.1 The architecture of spring MVC

整个Web框架大致的流程是:首先客户端发送请求,提交Html或Jsp页面给中转器(Servlet);中转器按照客户的请求,选择相应的模型层,即Logic进行相应的逻辑处理;如果需要使用数据库,则通过DAO进行相应的数据库操作。

3.1.2 Spring MVC重要组件

图2 Spring MVC的组件

Fig.2 The component of spring MVC

Spring MVC的组件如图2所示[3]。

(1)Spring MVC将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。

(2)DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。

(3)DispatcherServlet把请求提交到目标Controller。

(4)Controller进行业务逻辑处理后,会返回一个ModelAndView。

(5)Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。

(6)视图对象负责渲染并返回给客户端。

3.2 Hibernate框架

3.2.1 Hibernate简介

Hibernate是一个开源免费的Java包,它使得程序与数据库的交互变得十分容易,更加符合面向对象的设计思想[4]。Hibernate使开发者可以专注于应用程序的对象和功能,而不用关心如何保存它们或查找这些对象。

在对SQL语句完全不了解的情况下,使用Hibernate仍然可以开发出优秀的包含数据库访问的应用程序。

3.2.2 Hibernate运行过程

图3 Hibernate运行过程

Fig.3 The running process of hibernate

Hibernate的运行过程如图3所示。

应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,并用这些信息生成一个SessionFactory对象,然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象。可通过Session对象的get()、load()、save()、update()、delete()和saveOrUpdate()等方法对PO(persistent object持久对象)进行加载、保存、更新、删除等操作。

在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作:如果没有异常,Transaction对象将提交这些操作到数据库中;如果有异常,则执行回滚操作。

3.3 Freemarker简介

FreeMarker是一个模板引擎[5],它由Java语言编写而成,基于模板来生成文本输出。FreeMarker与Web容器没有关系,即Web运行时,并不知道HTTP或Servlet。它不仅能够用于表现层的实现,而且还可以用于生成Xml、Jsp或Java等。FreeMarker允许Java servlet保持图形设计与应用程序逻辑的分离,这是通过在模板中封装Html完成的。模板用Servlet提供的数据动态地生成Html。模板语言是直观且强大的,编译器的速度快,输出接近静态HTML页面的速度。

虽然FreeMarker具有一些编程的能力,但通常由Java程序负责要显示的数据,由FreeMarker生成页面,通过模板来显示数据。

下面是用Freemarker来做的一个显示页面:

 

[@post_list]

[#list tag_list as post]

[#list post.types as tlist]

[#if tlist.name == "首页"]

[/#if]

[/#list]

[/#list]

[/@post_list]

3.4 按Spring MVC框架分层设计电商平台

3.4.1 Dao层

Dao层分析模块所要涉及的表,确定表之间的关系,编写Hibernate Mapping文件和持久化类,它使用Hibernate连接数据库、操作数据库(增删改查)。根据模块需要的各种持久化操作,确定对应的方法,据此来编写Dao接口和实现类。

3.4.2 Entity层

Entity层是实体类层,也属于MVC中的model层,它的主要功能是把用户提交过来的参数封装成一个对象给Dao层也就是Hibernate操作。

3.4.3 Service层

引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断、校验等操作)。

3.4.4 Action层

引用对应的Service层,在这里依据配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计 算处理。

3.4.5 显示层

一个或多个HTML页面为模型提供数据显示,HTML页面主要使用HTML标记和Freemarker标签来显示数据。

综上所述,各层之间的关系为:action调用service中的方法,service调用dao中的方法,调用时的参数使用entity传递,最后把结果显示在HTML界面,以响应用户请求。

4 Estore的个性化功能(Personalization capabilities

of estore )

4.1 Estore标签的执行流程

标签是Estore中的一个重要概念,利用它可以执行许多操作,比如对搜索结果分页、获得商品品牌的列表、获得商品子栏目的列表等,它的执行流程如下:

(1)访问某个页面(如:页头导航栏.html),浏览器执行解析代码,执行到标签时跳转到后台estore-context.xml文件。

(2)estore-context.xml文件中,假如有,在里面找标签对应的class文件(如shop_Category),再找对应的*.java文件。

(3)到后台执行CategoryListDirective类中默认方法execute(如:[@shop_Category parentId=category.id],参数:父类别ID parentId)。

(4)CategoryListDirective类链接数据库,获取目标数据并放入Map集合:

如:Map origMap = DirectiveUtils.addParamsToVariable(env, paramsWrap)。

(5)将获取的目标数据返回给前台,通过标签展示:

[@shop_Category]

首页

[#list tag_list as ctg]

${ctg.name}

[/#list]

[/@shop_Category]

4.2 制作“商业广告位”

一幅色彩绚丽、形象生动的广告作品,能以其非同凡响的美感力量增强广告的感染力,使消费者沉浸在商品和服务形象给予的愉悦中,使其自觉接受广告的引导。在Estore平台上,可以为网站的首页添加一个“商业广告位”,具体步骤如下:

(1)在系统后台的“辅助”中的菜单“广告版位”,添加一个“版位”,(如:页中广告)。

注意:记录下此时的“ID”(如ID=6)。

(2)“广告管理”中,修改“页中广告”,选择图片之后,改一下图片地址,去掉“/u”(如:把‘/u/201403/231829044ug5.jpg’变为‘/201403/231829044ug5.jpg’)。

(3)在“\WEB-INF\t\store\tpl\include\”下,新建文件“页中广告位.html”,内容如下:

注意:此处的ID,其值取自第(1)步中的ID。

(4)在“首页”相应的广告位置,加入如下语句:[#include "../include/页中广告位.html"/]。

至此,即在网站首页添加了一个“商业广告位”,根据客户的需求,只需要更改后台的广告图片,即可在网站首页看到客户的广告宣传。

4.3 Estore的后台处理流程

当用户刚接触Estore时,可能对其后台的处理流程有点头痛,不知道应该如何学习,常常会感觉到无从下手,本文以访问后台的主界面为例,特在此做出一个简要的介绍,用户可以按照以下步骤来了解其处理过程:

(1)用户查看浏览器端的访问请求路径,看要访问资源的后缀名,如“localhost:8080/storeOracle/eadmin/estore/index.do”的后缀名为“*.do”。

注意:“eadmin/estore/”是虚拟访问路径,它在web.xml中设置。

(2)web.xml文件的重要标签:

 EStoreAdmin

 /eadmin/estore/*

注意:①因为扩展名为“.do”,所以找到值为“/eadmin/estore/*”的。

②“eadmin/estore/”是虚拟访问路径,在此处设置。

(3)去所有的action文件里找到相应“@RequestMapping”的value等于“index.do”的方法,看该方法返回什么字符串(如:“login”)。

(4)去estore-servlet-admin.xml中找到id="freemarkerViewResolver"的bean,该bean中name分别为“prefix”、“suffix”的标签的value的值,正好和步骤(3)中的“login”组成文件名“/estore _sys/login.html”;系统将此页面返回,用户即可直接访问。

(5)登录页login.html会向名叫“index.do”的action发送请求,按照步骤(3)和(4)操作后,可以直接访问文件“/estore_sys/index.html”。

(6)文件“/estore_sys/index.html”里嵌套有“主体框架”:

(7)在main.html里,又有左右两部分frame:

 

 

至此,Estore系统后台的主界面全部形成。

5 结论(Conclusion)

通过研究可以证明,利用Spring MVC可以快速地开发一个具有良好架构的电子商务网站,并且易于维护、支持扩展,这大大地提高了建站的效率,节省了大量的时间和精力。同时,电子商务网站的开发还应考虑安全支付、快速物流等问题,这是今后需要研究的对象。

参考文献(References)

[1] Java 2 Platform,Enterprise Edition Specification Version l.2[EB/0L].java.sun.com/J2ee/docus.Htm,2014-05-23.

[2] 陆荣幸,等.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2003,3:144-146.

[3] 何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,6:274-281.

[4] 高昂,卫文学.基于Hibernate与Struts框架的数据持久化应用研究[J].计算机应用,2005,12:2817-2820.

[5] 冷威龙.Freemarker[EB/OL].baike.baidu.com/view/1278430.htm,2014-05-23.

作者简介:

岳绍敏(1988-),男,硕士研究生在读.研究领域:智能系统.

王国春(1978-),男,硕士,讲师.研究领域:软件工程与智能系统.

spring框架范文4

本文针对Java EE多层体系结构、关键设计模式进行研究,采用构建轻量级J2EE框架所使用的Struts2、 Ibatis、Spring技术,该框架实现了表现逻辑和业务逻辑的分离,使系统具有较好的扩展性和可维护性。

【关键词】Struts2 iBATIS Spring

1 引言

产品销售是企业的生命线,对产品销售数据进行管理分析,并以可视化的图表方式展示产品销售的各种数据,为企业决策提供准确的参考依据。本文介绍了系统的需求、功能模块划分、技术架构等方案。

2 系统架构设计

本系统采用Java EE的多层结构,这些层次是:控制层、、持久层、领域模型层。 每层在应用程序中有各自的功能,不能与其他层功能耦合。

视图层负责系统数据的显示,它从业务层取得数据并显示数据。当业务层变化时,将自动更新,并传送给控制层。本系统采用Struts2实现MVC框架,视图层由JSP结合Struts2 TagLib来实现。视图层属于MVC开发设计模式中“V”,Struts2框架是实现MVC模式的一个应用框架,它以WebWork的设计为核心,同时兼容Struts1.x。

控制层是MVC框架中的”C”,FilterDispatcher是Struts2框架的核心控制器,主要负责拦截用户请求。响应请求Struts2框架会依据struts.xml配置文件选择相应的Action进行业务处理。

业务层主要负责实现系统的业务逻辑。EJB框架和Spring框架都可实现业务层,Spring框架与应用服务器整合的能力相对EJB3.0要弱,但是Spring框架模块的可分离配置优于EJB3.0的灵活性。

持久层主要负责与数据库的交互,为业务层提供数据库访问功能。使用iBATIS提供的O/R Mapp映射机制,iBATIS通过在SQL开发的工作量和数据库移植性上提供了很大的自由空间,本系统选择采用iBATIS实现持久层。

领域模型层是ORM思想的产物,ORM用对象关联数据表,将这些对象的集合归为一个专门的层即领域模型层。它不再需要开发者建立和维护不必要的数据传输对象来匹配对应的领域对象,而且不需要附加编码。

3 系统总体设计

产品销售是企业经营过程中的一个重要环节,通过产品销售分析系统,可以获取各种产品销售系统,生成各种产品销量和营业额的相关图形,产品销售系统分为产品管理、订单管理和销售分析3个模块。产品管理可以添加、删除、修改产品,维护企业的产品资源;订单管理可以添加、删除、修改订单,维护企业的产品订单;销售分析是根据产品订单数据生成各种产品销售分析图。

4 系统实现

4.1 iBATIS配置文件

根据系统需求分析,产品销售分析系统需要实现产品维护、订单维护以及各种销售分析图形的生成等功能。以产品销售分析系统的订单维护功能为例介绍有关配置。在iBATIS的SQL Map框架中,需要一个配置文件XML配置持久层框架信息,如配置数据库连接JDBC、SQLMap映射文件的加载、SQL Map的配置和优化设定。

4.2 Spring与iBATIS整合实现DAO

本系统框架中采用Spring整合iBATIS结合来实现系统的DAO层。DAO模式是Java EE核心设计模式,用来抽象和封装所有对数据源的访问。Spring对iBATIS整合后,对iBATIS的配置主要是对SqlMapClient节点的配置,实际上是配置了一个SqlMapClient的创建工厂类。本系统Spring的核心配置文件是/WEB-INF/spring-context/applicationContext.xml,系统通过在web.xml中配置Spring监听器来启动Spring,Spring在web.xml中的配置。

系统启动时通过ContextLoadListener初始化Spring容器。然后ContextLoaderListener监听器通过初始化参数connextConfigLocation找到配置文件applicationContext.xml并加载。

SqlMapClient节点配置中,configLocation属性配置了iBATIS映射文件的路径及名称,dataSource属性引入了数据源。

4.3 业务逻辑层设计与事务管理

业务逻辑层是系统架构中核心价值的部分,它主要实现业务规则制定、业务流程的实现等与业务需求有关的系统设计。系统业务逻辑层的设计,采用接口和实现分开的原则,业务逻辑组件接口定义该组件包含的功能,实现类提供该组件的实现。在轻量级JavaEE架构中,DAO组件将事务管理延迟到业务逻辑层管理。通过Spring的声明式事务管理,让业务逻辑层对象的方法具务事务性。

4.4 Spring与Struts2整合管理Action

本系统采用Spring IoC容器来管理业务逻辑组件,利用依赖注入为Action注入业务逻辑组件。Spring插件是通过覆盖Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象时,Spring插件会用Struts2配置文件中的class属性去和Spring 配置文件中的id属性进行关联,如果属性名相同,则由Spring创建,否则由Struts2框架自身创建,最后由Spring来装配。

4.5 Spring整合Log4j实现日志管理

Log4j是Apache的一个开源代码项目,它提供了一种细腻的日志管理方式,通过一个配置文件,可以多选择的控件每条日志的输出格式和目的地;通过定义信息的级别,可灵活开关代码中的反馈信息。通过Spring来使用Log4j,可以使Log4j的配置更简单灵活。

5 总结

本文主要介绍该系统各个功能划分,系统框架整合,在该整合框架中如何实现产品维护、订单维护和生成销售分析图等功能。

参考文献

[1]梁建全,周力,孟志勇,田利军.轻量级javaEE框架整合方案[M].北京:人民邮电出版社,2008.

[2]叶健毅.javaEE Eclipse Struts2 Hibernate Spring框架整合应用案例(第2版)[M].北京:人民邮电出版社,2009.

作者单位

spring框架范文5

关键词:Spring;非侵入式;松耦合;高可配;面向切面

【分类号】TP393.07

1 引言

EJB的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。为了解决企业级应用开发的复杂性,Spring技术诞生了。Spring是一个开源框架,是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。Spring使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。

2 Spring技术及特点

2.1 Spring框架

核心Spring容器

容器是Spring框架最核心的部分,它负责Spring应用中的Bean的创建、配置和管理。所有的Spring模块都构建于核心容器之上。

Spring的AOP模块

在AOP模块中,Spring对面向切面编程提供了丰富的支持。这个模块是Spring应用系统开发切面的基础。与依赖注入一样,AOP可以帮助应用对象解耦。借助于AOP,可以将遍布应用的关注点从它们所应用的对象中解耦出来。

数据访问与集成

Spring的ORM模块建立在对DAO的支持之上,并为某些ORM框架提供了一种构建DAO的简便方式。Spring对许多流行的ORM框架进行了集成,包括Hibernate、JDO等。

WEB和远程调用

MVC模式已经被普遍的接受为一种构建Web应用的方法,它有助于将用户界面逻辑与应用逻辑分离。Spring集成了多种流行的MVC框架,并且自带了一个强大的MVC框架,提升了Web层技术的松耦合性。

2.2 Spring的主要技术特点

轻量--从大小与开销两方面而言Spring都是轻量的。Spring应用中的对象不依赖于Spring的特定类。

面向切面--Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开放。

容器--Spring包含并管理应用对象的配置和生命周期,可以配置每个Bean如何被创建以及它们是如何相互关联的。Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大的并难以使用。

框架--Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。

3 Spring在网络管理中的应用

3.1 Spring与网络管理结合的优势

如果将Spring技术应用到网络管理领域,则可以使网络管理系统同样具有Spring的诸多优势。同时,还可以利用已经实现的Spring通用服务和集成框架,使网络管理系统更能适应未来发展的需要。更为重要的是,可以在最大程度上减少网络一致化过程所需要完成的工作。

利用Spring技术,能方便地实现各个网络管理功能模块之间的相互调用以及信息传递,这样就可以通过增加新的服务模块来实现新的功能,而不必对整个系统进行重新编写和重载,便于网络管理系统功能的扩充。

3.2 传统网络管理系统存在的问题

传统的网络管理系统管理构架曾经取得了巨大的成功,极大地推动了网络的发展。但是,随着新一代网络的快速进步,它的一些缺点也慢慢显现出来,甚至制约了网络管理的进一步发展。主要问题有:

现在的网络终端千差万别,对于每种不同的设备、不同的软件平台都要开发出不同的应用程序,代码的可移植性差、工程量大。

系统的可扩展性差。由于历史原因所致,该架构对于很多异构的子系统难以合成一个综合的管理系统,其本身也面临着可扩展性问题。

3.3 Spring的解决方案

本文在分析传统网管系统的问题的基础上,研究了Spring在BS环境中基于Spring技术的解决方案,并提出了一个简单的网络管理框架,如图2所示。

Web容器启动后,创建两个Spring容器:Spring根容器和Web容器。根容器负责业务处理,整个应用系统的核心处理单元,Web容器主要负责接收用户请求,并将解析后的参数等转交根容器进行处理,然后将处理结果通过HTTP响应返回给前台。

SpringWeb容器寄生于Spring根容器中,是根容器的子容器,可以访问根容器中所有的资源和服务。单Spring根容器作为单独的业务处理单元,不能定位SpringWeb容器的服务,这就将应用逻辑和视图显示处理隔离开来,降低了不同模块之间的耦合性,并使得应用系统更加容易扩展。

使用Spring技术与网管结合,使得网络管理中拓扑管理、故障管理、性能管理、配置管理等模块之间联系更加松耦合,模块彼此独立,更加容易复用和扩展。

4 结束语

Spring是分层的架构,开发者可以选择自己需要的层而不必关注不必要的部分。Spring使得对象管理集中化和简单化。Spring致力于简化企业级Java开发,促进代码松耦合。Spring成功的关键在于依赖注入和AOP。随着网络管理系统的发展,Spring必将在未来的综合网络管理系统中发挥越来越大的作用。

参考文献

spring框架范文6

关键字:轻量级J2EE;SSH;框架;无缝集成;病房信息管理系统

中图分类号:TP311 文献标识码:A 文章编号:2095-1302(2013)12-0052-04

0 引 言

时至今日,信息技术和网络技术发展迅速,轻量级J2EE平台在企业开发中占有绝对的优势,越来越多的企业使用基于J2EE的开发平台进行Web应用开发。传统的J2EE框架具有对服务器要求高、耦合度高等缺点,这样就限制了Web系统的开发效率。轻量级J2EE框架不但保留了传统的J2EE框架良好的可扩展性、可维护性、安全性等特点,并且还具有开发灵活简单、部署成本低、各层无缝集成、耦合度低、后期维护方便等优点。

本文将就J2EE框架的特点,来讨论J2EE的轻量级SSH(Struts2+Spring+Hibernate)框架,对各层的集成方案进行研究,并通过医院病房信息管理系统项目具体分析SSH框架的应用。

1 轻量级J2EE中SSH框架的研究

轻量级J2EE框架是一种开源的框架,跟传统的J2EE基本框架一样。根据它的功能,将其应用分为表示层、业务逻辑层和数据持久层,各层之间以松耦合的方式耦合在一起,各组件并不以硬编码方式耦合。SSH架构中Struts用来实现表现层,直接面向用户,响应用户的请求,并向用户提供其所需数据;Spring实现业务逻辑层,借助IoC容器和AOP实现,集中处理系统的企业级服务;Hibernate实现数据持久层,负责数据的持久化以及Java对象与关系数据库的ORM功能。

1.1 SSH框架

1.1.1 Struts2框架

Struts是现今Web开发技术中运用最广泛的开源框架,是最流行的MVC组件,可以实现表示层,主要用于管理用户请求、调用业务层逻辑和处理异常。Struts框架具有组件的模块化、灵活性和重要性的优点。Struts可以更清晰地把模型、控制器和视图分开,简化了基于MVC的Web应用程序的开发,使页面更加简洁,以便于后期项目的维护和升级。

在过去,Struts1是所有MVC框架中的胜利者,但随着Web技术的不断发展和Web应用的不断扩大,Struts1的缺陷和局限也逐渐显现出来。Struts2是在Web Work基础上发展来的,它使用拦截器作为处理方式,以用户的业务逻辑控制器为处理目标,创建一个控制器。由它负责处理用户请求,处理用户请求时回调业务控制器的execute方法,Struts2将怎样的视图呈现到用户是由该方法的返回值决定的。

Struts2的工作流程:Web应用启动时,Struts框架加载并初始化Actionservlet,并从Struts.xml中读取存放到各种配置对象中的配置信息。当Actionservlet接收到用户请求时,执行一连串的流程,最后指向的JSP组件生成动态页面,并且返回给用户。Struts2的框架结构如图1所示。

1.1.2 Spring框架

Spring是用在业务层的框架,Spring致力于J2EE应用各层的解决方案,而不是仅仅只专注于某一层的解决方案。Spring始终贯穿表示层、业务逻辑层和数据持久层,它提供了管理业务对象的一致方法并且鼓励对接口编程而不是对类编程的良好习惯。Spring提供了一个细致完整的MVC框架,为模型、视图和控制器之间提供了一个非常清晰的划分,各部分耦合度极低。Spring的MVC是非常灵活的,它完全基于接口编程,真正实现了与视图无关。Spring通过IoC依赖注入、AOP应用、面向接口编程,来降低业务组件之间的耦合度,增强系统扩展性。

Spring能简化企业级开发,大部分情况下可以用简单的Java bean来代替实现复杂的EJB。在程序设计中可以充分利用Spring依赖注入的特性,当修改类的属性时不用直接修改类的代码,而只用在配置文件里面进行简单的设置。

1.1.3 Hibernate框架

Hibernate是一个面向Java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中区。Hibernate不仅管理Java类别到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度缩短使用JDBC处理数据持久化的时间。

Hibernate的优势包括带有开源和免费的License,可方便在需要时研究源代码,并改写源代码,或进行功能定制;其次是采用轻量级封装,从而避免了引入过多复杂的问题,调试容易,可减轻程序员负担;第三是具有可扩展性,API开放,在功能不够用的时候,可自己编码进行扩展;同时还包括开发者活跃,产品有稳定的发展保障等。Hibernate的结构框架如图2所示。

1.2 SSH框架的整合

1.2.1 Spring与Struts2的整合

如果要达到Struts2与Spring集成的最佳效果,必须使用Spring的IoC容器进行Action的管理,并利用依赖注入为控制器注入业务逻辑组件。这种整合流程的组件协作图如图3所示。

在图3中,Struts只是配置一个伪控制器,这个伪控制器的功能实际由Spring容器中的控制器来完成,这就实现了让核心控制器调用Spring容器中的Action来处理用户请求。

在这种整合策略下,处理用户请求的Action由Spring插件负责创建,但Spring插件创建Action实例时,并不是利用配置Action指定的class属性来创建该Action实例,而是从Spring容器中去除对应的Bean实例来完成创建的。Spring容器为控制器注入业务逻辑组件,这也是Spring和Struts整合的关键所在。

1.2.2 Spring与Hibernate的整合

Spring使用DAO对象通常的事务管理用来分离数据访问和事务处理,无论是在多个DAO接口还是在多方事务的情况下,Spring都能使多种DAO对象无缝地协同工作。Spring把数据源、Hibernate的会话工厂以及应用中的DAO实现类通过一致的配置管理起来,通过IoC机制自动维护它们之间的关系。Spring与Hibernate的无缝集成为我们提供了自动的Hibernate会话管理、声明性的事务管理,极大地减小了开发时的编码量,提高了开发的效率,增强了代码实用性。

2 SSH框架的应用

本文以医院病房管理系统实验室的项目为应用实例,该项目就是采用基于MVC模式的J2EE体系结构来实现B/S的多层Web应用,该项目的Web分为表示层、业务逻辑层、数据持久层以及数据库层几层。项目以MyEclipse、Dreamweare为软件工具,Mysql作为后台的数据库,选择Java、JSP、JavaScript、HTML作为应用开发工具,运用Tomcat服务器技术,项目完全基于B/S模式进行设计并实现。

图4所示是其SSH框架结构。在整个项目中,表现层的实现是基于Struts架构。Struts的核心是控制器组件ActionServlet,在设计每个模块的控制器组件时,都会定义一个配置文件struts.xml来配置业务流程。业务逻辑层的数据来源于数据持久层Persistent Object和表示层FormBean,是表示层和持久层进行数据通信的中间层。它负责封装持久层提供的数据对象,并为表现层提供功能接口,由Business组件实现。数据持久层是基于Hibernate来实现的。实现过程中,需要创建配置文件、定义持久化类、对持久化对象进行映射定义和实现持久化操作。在系统中采用XML进行定义数据库连接的各种参数以及供Hibernate管理事务、产生SQL和管理JDBC连接时所涉及的数据映射文件等,Hibernate根据这些属性来连接数据库。

2.1 Struts与Spring集成

3 结 语

在SSH架构中,Struts作为前台控制框架简化了程序的开发,使得界面开发人员和Java程序员实现了很好的分离,增强了项目的可扩展性,提升了项目的开发效率,降低了开发成本。Spring则通过控制反转,层层回调,极大地减少了业务逻辑代码。而Hibernate则极大地减少数据库相关操作代码,实现一个简单高效的持久化。

SSH框架的使用有效地缩短了系统开发周期,提高了软件开发效率,简化了程序代码,使得程序的层次结构更加清晰,提高了编程效率,实现了用户界面、业务处理和数据访问的分离。

参 考 文 献

[1]吕毅,葛玮,郝克刚.Spring轻量级J2EE开发框架的研究[J].计算机与发展,2006(12):214-217.

[2]徐鹏.轻量级J2EE框架的研究与应用[D].成都:电子科技大学,2007.

[3]使用JSP开发Web应用系统[M]. 北京:清华大学出版社,2009.

[4]蒲子明,许勇,王黎,等.Struts2+Hibernate+Spring整合开发技术详解[M]. 北京:清华大学出版社,2010.

[5]李刚.轻量级Java EE企业应用实战[M]. 3版.北京:电子工业出版社,2012.

[6]李廷全,丁晨路,周超.基于UML的医院信息系统建模[J]. 电脑知识与技术,2010(1): 131-133.