首页 > 文章中心 > spring框架

spring框架

开篇:润墨网以专业的文秘视角,为您筛选了八篇spring框架范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

spring框架范文第1篇

关键词 spring ;Acegi ;认证; 授权

引言

近年来,随着Internet技术的迅猛发展,计算机网络已深入到了人们的工作、学习和日常生活中,于是,怎样构建安全的web应用也成为了当前最热门的话题。Spring是一个基于IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的构架多层J2EE应用系统的框架。Spring框架正在以其优良的特性吸引了越来越多的开发人员的关注,并在大量的系统开发中被使用。然而,现有的Spring框架本身并没有提供对系统安全性的支持,本文通过介绍一种可用于Spring框架中的安全框架Acegi,并对在Spring框架中使用Acegi实现安全用户认证和资源授权控制进行了较深入的研究和扩展,同时给出了可行的解决方案。

Spring框架和Acegi安全框架介绍

1、spring 框架

Spring框架是由Open Source开发的一个优秀的多层J2EE系统框架,它为企业级应用提供了一个非常轻量级的解决方案,大大地降低了应用开发的难度与复杂度,提高了开发的速度。

Spring框架的核心是IoC和AOP。IoC是一种设计模式,即IoC模式。IoC模式进一步降低了类之间的耦合度,并且改变了传统的对象的创建方法,实现了一种配置式的对象管理方式,Spring框架中由IoC容器负责配置性的对象的管理。IoC模式极大的提高了系统开发与维护的灵活性。

AOP是一种编程模式,它是从系统的横切面关注问题。传统的面向对象编程OOP主要从系统的垂直切面对问题进行关注,对于系统的横切面关注很少,或者说很难关注,这样当考虑到系统的安全性、日志、事务以及其他企业级服务时,OOP就无能为力了,只能在所有相关类中加入类似的系统服务级的代码。AOP为解决系统级服务问题提供了一种很好的方法。AOP将系统服务分解成方面看待,并为类提供一种声明式系统服务方式。Java类不需要知道日志服务的存在也不需要考虑相关的代码。所以,用AOP编写的应用程序是松耦合的,代码的复用性就提高了。

2、Acegi 安全框架

借助于Spring框架,开发者能够快速构建结构良好的WEB应用,但现有的Spring框架本身没有提供安全相关的解决方案。同样来自于Open Source 社区的Acegi安全框架为实现基于Spring框架的WEB应用的安全控制提供了一个很好的解决方案。Acegi本身就是利用Spring提供的IoC和AOP机制实现的一个安全框架,它将安全作为J2EE平台中的系统级服务,以AOP Aspect形式。所以借助于Acegi安全框架,开发者能够在Spring使能应用中采用声明式方式实现安全控制。

Acegi安全框架主要由安全管理对象、拦截器以及安全控制管理组件组成。安全管理对象是系统可以进行安全控制的实体,Acegi框架主要支持方法和URL请求两类安全管理对象;拦截器是Acegi中的重要部件,用来实现安全控制请求的拦截,针对不同的安全管理对象的安全控制请求使用不同的拦截器进行拦截;安全控制管理部件是实际实现各种安全控制的组件,对被拦截器拦截的请求进行安全管理与控制,主要组件包括实现用户身份认证的AuthenticationManager、实现用户授权的AccessDecisionManager 以及实现角色转换的RunAsManager。安全管理对象、拦截器以及安全控制管理组件三者关系如图1所示。

Acegi安全框架在基于Spring框架的系统中的应用

1、分析系统安全性需求

首先,需要明确进行安全控制的对象,可为业务方法和URL资源。

其次,需要进一步明确,系统身份认证资料和资源授权信息的数据持久化形式。

2、Acegi安全系统数据库设计

在Acegi框架中支持多种安全信息的持久化方式,可以在配置文件中配置或存放在关系数据库。由于在实际应用中,需求是经常发生变化的。所以,在配置文件中配置是满足不了实际应用需求的。然而,Acegi本身对权限表的设计非常简单,users表{username,password,enabled} 和authorities表{username,authority},这样简单的设计肯定无法适用复杂的权限需求。为了解决权限管理的复杂性,在这里引入了role(角色)的概念,使得用户和权限分离,一个用户拥有多个角色,一个角色拥有多个相应的权限,这样就更灵活地支持安全策略。

同时,为了更好地配合Acegi安全框架,还引入resource(资源)的概念,资源可分为URL和FUNCTION(方法)两种,一个权限可以对应多个资源。具体的数据库设计见图2。

spring框架范文第2篇

随着互联网宽带技术应用的成熟,以及物流和支付系统的完善,电子商务成为互联网普及应用的主流,影响着千家万户的生活和经济行为,并日益成为社会商业活动的重要形式。因此,各行业均希望可以快速展开网上营销渠道。新形式下,电商网站开发人员如何缩短开发周期,进一步提高工作效率,是每一个程序员所面临的问题。各大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框架范文第3篇

对于POJO的开发,存在着两种框架EJB3.O和Spring,这两个框架组件的核心设计理念是相同的:把中间件服务传递给松散耦合的简单旧式Java对象(POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立继承结构和构建应用程序的时候都有高度的灵活性。

但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。

注入方式

Spring仍然是依赖XML来注入到POJO的,XML写起来比较麻烦,虽然流行的IDE都有图形化的编辑界面,但还是很难操作,同时Spring使用XML来说明配置声明,也会产生一个冗长的配置文件。这些配置文件必须在运行时才能知道其中的错误,哪怕是一个大小写的问题。因此Spring目前也在考虑如何简化XML配置文件。

EJB3.0使用Annotation,这要比Spring简单明了,但其功能也受到一定的限制。Spring基于XML配置的依赖注入语法复杂,但功能却非常强大。可以将任何一个POJO注入到另一个POJO,包括应用程序中自定义的那些POJO。

松散耦合度与服务集成

Spring与应用服务器采取松散耦合,作为Spring设计的核心理念,这样增强了Spring的灵活性,但同时也增加了开发的复杂度,因为如此一来,开发者就必须弄清楚Spring对应的应用服务器的。而事实上,这些与应用服务器的关联代码对于开发者大都是不必要的,开发者往往只需要关系业务逻辑就可以了。使用Spring的声明式事务服务来管理Hiber-nate事务,必须在XML配置文件中明确的配置Spring的事务管理器(TransactionManager)和HibernateSessionFactory对象。

EJB3.0框架与应用服务器结合较紧密,服务被集成封装,隐藏在EJB接口后面。因为EJB3.0本身就是J2EE标准的一部份,因此,它与其他J2EE服务如JCA,JMX都结合的很好。而缺点也正是结合太紧密,不够灵活。

对Web框架的支持度

Spring在这方面要优于EJB3.0,几乎 所有开源项目都有这个特性――对现有的 流行技术支持度都非常好。Spring可以灵活地集成各种Web框架和模板语言,另外自身也提供了相当强大的Spring-MVC框架,而且可以很好的结合springwebflow,webwork,struts等。同时随着Spring Web Services 1.0正式公布,SpringNweb service开发明显增强了,这无疑使Spring爱好者开发者更加热衷于Spring。 EJB3.0标准集成JSF,但JSF目前并不成熟,也没有得到预期的效果。同时EJB3.0对其他web框架支持也比较差。

开源与标准规范

spring框架范文第4篇

关键词:Spring; Struts2; IBatis;框架

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)27-0056-03

Abstract:Base on a brief reseacrch of the three frameworks Spring,Struts2 and IBatis,the paper raises an idea of the Struts2+Spring+IBatis development framework,and gives the implementation details。The combination of three types of framworks can realize the tired application, giving full play to their strengths of the three frameworks, improving efficiency, and is easy for system expansion and maintenance.The integration framework has been successfully applied to E-school Calendar.

Key words: spring;struts2; ibatis;framework

近年来随着我国高等教育的不断改革和蓬勃发展,大学生校园活动也日益丰富多彩,利用信息化手段将各种分散校园活动和教育活动资源实现共享是促进高等教育发展的重要途径。电子校历系统能够定期从指定页面抓取信息,并以日历的形式,按照天、周、月为全校师生提供了教学、讲座、会议等各类信息,提高了信息的记录、查阅以及传播速度,并且成本低,效率高,互动性强。。

本文结合Struts 2、Spring、IBatis技术, 提出了基于J2EE平台B/S结构的电子校历系统。该系统实现了表示层、业务层、持久层间的松耦合, 提高了代码的复用性,增强了系统的灵活性和可维护性, 最终提高了软件的质量。

1 Struts2框架

S t r u t s2 是开发基于模型( M o d e l ) -视图( V i e w )- 控制器(Controller) (MVC) 模式的应用架构的开源框架[1]。Struts2以WebWork为设计核心,允许用户的业务逻辑控制器与Servlet API分离,用户的请求由大量拦截器来处理。图1是Struts2的体系结构图。

当浏览器发送了请求后,Struts2拦截器链拦截请求并加以处理,核心控制器FilterDispatcher根据请求决定调用合适的Action,Action将处理结果的逻辑视图返回,最后Struts2框架将逻辑视图映射成实际路径。Struts2框架结构图如图1所示。

2 Spring框架

Spring是一个开源框架,为简化企业级系统开发而诞生的轻量级解决方案[2],可建立“快装式企业应用”。 Spring是轻量级的框架,简单来说,它完全可以在只有1M多大小的JAR文件里,而且所需的处理开销也很小。 它可以独立于各种应用服务器,也能提供应用服务器的功能,如声明式事务等。除此之外,还提供了多种方法进行的持久化数据库的解决方案。Spring具有的这些特点使开发者只需要关注业务逻辑的开发即可,代码编写更干净且易于测试。

3 IBatis框架

IBatis框架能为Java 应用提供更好地设计并实现数据持久层[3],它由SQL Maps 、DAO(Data Access Object, 数据访问对象)及一些实用工具组成。SQL Maps是IBatis Database Layer 架构最重要的组件[4], 它由简单的XML 配置文件将Java Bean 映射成SQL 语句,极大地减少访问数据库的代码。利用DAO 可以使开发者在不知道数据访问层的实现得情况下使用简单的接口组件访问数据库,为系统设计提供了更大的自由空间。

4 系统的设计与实现

4.1系统功能设计

通过对校历使用群体的调查,并结合这些群体使用校历的实际情况,可将电子校历系统划分为用户管理、节假日管理、通知公告管理、每周会议管理等八个功能模块,系统的总体功能划分如图2所示。

4.2基于Struts2+Spring+IBatis整合框架的系统架构设计

系统体系架构是开发复杂应用系统的关键。在J2EE平台下开发Web项目需要同时满足系统的功能性和非功能性需求,均衡两者之间的矛盾。本系统采用基于Struts2+Spring+IBatis的整合框架,充分发挥三种框架各自的优势,而且提高系统的开发效率,实现了B/S模式的多层Web应用。整合框架的系统架构图如图3所示。

如图所示,表示层Struts2利用核心控制器FilterDispatcher拦截了用户的所有请求,分析URL地址后调用相应Action类处理[5],Action则调用相应的业务逻辑组件来处理。Spring在运行期利用依赖注入机制将组件之间的依赖关系注入到组件中,使各应用组件以松耦合的方式组织在一起,提高了系统的灵活性和可扩展性。作为持久层的IBatis框架利用其配置文件Config.xml与Spring框架整合在一起工作。

4.3系统实现

4.3.1基于struts2框架的表示层的实现

本系统的表示层是基于Struts2 框架,由JSP页面、Action类、web.xml、struts.xml配置文件等构成。所有的用户发出的请求都由Struts 2的核心控制器FilterDispatcher拦截, 并将所有请求转入到Struts2框架中, 调用相应的Action类来处理,Struts 2的核心控制器根据Action类返回处理结果的逻辑视图, 结合struts.xml的配置, 将逻辑视图映射成实际路径。struts.xml 的部分代码如下:

/front/festival.jsp

其中action的name属性值为ajaxGetFestival,它的class属性为applicationContext.xml中的bean 的id值。如,这样使得Struts2框架与Spring框架整合起来。Action方法处理后将返回一个字符串, 一个字符串对应一个逻辑视图。如果list action返回的字符串是SUCCESS,则表示业务逻辑处理成功,它对应result子元素的name属性success,而该success将对应一个显示视图/front/festival.jsp。 通过在struts.xml文件配置struts2的拦截还可以实现输入校验、防止表单的重复提交、身份验证等操作。

4.3.2基于Spring框架的业务逻辑层的实现

在本系统中,通过应用Spring 的依赖注入、Spring DAO模式、IoC容器、面向接口编程来处理应用程序的业务逻辑和业务校验等功能[6]。Spring 通过配置文件applicationContext.xml 来配置各个业务对象与持久化对象的关系,并管理对象的创建与销毁,部分核心代码如下:

usercontrolService和usercontrolDAO是两个轻量级的bean,其中usercontrolService所对应的实现类为UsercontrolServiceImpl,这个类中有一个属性为usercontrolDAO,ref指向的就是usercontrolDAO组件。Spring会根据该配置自动将usercontrolDAO对应的usercontrolDAOImpl组件注入到 UsercontrolServiceImpl 组件中去。而通过设值注入方式,在一定程度上降低了组件之间的耦合,极大改善代码的可重用性。

4.3.3基于IBatis的数据持久层的实现

本系统的数据持久层是由IBatis 框架来实现的。IBatis 框架根据xml 文件中配置信息建立实体对象与数据库表之间的映射。用户管理的xml文件为user.xml,其内容如下:

SELECT * FROM user, institute WHERE user_institute_id = institute_id

AND id = #value:INTEGER#……

5 结束语

采用Struts2+Spring+IBatis轻量级整合开发框架,实现了清晰的MVC控制模式,降低各层之间的耦合性, 提高了软件开发效率,可维护性和灵活性较高。利用该整合开发框架开发的电子校历系统,不仅提高了开发效率,实现了信息资源共享,并且使系统具有良好的可维护性和可扩展性。

参考文献:

[1] 孙鑫.Struts2深入详解[M] .电子工业出版社,2008.

[2] 张慧丽. 基于Spring的网络管理系统设计与开发[J].微计算机信息,2007(21):23-25.

[3] 吴建设.基于数据持久层的IBatisDAO研究和应用[J].黄实理工学院院报,2003(4):123-125.

[4] 封小钰,王飞.基于iBATIS数据库访问技术的研究与应用[J].电脑开发与应用,2008 (6): 132-134.

spring框架范文第5篇

关键字:轻量级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.

spring框架范文第6篇

关键词:题库系统;Spring;Struts;Hibernate;自动组卷

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 20-0000-02

1 系统开发技术

1.1 Struts框架。Struts框架是由Apache提供的一个开源框架,很好的实现了MVC设计模式。它运用Struts标签和JSP页面来生成视图,ActionServlet类和用户自定义Action则构成了控制器,而模型主要由封装了各种业务逻辑的JavaBean来实现。Struts框架设计理念是通过控制器将表示逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性。用户利用Struts框架不仅可缩短开发Web应用的时间,而且能够很好地实现各层之间的散耦合。

1.2 Hibernate框架。Hibernate是一个采用ORM(Object Relation Mapping)模式的优秀的数据持久层框架,它的目标是简化开发者在数据持久化方面的编程任务。它提供了从Java类到数据库表的映射,也提供了数据查询和恢复机制。ORM模式是指关系对象映射,它把对象映射到基于SQL的关系模型上,同时在JDBC方式上进行轻量级对象封装,开发人员只需按照面向对象的编程思想来操作持久化类实例,就可完成对数据库表里的数据的操作,而不需要对JDBC进行硬编码,大大提高了系统的性能。同时,Hibernate还几乎支持所有流行的数据库,可与大多数主流J2EE应用服务器的应用服务器良好集成。

1.3 Spring框架。Spring是一个轻量级J2EE框架,它通过依赖注入(Dependency Injection,DI)和基于(Aspect Oriented Programming,AOP)的声明式事务管理为企业应用的开发提供了一个很好的解决方案,Spring核心容器的主要组件是BeanFactory,BeanFactory负责对JavaBean配置、管理、创建。运用Spring的依赖注入机制可以在程序运行期间动态为组件注入所需资源,而无需在编写组件代码时就加以指定,从而在相当程度上降低了组件之间的耦合度。同时在Spring框架上可以很方便实现其它框架的整合,并且这些子框架之间可以彼此相互独立。

1.4 SSH架构整合。SSH是Struts-Spring-Hibernate的缩写,整合SSH 框架就是使用3种框架中的最优秀部分,Struts框架有成熟的标签库,Web层主要由Struts框架实现;而Spring框架同Struts框架能够完美地结合,并在事务管理和依赖注入方面有着独到之处,主要用于业务逻辑层;Hibernate使用O/R Mapping技术把模型和关系数据库表进行了映射,通过持久化类和表的映射关系实现了数据持久化层,用于数据持久层方面。因此,在项目中利用Struts框架作为系统的基础框架,Hibernate框架来提供持久层支持,业务层用Spring支持。

2 题库系统功能描述

题库系统的操作对象主要有教师、学生和管理员三种。学生通过登录网站可以完成在线考试、成绩查询及部分个人基本信息修改等操作。教师通过登录后台管理系统页面后,可以进行题库信息管理、试卷管理、科目等基础数据设置以及数据库的备份等操作。管理员除了教师身份所具有的全部操作外,还可对用户信息进行管理。题库系统总体功能结构如图1所示。整个题库系统由考试管理子系统、题库信息管理子系统、试卷管理子系统和系统设置子系统四个部分组成。

考试管理子系统:主要对学生在线考试过程进行管理,学生试卷提交以后,系统可以对客观题进行批卷,并提供试卷分析功能。

题库信息管理子系统:主要完成试题的增、删、改、查功能,教师可以通过该子系统完成科目、知识点和题型的设置,并提供多种试题查询方式。

试卷管理子系统:完成组卷和套题管理。系统根据教师设定的科目、题型、题量以及难度系数等条件进行抽题自动生成试卷,同时还提供了教师手工组卷方式,对于生成但未的试卷可以进行修改。对于的试卷系统可进行管理。

系统设置子系统:主要对系统一些基础信息进行设置,管理员通过用户信息模块可以添加、删除、修改学生信息,设置教师权限;并能对试题库进行备份。

图1 题库系统总体功能结构

3 基于Struts+Hibernate+Spring框架的自动组卷模块实现

自动组卷模块是依据教师给定的一些参数指标来生成试卷。常见的参数主要有总分、题型、每种题型的题量、难度系数等。为了能使生成的试卷更能符合教师的需要,教师还可在系统自动生成的试卷的基础上进行适当的调整。从自动组卷模块的扩展性能出发,给出如下部分实现代码。

3.1 自动组卷功能的表示层实现。表示层的实现是基于Struts框架来完成的。通过Struts框架来接收用户在组建试卷页面上设定的参数信息,分发用户请求,调用相应的业务逻辑并反馈结果。其中ActionServlet用来将用户的请求委派给相应的Action。而Action不进行具体的业务处理,它负责向业务层传递参数并把各种事件委托给相应的业务逻辑组件处理,业务逻辑组件模型则由管理服务组件的Spring容器通过依赖注入进行提供。在Struts框架中通过配置文件struts-config.xml来描述Struts和Spring的整合以及各个Action的配置。

struts- config.xml对自动组卷功能的配置项如下:

scope="request" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" >

其中ExamPaperForm负责接收组卷策略信息,并将信息传递给Action 的子类AddExamPaperAction进行处理。

AddExamPaperAction的关键代码如下:

public class AddExamPaperAction extends Action {

private PaperBizInterface paperBiz = null; //通过Spring注入业务处理模型组件

public PaperBizInterface getPaperBiz () { ……… }

public void setPaperBiz (PaperBizInterface paperbiz) {…….}

public ActionForward execute ( ){

try {

ExamPaperForm paperform = (ExamPaperForm)form;

paperBiz.creatpaper(paperform ); // 生成试卷。

…….

}catch(Exception e){}

…… }

3.2 自动组卷功能的业务层实现。业务层的实现采用Spring框架完成。该层作为表示层和数据层进行数据通信的中间层,负责封装数据层提供的数据对象,并为表示层提供功能接口。在该模块中定义了生成试卷功能的业务接口PaperBizInterface和该接口的实现类PaperBizImpl。通过在PaperBizImpl类中定义了creatPaper() 方法来完成试卷的生成。

3.3 自动组卷功能的持久层实现。该层使用Hibernate框架技术来实现。在实现的过程中,需要配置hibernate.cfg.xml文件定义连接数据库的一些属性以及类与表之间的映射定义,hibernate根据这些属性来连接数据库,间接实现对数据库的操作。组卷模块中PaperDaoInterface接口定义了用户访问数据的统一接口。其实现类PaperDAOHibimpl则封装了通过Hibernate 访问具体表获取持久化对象的CRUD 操作,用户通过调用PaperDAOHibimpl类中相应方法,即可方便的完成试卷的生成操作。PaperDAOHibimpl类的部分代码如下:

public class PaperDAOHibimpl extends HibernateDaoSupport implements PaperDaoInterface {

public List search(ExamPaperForm paperform) {

… …

List examList = super.getHibernateTemplate().findByExample(paperform);

… …

return examList;

}

public void save(Ex_paper ex_paper)

{ super.getHibernateTemplate().save(ex_paper); }

… …

}

由上可知,运用SSH技术在实现自动组卷功能过程中,只需对相关的Action进行编码,通过Action调用相应的业务逻辑,并通过hibernate完成对数据库的操作,对于各层要调用的组件,在编码时只需通过相应的接口类型表示就可以,这样降低了组件之间的耦合度,提高了系统灵活性。

5 结束语

运用Spring、Struts和Hibernate三种框架技术,本题库系统已经基本完成。实践证明,SSH架构可以很好地实现系统表现层、业务层及数据持久层的分离,简化了系统的开发过程,使系统具有较高的运行效率、良好的可扩展性。

参考文献:

[1]谢辛.J2EE轻量级SSH架构无缝集成的研究[J].科技信息,2009(1).

spring框架范文第7篇

关键词:Java;MyEclipse 7.0;TestCase;Spring;Junit;测试

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

Spring's Bean with a TestCase for Unit Testing

XU Cai-yun

(School of Engineering, Nanjing University of Finance & Economics, Nanjing 210046, China)

Abstract: With the increasingly complex software project, software testing in the development of software status is becoming more and more important. Unit tests are the software development test process, the most basic request programmers as quickly as possible, so that they found the problem in the software development process to establish efficient incident response mechanism to lay a solid foundation. Here introduces JUnit framework of some actual examples to explain, and combine with the Junit frame under the framework of TestCase are Bean unit testing method.

Key words: Java; MyEclipse 7.0; TestCase; Spring; Junit; test

随着开发系统的增大,利用现有的框架进行软件的开发是越来越普遍了。这样不但能缩短代码开发周期,还能减少项目成本。但是随之也带来了麻烦:对框架的测试。用TestCase进行单元测试很好的解决了这个问题。特别是像Spring的框架,如果有很好的单元测试,能够加快对框架的开发,提高代码的准确率。

1 Junit框架

Junit是基于面向对象构建的Java单元测试框架。它是开放源代码项目,可按需要进行扩展。Junit 共有七个包,核心的包就是junit.framework 和junit.runner。Framework包负责整个测试对象的构架,Runner负责测试驱动。

Junit有TestSuite、TestCase、TestResult、TestRunner这四个重要的类。前三个类属于Framework包,后一个类在不同的环境下是不同的。本例使用的是文本测试环境,所以用的是 junit.textui.TestRunner。各个类的职责如下:

1) TestSuite,负责包装和运行所有的TestCase。

2) TestCase,客户测试类所要继承的类,负责测试时对客户类进行初始化,以及测试方法调用。

3) TestResult,负责收集TestCase所执行的结果,它将结果分为两类,客户可预测的Failure和没有预测的Error。同时负责将测试结果转发到TestListener(该接口由TestRunner继承)处理;

4) TestRunner,客户对象调用的起点,负责对整个测试流程的跟踪。能够显示返回的测试结果,并且报告测试的进度。

另外Junit还有两个重要的接口:Test和TestListener。

1) Test, 包含两个方法:run() 和countTestCases(),它是对测试动作特征的提取。

2) TestListener,包含四个方法:addError()、addFailure()、startTest()和endTest(),它是对测试结果的处理以及测试驱动过程的动作特征的提取。

2 测试思路

通过spring对xcybean.xml的加载,并取得student bean,确保spring xcybean.xml文件格式配置的准确;通过对student bean方法的调用,确保xcybean.xml文件spring对象注入成功和调用方法的功能实现。具体步骤如下:

1) 创建测试单元TestCase,继承TestCase。

2) 重载TestCase类的setUp函数。

3) 在setup函数中,加载spring的xml文件。

4) 在setup函数中,取得要测试的spring bean对象。

5) 创建测试函数testAny().

6) 在测试函数testAny中调用bean对象的方法。

3 源代码

3.1 springxcybean.xml文件

"/dtd/spring-beans.dtd">

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@127.0.0.1:1521:MYORACLE

test

test123

20

10

1

5

3.2 StudentDealImpl 类

public class StudentDealImpl {

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {

this.jdbcTemplate = jdbcTemplate;

}

public int insertStudent(int id, String name, int age){

String sql = "INSERT INTO Student (ID, NAME, AGE) "

+ " values ('"

+ id

+ "', '" + name + "', '"

+ age + "')";

System.out.println("sql:" + sql);

Connection conn = null;

Statement st = null;

int reSult = 0;

try {

conn = jdbcTemplate.getDataSource().getConnection();

st = conn.createStatement();

reSult = st.executeUpdate(sql);

mit();

}

catch (SQLException e) {

}

finally {

try {

if (st != null)

st.close();

}

catch (SQLException e) {

}

try {

if (conn != null)

conn.close();

}

catch (SQLException e) {

}

}

System.out.println("reSult:" + reSult);

return reSult;

}

}

3.3 测试代码

public class xcytest extends TestCase {

private static final String[] xmls = {"xcybean.xml"};

private StudentDealImpl studentobj = null;

ApplicationContext ac = null;

protected void setUp() throws Exception {

ac = getSpringContext(xmls); //加载spring xml文件

studentobj = (StudentDealImpl)ac.getBean("student");//取得bean

}

private ApplicationContext getSpringContext(String[] paths){

return new ClassPathXmlApplicationContext(paths);

}

public void testAny() throws Exception {

int inti = studentobj.insertStudent(1,xcy,26);

if(inti == 1){

System.out.println("学生信息插入成功!");

}

}

}

4 结束语

本程序在windows xp,myeclipse7.0中调试通过。

本文只是通过一个小例子介绍了测试方法,TestCase对spring bean的测试实在太重要了。不但可以检查spring xml配置文件,还可以测试bean的功能函数。大大减少代码整合后的测试工作量。

参考文献:

[1] 马军,王灏.Java完全自学手册[M].北京:机械工业出版社,2006:226-246.

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

[3] 梁建全,周力,孟志勇,等.精通轻量级JavaEE框架整合方案[M].北京:人民邮电出版社,2008:183-211.

[4] 李钟尉,冯东庆.Spring应用开发完全手册[M].北京:人民邮电出版社,2007:99-112.

[5] 王东刚.软件测试与Junit实践[M].北京:人民邮电出版社,2004:168-195.

[6] 张大治,应群.精通Eclipse[M].北京:清华大学出版社,2006:341-365.

[7] 叶达峰.Eclipse编程技术与实例[M].北京:人民邮电出版社,2006:66-80,210-213.

spring框架范文第8篇

关键词:Spring;Struts ;Hibernate;SSH整合;网站建设

中图分类号:TP393文献标识码:A文章编号:1005-3824(2013)05-0063-05

0引言

在当今网络中,越来越多的系统以及应用趋向于Web开发,开发一个大型的企业级Web应用系统需要一个优质稳健的软件框架,以便前期开发中程序员的协同开发和后期应用系统的扩展和升级,但是Web开发中也存在一些问题,针对这种情况,本文提出利用现今流行的Struts+ Spring+ Hibernate三大J2EE框架设计实现一种轻量级的Web开发方案。在对三大框架优缺点进行分析后,提出将三大框架整合的思想,并实现整合步骤,最后以一个简单的网上出售商品实例来测试应用搭建的框架。

1SSH框架

目前较流行的集成框架SSH是一个由Struts+ Spring+ Hibernate三大框架整合而成的Web应用程序开源框架。

1.1SSH优缺点分析

Struts框架具有组件的模块化、灵活性和重用性的优点,同时也简化和清晰化了Web应用程序的开发,使得业务逻辑的实现是开发者最终关心的问题。Struts框架是开源软件,具有Taglib和页面导航的优势,同时提供Exception处理机制和数据库连接池管理,并且支持I18N。但是,当它转向展示层时,需要forward重新配置,服务器也可能需要重启,这样造成了操作繁琐。Struts的action必须是仅允许一个实例去处理所有请求的threadsafe方式,可能会引起线程安全问题。Struts的action和Web层耦合在一起使得测试不方便。Struts的类型转换是在不可配置的Class级别,对Servlet的依赖性过强。Struts处理action的时候是基于Class的Hibernate,很难在action的前和后进行操作。

Hibernate框架的透明性不是字节码增强程序实现的,而是Java的反射机制实现的。Hibernate性能非常好,也支持各种关系数据库。但是,它限制了对象模型的使用,例如,一个持久性类与多个表之间不能映射[1]。

基于反向控制和AOP的多层J2EE系统框架Spring能够有效地组织中间层对象,Spring专注于解决仅使用了Struts或其他J2EE API特制的framework剩下的问题,例如,消除对Singleton的过多使用,消除多样的自定义格式属性文件的需要,减少对接口编程而不是对类编程的代价,减少了对其API的依赖,使单元测试更简单,同时,为数据存取提供了一个一致的框架等。但是,现今Spring的普及度不高,并且Spring的很多代码都需要写在JSP中,同时又缺少一个公用控制器造成了控制器过于灵活的局面[2]。

当前,SSH是一个比较流行的开源且比较稳定的MVC框架,易于管理和测试,也适用于需求频繁变更的项目。

1.2SSH整合方案

系统应用框架根据MVC模式可分为表现层、业务层和持久层,各层之间都定义了数据对象,实现了各层之间的分离;另外应该对各业务模块之间的关系进行对比,充分考虑它们之间的松耦合,从而有效提高今后系统扩展集成的可能性。同时利用这种分层设计将Spring、Struts以及Hibernate 这3种开发框架有机地集成在一起[3]。

Struts框架比较完善,它具有成熟的标签库,在Web 层具有其他框架不具备的特定优势,因此将Struts框架作为表现层的主要框架;为了使业务逻辑层能够正常工作,通常采用Spring框架和Struts框架的有机结合体;在系统持久层方面采用Hibernate,使系统的数据保留得更持久,有效实现ORM,并且实现对JDBC轻量级的对象封装,有效建立Java对象模型,并使得其对象模型具有持久性[4]。

在构建系统模型的时候,通常要对工作对象进行细致的分析,根据其需求来完成模型的构建,在对Java对象进行基本构建时,运用SSH集成理念和Java 语言来对模型进行构建;最后再根据系统构建,将基本的DAO接口详细地描述出来,通过Hibernate框架实现DAO,并以之为基础,实现Java 类与数据库之间的转换和访问,最后由Spring来完成业务逻辑处理[5]。

根据上面的分析,集成Struts,Spring和Hibernate的架构的总体结构如图1所示。

1)SSH框架搭建基础。

(1)Eclipce开发环境;(2)准备相应数据库连接Jar包。

2)具体搭建步骤。

(1)在eclipce环境中导入Spring框架,选择导入包时要选择与Spring的核心包Aop包相应的ORM映射包和Web包;(2)在eclipce环境中导入Hibernate框架,选择Hibernate对应的核心包全部导入,并选择合适的数据库连接方式。应该注意的是:应在My Eclicpe Database Explorer中配置相应的数据库,导入Hibernate时注意选择使用Spring配置文件进行配置;(3)在eclipce环境中导入Struts框架,注意:Struts应导入Struts1.2或更高版本,此处必须按以上顺序导入;(4)删除asm2.2.3.jar;(5)导入commonspool.jar连接库,方法是:在eclipce中窗口首选项MyEclicpeProjectCapabilities选项中将Hibernate2中的commonspool.jar 复制到项目的lib目录下;(6)将log4j.properties文件导入;(7)在Web.xml中配置OpenSessionInView模式,代码如下[6]:

2网站建设

网站建设流程:与提出需求的客户沟通设计建站方案确定合作意向并签定协议网站内容整理网站设计、制作、修改网站确认并。网站建设流程图如图2所示。

1)与提出需求的客户沟通:客户通过电话、电子邮件或在线订单方式提出自己网站建设方面的基本需求。公司专业业务人员与其沟通。涉及内容包括:(1)公司介绍;(2)栏目描述;(3)网站基本功能需求;(4)基本设计要求。

2)设计建站方案:首先,根据企业的要求和实际状况,设计适合企业的网站方案。是选择虚拟主机服务,还是自己购置服务器;根据企业风格度身定制;一切根据企业的实际需要选择,最合适的才是最好的。

3)确定合作意向并签订协议:双方以面谈、电话或电子邮件等方式,针对项目内容和具体需求进行协商。双方认可后,签署《网站建设合同书》并支付50%网站建设预付款。

4)网站内容整理:根据网站建设方案书,由客户组织出一份与企业网站栏目相关的内容材料(电子文档文字和图片等),网站建设方将对相关文字和图片进行详细的处理、设计、排版、扫描、制作,这一过程需要客户给予积极的配合。

5)网站设计、制作、修改:一旦网站的内容与结构确定了,下一步的工作就是进行网页的设计和程序的开发。网页设计关乎企业的形象,一个好的网页设计,能够在信息的同时对公司的意念以及宗旨作出准确的诠释。很多国际大型公司都不惜花费巨大的投入在网页的设计上。

6)网站提交客户审核并:网站设计、制作、修改、程序开发完成后,提交给客户审核,客户确认后,支付网站建设余款。同时,网站程序及相关文件上传到网站运行的服务器,至此网上正式开通并对外。

3基于SSH网站建设实例分析

下面以一个简单的出售商品网站作为实例来分析基于SSH 的网站建设。

3.1需求分析

1)商品展示:实现分类展示、商品预览、商品明细功能。

2)购物车:实现添加商品、删除列表、恢复列表、数量修改、清空购物车、结算功能。

3)我的订单:实现订单确认创建功能。

4)用户管理:实现登入/登出、用户注册功能[8]。

3.2建站服务与架构

在系统架构方面,采用4层结构,主要包括表现层、控制层、业务层和持久层。系统架构如图3所示。

表现层:主要负责用户交互过程,并将用户的交互结果显示出来,通过细致地分析研究可以知道,交易系统和管理系统所具有的特性不同,从而决定了它们的URL入口界面也不同。

控制层:控制层有重要的作用,它主要是对系统的访问、系统数据的加载和注销进行控制,系统的控制层是系统不可或缺的一部分,在整个系统中具有“核心控制单元”的美誉。控制层通过系统描述来组织工作。

业务层:业务层具有一定的逻辑功能,对业务层进行有效管理能够实现交易系统和管理系统业务逻辑性能的提高,它能对系统进行准确的运算。

持久层:能够对数据进行有效的管理,无论是静态数据还是数据库数据,都能在系统管理层的作用下对数据进行持久化管理,从而保证了业务层的正常工作,为其提供了基本的数据服务,系统数据在进行操作的时候通常把持久层当作统一界面。

2)业务层设计:业务层由相关的action组件类与一些JavaBean组件类充当,负责进行业务逻辑与数据计算处理,然后返回结果,供页面显示或者相关对象的数据存储与调用。

业务层的处理包括:购物车中商品的增删改查功能、主页面的商品动态显示功能、用户的注册登陆处理以及订单生成的功能等处理。

3)持久层设计:由实体类和数据访问对象(DAO)充当。数据的底层存储是数据库,每张表都有一个对应的实体类,用于数据的持久化操作。每张表都提供一个数据访问对象(DAO),用于对数据库的数据进行连接操作。DAO对象的创建采用了工厂模式[9]。

3.3网站页面创意设计

Web层采用Struts框架,因为此系统属于较简单Web应用,采用了OpenSessionInView模式处理LazyLoad问题,这种模式使得问题处理更方便。通过这种方式我们在获取关联对象的时候通常在用户视图中使用get,set方法,这种方法获得关联对象更加便捷有效。action和action form问题一直是系统处理中的重点问题,为有效解决这一难题,我们将采用DynaActionForm (DynaValidatorForm)、动态验证框架以及DispatchAction的形式。同时我们还将Tile标签运用到其中,以有效解决页面布局问题,在解决分页和身份验证等问题的时候,我们通常采用自定义标签处理的方式。

为了满足UI层在查询结果较多的时候要分页的需求,引入了Base DAO接口,全面地管理对Session的操作。注意分页的需求是通过JSP的custom tag,Struts和这里的Base DAO接口共同解决的[10]。

4结束语

针对当前Web开发中存在的一些问题,本文利用Spring+Struts+Hibernate三大J2EE框架设计实现了一种轻量级的Web开发方案,使得Web开发更简便易行,同时也提高了程序开发的效率[11]。但三大J2EE框架的整合本身也有冲突问题的存在,需要进行更深入细致的后续研究。

参考文献:

[1]夏昕,曹晓钢,唐勇.深入浅出Hibernate[M]. 北京:电子工业出版社,2005.

[2]余腊生,任炬. 基于SSH 三层架构的OJ系统研究与设计[J]. 电脑知识与技术,2008,3(8):16681670.

[3]JOHNSON R. Expert oneonone J2EE design and development [M]. 魏海萍,译.北京:电子工业出版社,2003.

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

[5]徐长盛,戴超.一种快速开发Web应用程序方法的研究[J]. 计算机工程与设计,2004(12):22372239.

[6]王君.基于Struts+ Spring+ Hibemate的企业级WEB应用框架的研究[D].合肥:合肥工业大学,2007.

[7]陈洁琴.基于Struts+Spring+Hibernate架构的进销存管理系统的研究与实现[D].西安:西安交通大学,2008.

[8]蒋纬,马光思.Spring与其他框架整合及流程分析[J].计算机工程,2007,33(14):7981.

[9]兰红,柳显涛,李文琼. 基于Linux的预线程化并发Web服务器设计[J].江西理工大学学报,2012,33(1):6367.