spring框架十篇

时间:2023-03-18 03:28:10

spring框架

spring框架篇1

关键词:Spring;Web;AOP;IoC

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)26-7420-02

The Research of AOP on Spring Framework

WANG Xiao-jun1, ZHANG Dian-long2

(1.Department of Computer Engineering, Shandong College of Information and Technical, Weifang 261061, China; 2.Department of Software Engineering, Shandong College of Information and Technical, Weifang 261061, China)

Abstract: Spring is a programming framework, that implements the techonology about Aspect-Oriented Programming. So anyone can make the Spring framework that manage any object to support AOP easily. This paper bases on the realized project,that it has expatiated on the technological advantage and application value by using AOP.

Key words: Spring; Web; AOP; IoC

当Java在Web开发领域获得前所未有的成功之后,Web程序员纷纷从PHP、ASP等技术阵营转移到Java阵营。然而随后几年Java程序员在开发EJB时,发现它过于复杂,且难以进行单元测试,恰巧这个时候,.NET技术开始发展起来。Java阵营迫切需要一个实用的框架来加速Web和企业级软件的开发,以Spring为代表的轻量级框架应运而生。

1 开源框架 Spring简介

1.1 Spring简介

Spring是一个非常优秀的轻量级开源框架,由RodJohnson创建,其组成部分从Web MVC一直到数据持久化访问,是一个完整程序结构体系。简单地说,Spring是一个轻量级的IoC和AOP容器框架,通过Spring的IoC容器,我们将关注点放在需要实现的业务逻辑上。对AOP的支持则能动态的增强业务方法。Spring既是全面的又是模块化的。Spring有分层的体系结构,这意味着开发者能选择使用它任何一个独立的部分,而它的架构又是内部一致。Spring不会给你的工程添加对其他的框架依赖。Spring可以称得上是个一站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。Spring不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块。

Spring之所以能迅速在Java开发人员中流行,是因为Spring具有以下特点。

1)设计良好的分层结构,使得开发人员可以很简单的进行扩充,并引入先进的设计理念。

2)以IoC为核心,促使开发人员面向接口编程,可以养成良好的编程习惯,从而便于程序的扩充和维护。

3)良好的架构设计,使得应用程序尽可能的依赖应用程序的环境,从而使应用脱离了环境的影响。

4)Spring能够代替EJB。如果开发人员原来使用EJB,那么使用Spring后还可以继续使用EJB。如果从头开始开发应用程序,则使用Spring提供的功能就可以代替EJB。

5)Spring MVC很好的实现了MVC2,并提供了很简单的对国际化开发与资源的支持,而且可以与Spring提供的IoC和AOP联系起来。

6)Spring可以与其他框架良好的结合,例如Struts、Hibernate等结合,这使应用开发更为容易。

1.2 Spring AOP原理

AOP全称Aspect-Oriented Programming 中文直译为面向切面(方面)编程,用于解决OOP中无法很好解决的问题。它从另一个角度来考虑程序结构以完善面向对象编程,OOP将应用程序分解成各个层次的对象,而AOP将程序分解成各个方面或者说关注点,这使得可以模块化诸如事务管理等这些横切多个对象的关注点。

大多数AOP定义都是关于如何使交叉业务模块化。如图2所示显示的是业务交叉的示意图。如果由于需求的变更,我们要取消一部分方法中的开启事务或结束事务处理的功能,此时,我们就需要手工逐一删除这些方法中的事务处理语句。使用AOP可以在一个地方定义通用功能,只要声明是定义何时何地应用这些功能,就可以在需要新功能的地方修改代码。

2 Spring中的AOP实现及应用

Spring框架中包含一个AOP实现,是Spring框架的重要组成部分,实现了AOP规范约定的接口。Spring中的AOP主要使用基于拦截器的方式,能够创建连接点,能够对方法调用连接点进行相关的拦截。Spring使用纯Java的方式来实现AOP,Spring AOP的植入过程是在运行是由Spring使用Java的机制来完成的。Spring AOP依赖于Spring的核心IoC容器,并与容器融为一体,因此可以在配置文件中声明应用AOP功能。

在Spring配置文件中分别配置通知、切入点、切面,然后使用工厂Bean等配置业务对象的,按部就班的进行Spring AOP的配置。

2.1 创建通知

Spring的连接点是建立在方法拦截基础上的,这意味着Spring通知可以在方法调用的各个地方植入系统中。因为Spring可以在方法执行的各个地方植入通知,所以通知有不同的类型。

2.2 定义切入点

切入点是根据类的方法是否满足特定的规则,来决定是否在合适的地方植入通知。切入点的描述重点是方法的描述。方法的描述涉及到几个方面,包括方法名称的描述、所带的参数、所处的类、执行的流程等。

Spring框架中的切入点主要分为静态切入点和动态切入点。其中静态切入点基于方法和目标类进行切入点判断而不考虑方法的参数。在大多数情况下,静态切入点是高效的、最好的选择。Spring只在第一次调用方法时执行静态切入点,以后每次调用这个方法时就不需要再执行,所以性能比动态切入点好。

2.3 定义

的工作机制很简单,就是当我们需要使用某一个类时,由Spring通过一定的机制,创建一个我们所需类的对象,对象跟实际对象实现相同的接口或者是实际对象类的一个子类。当执行对象上的一个方法时,其交由一个回调对象来处理,而我们可以自定义这个回调对象,从而加入自定义的程序逻辑,即AOP中通知。因此,在系统中就需要一个负责根据一定的策略,创建对象的工厂角色,在Spring的AOP实现中,ProxyFactoryBean正是扮演了这个角色。

3 AOP应用实例

考虑一个超级玛丽游戏设计,在游戏的初始化后,人物每次前进一步都可能碰见方块的阻挡,玛丽是否打碎砖块?定义GameRole接口,利用四个方法表示玛丽的行走。四个方法都是简单的坐标变换,而在游戏中重要的就是玛丽在行走的过程中会遇到一些方块,打碎这些方块会爆出一些东西,也就是说四个方法都应该调用一个doBox()方法来表示打碎物品后的处理。

在四个方法中都应有doBox()方法,而该方法可能有很多的内容,同时玛丽还有可能增加飞行和游泳等动作,这样就造成了大量的代码重复,这个时候就要考虑使用AOP来解决了。

编写一个切面,定义doBox方法作为行走方法的后置通知;首先定义一个名为afterPointcut的切点;接着定义一个后置通知;编写配置文件game-config.xml:

最后定义一个游戏运行代码。

当然这只是一个简单的模拟游戏,实际还有很多问题这里没有解决,不过只要熟悉了AOP的使用,一定可以将游戏制作的是否完善。经过这样设计的系统,符合MVC设计模式,合理的划分了系统层次,实现了松散耦合的思想。同时加快了系统的开发速度,增加了系统整体部署的可伸缩性,改善了系统的应用性能。

4 结束语

本文探讨了一种新的编程思想和开发技术,借助Spring AOP,使得Spring成为成功的J2EE架构框架,它使得开发人员可以集中关注于系统的核心商业逻辑,使用AOP来灵活处理一些具有横切性质的系统级服务,已经成为一种非常适用的解决方案。

参考文献:

[1] 张国平,万仲保,刘高原.Spring AOP框架在J2EE中的应用[J].微计算机信息,2007(36):254.

[2] 罗时飞.精通Spring2.0[M].北京:电子工业出版社,2007:43-198.

[3] 石丹丹.面向方面编程模式的探讨[J].武汉理工大学学报,2005,27(1):93-95.

spring框架篇2

1 Spring JDBC模板设计模式 

Spring内置了一组数据访问框架,可以针对JDBC、Hibernate、MyBaties等常见数据访问技术提供简化操作,让我们把精力集中在核心的数据管理上面。常见的DAO码中,大部分都是管道代码(重复的),只要少数几句核心代码是每个方法不相同的。Spring利用“模板方法”设计模式,把管道代码预先定义好,然后通过接口,把方法的特定细节(变化部份)委托到外部交给程序员后期实现。“模板方法”设计模式的定义是:在方法里预先定义算法的骨架,将一些步骤延迟到其子类去实现。Spring JDBC模块为开发人员提供了一系列的抽象类,我们在写DAO类时只要继承于这些抽象类,并实行其中的相应方法即可。这样,大大简化了DAO的开发步骤,基本上一些DAO操作只需要一两句代码即可。 并且,Spring还封装了一些异常,因此,开发人员编码时也无需自己编写捕获各种特定的异常的代码,从而大大简化了DAO方法的编写。 

2 DWR技术原理介绍 

DWR(Direct Web Remoting)是位于服务器端的AJAX框架,用于处理客户端的请求并进行异步处理,将及时处理结果反馈于客户端浏览器中。它包含2个主要部分:一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。另一个是运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。 

3 EXT技术特点 

Ext是一个前台页面开发框架,可以用来开发富客户端的AJAX应用,是纯Html/CSS+JS,拥有丰富的跨浏览器UI组件,采用灵活的JSON/XML数据源开发,减轻了服务端表示层的负荷,真正实现客户端的MVC应用,并且每一个组件都拥有漂亮的样式及布局,经过简单的调用与配置就可以实现不错的界面布局,。是开发页面不错的技术选择 

4 Spring、DWR与EXT的整合及应用 

4.1 三种框架的整合工作原理 

Spring、DWR与EXT整合工作流程:Spring JdbcTemplate封装了JDBC的流程,包括了SQL的执行、查询结果的转换和异常的捕捉等等。在java程序中使用了JdbcTemplate的类中采用依赖注入jdbcTemplate,然后就直接调用JdbcTemplate中的数据库方法,如查询queryForList,更新update等。Spring JdbcTemplate负责应用系统数据库的操作。DWR负责将后台的java对象转化成前台页面的js 对象,让开发人员可以在客户端脚本语句中直接调用。开发人员在前台ext代码中调用后台java函数时,DWR 会将此转换成对应的请求发送到服务器端。当服务器处理完请求后,dwr还会将处理的结果返回给前台ext,EXT负责将后台传过来的数据呈现在漂亮的客户端界面上。 

4.2 实例的应用 

本实例是自己教学过程中用Spring+DWR+EXT框架开发web应用程序经常用到的的组合框的三级联动,通过实例来分析如何整合这三种框架,以其来提高开发效率和改善用户体验。 

项目中要用到Spring,DWR,EXT框架,首先需要在项目中添加spring 、dwr 以及extjs所需的jar 包。并将包放到合适目录下。 

1)在web.xml中配置Spring与DWR 

在web应用中添加Spring支持,需要在web.xml中配置spring启动的监听器:(代码略)。 

在Spring框架之下,每个Java对象将会以bean的方式存在。 

2)编写具体的类ResourceGISDistributeDao,实现数据库的业务处理。列出部分代码说明: 

/*查询营业部数据*/ 

public List queryyingyebu(String cityid) { 

try { return this.jdbcTemplate.queryForList(this.yingyebuString, new Object[]{cityid});} catch (Exception ex) { 

ex.printStackTrace(); 

return null;} 

3)编写spring配置文件

在spring配置文件中,我们主要是用来配置数据源和操作数据库的dao,以便在dwr配置文件中进行引入访问。 

<!—数据源配置 --> 

略 

 

 

<!-- 查询市数据 --> 

略 

<!-- 查询营业部数据 --> 

 

SELECT DISTINCT T.TOWN_ID,T.TOWN_DESC FROM APP.RS_CHL_NET_CELL_BASIC T WHERE T.CITY_ID=? 

 

<!-- 查询片区数据 --> 

略 

 

4)编写dwr.xml配置文件 

Dwr配置文件与web.xml在同一目录下,配置将要被调用的java类。部分代码如下: 

 

 

<!-- 获取资源GIS分析模块信息的DAO --> 

 

 

 

 

5)创建视图层 

最后,创建视图层。视图层项目中采用jsp技术。在jsp页面中要引用dwr的engine.js和util.js,还要引用dwr自动生成的js,如dwr/interface/ResourceGISDistributeDao.js,注意js名字要和dwr.xml配置的一样。这样就可以在jsp页面中通过脚本代码来调用在服务器端dao层ResourceGISDistributeDao代码,函数比在java代码中多了个参数function(data),用来callback返回的数据,如下:ResourceGISDistributeDao. queryyingyebu (function(data){ 

DwrReturnData = data; }); 

最终组合下拉框三级联动效果图图1。实践发现,采用spring+dwr+ext三个框架相结合的异步读取的方式,能使多级联动的数据不需要一次性地从数据库中读取出来,而会在页面初始化的时候只读出第一级组合框(市级)的数据,再根据用户的选择读出相应的下一级(营业部)组合框数据,极大地提高了用户体验。且EXT的组合框控件有缓存机制,再次点击时会去缓存中读取数据,提升了响应速度。对于开发人员而言,JavaScript代码量及复杂度大大降低,极大地减轻了编程负担。 

5 结束语 

DWR框架响应迅速、交互性强 ,EXT能够创建丰富多彩的web应用程序界面, Spring框架将DWR与EXT框架有机地整合起来,使JAVA应用更加灵活,因此基于Spring+DWR+EXT框架的能很好地进行web应用开发。 

参考文献: 

[1] 林信良. Spring3.0技术手册[M]. 北京: 电子工业业出版社, 2012. 

[2] 董鑫. 基于AJAX的动态Web开发技术探讨[D]. 郑州: 河南大学, 2010. 

[3] 李健, 郭宇明, 石桂名. 基于DWR的Ajax技术研究与实现[J]. 现代计算机:专业版, 2013(7): 132-133. 

[4] 王霓虹, 金兴. Ajax技术及其DWR框架实现[J]. 自动化技术与应用, 2012, 26(12): 92-94. 

spring框架篇3

摘 要 Spring框架是一个优秀的多层J2EE系统框架,Spring本身没有提供对系统的安全性支持。Acegi是基于Spring IOC 和 AOP机制实现的一个安全框架。本文探讨了Acegi安全框架中各部件之间的交互,并通过扩展Acegi数据库设计来实现基于Spring框架的应用的安全控制方法。

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

spring框架篇4

>> 基于Struts\Spring\Hibernate架构的设计与实现 基于Struts2+Spring+Hibernate框架的网上评教系统的设计与实现 基于Struts\Spring\Hibernate技术饰品商店设计与实现 基于Struts和Spring框架的资产管理系统 基于Struts+Spring+Hibernate的在线大学生评价系统的应用研究 基于Struts+Spring+Hibernate框架的科研管理系统的设计与实现 基于Struts+Spring+Hibernate框架的LIMS的设计和实现 基于Spring+Struts+Hibernate注塑模具报价系统的研发 基于Struts+Hibernate+Spring的轻量级J2EE框架 基于Struts\Spring和Hibernate的J2EE框架整合方法探讨 基于Struts/Spring/Hibernate集成框架的人力资源管理系统设计与实现 基于Struts2 + Spring + JPA的生物信息数据库的设计 基于Struts+Spring+Ibatis的德育量化考核系统的设计与实现 浅谈struts2、hibernate、spring三大主流框架 Struts2、Spring和Hibernate框架技术分析 浅谈Struts与Spring在MVC模式中的应用 基于Struts和Hibernate的教务系统设计与实现 基于Spring+Struts+Hibernate的迎评促建网 基于Struts的虚拟实验预习系统 轻量级J2EE中整合Struts、Spring、Hibenate的研究与分析 常见问题解答 当前所在位置:l. 2008-03-03.

[2] The Apache Struts Web Application Framework. .2008-03-03.

[3] hibernate_org - Documentation Overview. . 2008-03-03.

[4] 杨公义.大学生创新能力培养的网络平台设计与开发[J].远程教育杂志,2008,(01):59-62.

spring框架篇5

关键词:Struts、Spring、整合

一、引言

Struts框架是Apache基金会Jakarta项目组的一个Open Source(开放源代码)项目,该框架由一组相互协作的类(组件)、Servlet以及标签库组成,是对传统MVC设计模式的一种实现和标准化,充分体现了MVC模式“分离显示逻辑和业务逻辑”的设计思想,是目前Java Web开放中广泛采用的技术。

Spring是由Rod Johnson创建的一个开源框架,目的是为了解决Java Web企业应用开发的复杂性。Spring提供了IoC(控制反转)、AOP(面向切面编程)、声明式事务等功能,提高了Java Web应用开发的效率和质量。更重要的是,Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate等)的直接支持。

虽然Spring本身可以作为一个MVC实现,但由于Struts在MVC方面的影响力,使得开发人员者更愿意将Struts整合到Spring中,而不是使用Spring MVC代替Struts。本文总结归纳了整合Struts和Spring的三种方法,并讨论了各自的优缺点。

二、整合struts和spring

1,使用ActionSupport类

(1)原理

当客户端发送http请求到控制器时,使用请求参数填充FormBean,并根据struts-config.xml的配置将请求转发给对应的Action,Action通过调用父类的getWebApplicationContext()方法获取ApplicationContext对象,在通过ApplicationContext对象从Spring容器中获取相关的JavaBean,通过Action处理后将处理结果会发给控制器,控制其根据struts-config,xml的配置将处理结果传回到客户端。

(2)用法

①在struts-config xml中配置插件,代码如下:

②创建A ction类,继承自ActionSupport或DispatchActionSupport;

③在Action中通过调用getWebApplicationcontext()方法获取ApplicationContext对象,然后调用ApplicationContext对象的getBean()方法从Spring容器中取出相应的对象。

(3)评价

这种技术很简单并且易于理解。但是,它将Struts动作与Sp ring框架耦合在一起。如果想替换掉Spring,那么就必须重写代码。同时,由于Struts动作不在Spring的控制之下,所以它不能获得SpringAOP的优势。当使用多重独立的Sp ring环境时,这种技术可能有用,但是在大多数情况下,这种方法不如另外两种方法合适。

2,使用DelegatingRequestProcessor类

(1)原理

客户端发送http请求到控制器ActionServlet,控制器将使用请求参数填充FormBean并根据Struts-config,xml的配置将请求转发给DelegatingResquestProcessor,DelegatingResquestProcessor根据Spring配置文件从web容器中提取ActionBean并调用相关的JavaBean,由ActionBean对请求进行处理,处理完毕后在转发给控制器,控制器再根据struts-config.xml的配置把将处理结果发挥给客户端。

(2)用法

①在struts-config.xml中配置插件,代码如下:

vaIue=”classpath applIcationContext.xmI”/>

②在struts-config.xml中增加如下节点:

DelegatingRequestProcessor”/>

③创建Action,并在spring配置文件ApplicationContext xml中对其进行注册。

(3)评价

这种方法使Struts动作并不知道它正被Spring管理,并且使我们能够利用Spring的动作管理框架的所有优点。由于Struts动作注意不到Spring的存在,所以我们不需要重写我们的Struts代码就可以使用其他控制反转容器来替换掉Spring。看来这种方法的确比第一种方法好,但还是存在着一些问题。如果我们使用一个不同的RequestProcessor,则需要手动整合Spring的DelegatingRequestProcessor。添加的代码会造成维护的麻烦并且将来会降低的应用程序的灵活性。

3,将StrutsAction管理委托给Spring框架

(1)原理

客户端发送http请求到控制器ActionServlet,控制器将使用请求参数填充FormBean,并根据struts-config.xmI的配置将请求转发给DelegatingActionProxy,DelegatingActionProxy根据请求信息从Spring容器中获取相应的Action并由Spring为其注入相关的JavaBean,请求经Action处理完毕后在转发给DelegatingActionProxy,DelegatingActionProxy在转发处理结果给控制器,控制器根据struts-config.xml的配置把将处理结果发挥给客户端。

(2)用法

①在Struts-config.xml中配置插件,代码如下:

value=classpath:applicationContext.xmI/>

②创建Action并将st ruts-config,xml中的Action节点的type更改为org.springframework.web.struts,DeIegatingActionProxy

③在Spring配置文件中注册ActionBean。

(3)评价

动作委托方法是这3种方法中最好的。Struts动作不了解Spring,不对代码作任何改变就可用于非Spring应用程序中。RequestProcessor的改变不会影响它,并且它可以利用SpringAOP特性的优点。

spring框架篇6

关键词: Flex; Spring; 控制反转; 面向切面; J2EE

中图分类号:TP311.1 文献标志码:A 文章编号:1006-8228(2013)12-32-03

Design and implementation of community information system based on flex and spring

Chen Zhiyu1, Hu Xiubing2, Yang Shuo2, Yang Wei2

(1. Hangzhou Dianzi University, Hangzhou, Zhejiang 310018; 2. Zhejiang Topcheer Information Technology Co.,Ltd)

Abstract: Flex is a kind of highly efficient and free open source framework. It can be used to build a variety of Web applications. These applications can take advantage of Adobe Flash Player, running across browser, desktop, and operating system to achieve a consistent deployment. Spring is a kind of lightweight IoC(Inversion of Control) and aspect-oriented container framework. It can make J2EE development easier and provide an efficient way to construct the entire application. The system can easily extract the community information from a large number of data. The system uses Flex to design the interface and the address information for participle into words library. Finally, the keywords are used to create community information.

Key words: Flex; Spring; IoC; AOP; J2EE

0 引言

随着网络的快速发展,很多门户类的信息网站如赶集网、58同城等都着房屋地址信息,包括楼盘信息、二手房挂牌数据、商品房公示数据、房屋出租数据等。网上数据采集方式有很多,如何从大量数据中提取出小区信息一直是个难题。本文通过对Spring框架的研究,利用Flex技术和BlazeDS实现了小区信息系统。

1 Flex介绍

该系统前台的开发利用Flex技术,它是目前最流行的Rich Internet Application(富因特网应用程序)开发技术之一,RIA这个词是Macromedia发明的,它是开发新一代Web应用的有效工具[1]。在传统的开发模式中,Java Web应用开发是利用jsp技术,而.Net利用的是Asp技术,它们都需要依靠浏览器的动态解释才能够正常显示和执行,这样的开发方式经常会给代码调试带来一定的难度。在开发过程中,往往同一段代码在不同的浏览器或不同版本的浏览器下会有不一样的外观和动作效果,而且界面外观的调试也非常耗时、耗力。Flex的出现正好解决了上述问题。

Flex主要由两部分构成,一是MXML声明式标记语言,它是基于XML的,用于定义应用程序的结构;二是ActionScript,用于为应用程序添加所需的功能。Flex框架的原理是通过Flex编译器将MXML、ActionScript以及一些Flex类库编译成SWF文件,然后由Flash Player在客户端执行该SWF文件[2]。在企业级应用当中,Flex采用N层架构和面向服务的应用程序体系结构,在使用MVC(模型、视图、控制器)设计模式时,可以将表示逻辑从业务逻辑中分离出来,控制器负责处理用户交互逻辑,而服务器端业务逻辑控制器用来负责处理业务逻辑。Flex支持Adobe公司自定义的AMF通信协议,它能够将Flash/Flex对象进行快速序列化、反序列化,采用二进制压缩来传输数据,具有数据安全性高、传输快的优点。

2 Spring框架

Spring框架是一个优秀的多层J2EE系统框架,它由Rod Johnson创建。它的出现解决了企业应用开发的复杂性问题,提供了一个非常轻量级的解决方案。Spring的核心是个轻量级的容器,它是实现控制反转(IoC)容器、非侵入性的框架,并提供AOP(面向切面)的实现方式[3]。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情,它的Context文件内容配置灵活,通过注入就可以将Bean之间的关系关联起来,而不是在Bean中去实现关联关系,并且实现了MVC Web框架。

Spring由七个模块构成,如图1所示。

[

Spring AOP

][Spring ORM][Spring DAO][Spring Web][Spring Context][Spring Web

MVC][Spring Core

Supporting utilities

Bean container]

图1 Spring模块

2.1 AOP模块

AOP(Aspect-oriented programming)是Spring的一个主要功能,它是相对传统OOP编程技术提出来的,提供了对面向切面编程的丰富支持,可以很容易地使Spring框架管理的任何对象支持AOP。Spring的AOP支持基于AOP联盟定义的API,它的目标是通过定义一组共同的接口和组件来促进AOP的使用以及不同的AOP实现之间的互用性[4]。

2.2 核心容器

Spring Core实现了Spring框架最基本的功能,它提供了依赖注入特征来实现容器对Bean的管理。它的主要组件是Bean Factory,该组件是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用控制反转(IoC)把应用程序的配置和依赖说明从实际的应用程序代码中分离出来,利用Java的反射机制,实现对系统中的JavaBean的管理。

2.3 Web模块

Spring提供了MVC Web框架的解决方案,使得Spring能与Struts框架进行方便的结合,允许在Struts类内部使用Spring的DI法则。使用Spring Web框架的好处是可以善用IoC和AOP的功能,可以轻松地替换使用不同的View层技术。

2.4 ORM模块

Spring ORM指的是对象/关系映射集成模块,它只是为几种流行的ORM框架提供了集成方案,包括了与数据持久化相关的技术Hibernate、JDO和iBATIS SQL映射。Spring的事务管理支持这些ORM框架中的每一个也包括JDBC,可以很容易地实现对数据库的访问[5]。

2.5 Context模块和DAO模块

上下文模块使Spring成为一个框架,它类似于Struts框架中的XML配置文件,为整个Spring框架提供上下文信息。该模块扩展了BeanFactory的概念,也提供了许多如电子邮件、EJB集成等企业服务。Spring DAO提供了一个有效的异常层次结构,用来管理来自不同数据库服务器抛出的错误消息。

3 小区信息系统的设计与实现

本系统的开发平台用的是Eclipse,前台用Flex实现,而后台是基于Spring框架用Java编写的。系统的房屋地址信息主要以网上数据为来源,包括楼盘信息、二手房挂牌数据、商品房公示数据、房屋出租数据等。利用庖丁分词器对收集来的地址信息进行分词并且存入关键词库,最后选中已经审核好的关键词进行创建小区。用户可以选择城市,查看该城市下的小区列表,选中某个小区,可以查看、编辑小区信息。系统的总体流程如图2所示。

[房屋地址信息][小区信息][未审核的关键词][有效的关键词][利用分词器产生] [形成] [审核产生]

图2 系统流程图

3.1 数据库设计

我们采用的是Oracle数据库,该数据库具有可用性强、可扩展性强和数据安全性强等特点。本系统主要用到三张表:acq_secondhandhouse、sys_addresskeyword、hda_district。acq_secondhandhouse是抓取的房屋信息,主要属性包括房屋地址、区域ID、抓取日期等。sys_addresskeyword是关键词记录,用于存储关键词、关联area、关联district、分析匹配数量等信息。小区信息记录表hda_district存储了小区名字、父区域ID、区域ID等信息。

3.2 服务器设计

本系统采用Tomcat v7.0服务器,该服务器是一个免费的开源的Web应用服务器,属于轻量级的应用服务器,普遍应用在中小型系统中,是开发和调试JSP程序的首选。通过Hibernate连接数据库,hibernate的配置如图3所示。

图3 Hibernate配置

3.3 Flex访问服务器数据设计

本文Flex访问服务器数据的方式是BlazeDS,BlazeDS是一个基于服务器的Java远程调用和Web消息传递技术,它能够使得后端的Java应用程序和运行在浏览器上的Flex应用程序相互通信。为了实现Flex与Java通信,需要配置remoting-config.xml和services-config.xml,前者是描述远程调用Java类的服务配置文件,后者是描述服务基本设置的配置文件。本文主要用到的服务有AddresskeywordService、DistrictService、AreaService。

Flex主要负责客户端的展现,图4是Web应用的整体框架。

[

SWF

][

BlazeDS

][JAVA

代码] [数据库][客户端(浏览器)][服务器端]

图4 Web应用框架

3.4 小区信息系统各个功能的实现

3.4.1 选择区域控件的实现

用户可以通过选择区域控件选择自己要操作的城市,通过点击切换按钮弹出区域窗口,然后选择身份,调用AreaService服务访问数据库来显示该省份下的所有城市。最后选择完毕后给公共变量selectedArea赋值。选择区域控件如图5所示。

图5 选择区域界面

当用户选中了某个城市后,DataGrid控件会根据变量selectedArea调用DistrictService服务来显示该城市下已经生成的所有小区。图6中DataGrid显示的是杭州市下的所有已经生成的小区名字。DataGrid利用监听事件根据selectedArea的变化而实时产生相应的变化。双击选中某个小区名字,系统会自动弹出一个更改小区信息和别名的窗口如图7所示。

图6 显示该城市所有小区 图7 修改小区信息界面

3.4.3 利用关键词生成小区

当选择某个城市后,AdvancedDataGrid控件会调用AddresskeywordService服务来访问数据库,从而显示该城市下所有的关键词记录。选择已经审核过的关键词记录,并且小区编号是未创建的,点击生成小区信息按钮,随后在DataGrid中会显示刚创建的小区名字。点击刷新按钮也可以查看是否已经创建成功,刷新的代码如图8所示。利用关键词生成的小区信息界面如图9所示。

图8 刷新的代码

4 结束语

Eclipse是一个开源的、基于Java的可扩展开发平台。本系统是在Eclipse平台下开发的,可以将复杂的、不规则的数据进行分类,利用关键词记录生成小区信息。对于如何对关键词进行自动地审核还有待于进一步研究。本文简要介绍了Flex技术和Spring框架,详细说明了小区信息系统的设计和实现,包括数据库设计、Flex访问服务器数据设计等。通过本系统的实现,让我们对于Spring框架的配置和Flex前台的界面设计积累了经验,为今后的Web开发打下了良好的基础。

参考文献:

[1] Charles E. Brown.The Essential Guide to Flex 3[M].New York,

2008:3-4

[2] 姜天格.Flex3企业级Web应用系统设计与实现[M].机械工业出版

社,2009.

[3] 惠燕,潘煜.基于SSH的毕业设计管理平台的研究[J].电子设计工程,

2011.1:23-26

[4] 郭宏杰,朱荣.基于SSH的物流信息系统的研究与实现[J].计算机与

数字工程,2009.37(2):63-65

spring框架篇7

关键词:精品课程;SSH;SQL;Server

中图分类号:G434 文献标识码:A文章编号:1007-9599 (2011) 11-0000-01

J2EE-Based Quality Courses Design and Implementation in Online Teaching System

Zheng Yan,Zhao Haiou

(Wuhan University of Technology,Wuhan430070,China)

Abstract:The course under construction is to improve the quality of teaching and implementation of teaching bination of teaching practice in the past few years,and according to the current actual situation in schools,design and implementation of J2EE-based course management system quality.

Keywords:Quality courses;SSH;SQL;Server

一、开发环境

本精品课程在线教学系统的开发以Web工程思想为指导,本系统基于MVC设计思想,以SSH(Struts+Spring+Hibernate)框架为基础,以MyEclipse9.0为开发工具,以java为开发语言,使用SQL Server作为后台数据库。系统的运行环境为Windows XP/2000+j2sdk1.6.X JDK开发包+sqlserver2005数据库+Tomcat 7.0服务器。综合采用DHTML、CSS等技术开发的Web程序。

二、系统功能模块分析

本系统划分为教师模块、管理模块、交流模块、学生模块四个功能主模块,每个主模块下又包含有相应的子模块。如图所示为本系统主要功能。

本项目采用五层体系框架,采用Struts框架来实现表示逻辑层的开发,也就是主要完成MVC三层模式中的视图和控制器的部分。模型部分的实现主要包括业务逻辑层,持久层和数据库层,采用Java Bean组件和Spring框架实现业务逻辑,Hibernate框架实现持久层。

本文只以其中的用户管理登录模块和课程管理功能实现为例子,介绍Struts、Hibernate和Spring相结合开发应用系统的具体实现思想,细节及过程,系统的所有功能模块的开发都是基于这种设计思想与模式,采用这些相关技术实现,最后再整合成为一个完整的系统。

在SSH框架中,模型层是离用户比较近的一层,该层负责对用户的请求进行处理,并返回相应的视图,主要由Struts框架完成。用户管理登录为例,部分代码如下:

public class Admins Action extends Dispatch Action{

public Action Forward do Login(…)throws IO Exception{

//数据处理及页面跳转

}

//其他方法……..

}

管理员模型Admins Action实现继承了Dispatch Action,并提供了相应业务逻辑需要的方法。

数据库的操作主要是由Hibernate框架完成的,那数据库的连接操作也是在Hibernate的配置文件hibernate.cfg.xml中配置,但为了程序更简单,本系统中将Hibernate对数据持久层的操作交给Spring框架,则可省略Hibernate配置文件,则数据库连接配置信息编写在Spring的配置文件application Context.xml中。

在生成好Admins Action之后,还必须使用Spring容器为Admins Action注入所需的业务逻辑层组件IAdmins Biz,下面仅仅是登陆的配置代码:

通过Spring配置文件中的配置以上代码,就可以在Admins Action中灵活地使用Admins Biz业务逻辑类中的任意方法,实现用户的需求。

三、总结

通过对Struts、Spring和Hibernate三大框架的集成进行深入研究,为满足一般院校精品课程管理的需求,实现了一个基于SSH架构的精品课程在线教学系统。

1.采用Struts框架的视图层设计技术和控制层结构,在方便前台页面开发的同时,保证系统层次结构清晰,有利于系统的扩展和后期维护。

2.采用Hibernate框架实现数据库的访问,简化数据库操作,增强系统的移植性。

3.采用Spring框架的IOC容器对系统中的功能模块进行管理,实现模块间的解耦,有利于系统的测试和并行开发。

4.使用Spring框架的AOP技术对Hibernate框架持久化操作进行事务管理,大幅度减少了手工编写的容易出错的处理事务的代码。

5.使用SSH集成架构,使得项目开发的层次结构清晰,有利于开发人员的分工合作。持久层只专注于开发持久层、业务逻辑层开发只用专注业务逻辑层,而不用理会不同层的具体实现。

参考文献:

[1]罗时飞.精通Spring[M].北京:电子工业出版社,2005

spring框架篇8

关键词: B/S Java EE MVC模式 Struts2框架 Spring框架 Hibernate框架 ExtJS框架

Design and Implemention of Web Framwork

Based on the SSH and ExtJS

XU Li-ming, LI Zhi-shu, SONG Fei

(Institute of Computer Science, Sichuan University, Chengdu Sichuan 610065, China)

Abstract: They basic concepts of Java EE architecture and MVC design pattern is introduced in this thesisf. On this basis, the principles of Struts2, Spring, Hibernate and ExtJS framework are introduced, then the specific development process of these technologies are expatiated through designing and implementing a web application framwork system.

Key words: B/S; Java EE; MVC Model; Struts2 Framework; Spring Framework; Hibernate Framework; ExtJS

1 概述

1.1 研究背景

近年来,随着网络通讯的普及,B/S(Browser/Server)结构逐渐成了当下最流行的信息系统架构方式。由于基于Java EE架构的B/S应用程序其开发技术比较成熟和完善,运行成本也较其他结构的系统低,同时其性能也不亚于其他结构的系统,而且便于用户使用,所以成为了企业架构信息系统的首选方式。

1.2 框架介绍

1.2.1 Struts2框架

Struts2是由Struts1和WebWork团队共同开发出的一个新的,整合了WebWork与Struts的优点,并且更加优雅、扩展性更强的MVC框架。Struts2解决了Struts1的ActionForm问题,可以使用普通的JavaBean对象,甚至Action本身来接受表单数据。另外,由于Struts2中的Action没有和Servlet API耦合在一起,所以单元测试更加容易[1]。

在经典的MVC设计模式中,一个应用被分成三个部分[2]:即模型(Model)、视图(View)和控制器(Controller)。这三者之间的关系和各自主要功能如图1.1所示:

1.2.2 Spring框架

Spring在某种意义上是EJB的替代品,它是一种轻量级的容器。Spring的核心概念有两个,反向控制(IoC)和面向切面编程(AOP)[3][4][5]

IoC(Inversion of Control),即反向控制或者逆向控制。其基本概念是:不在代码中直接创建对象,取而代之的是在配置文件中描述创建它们的方法以及描述哪一个组件需要哪一项服务[6]。容器负责将这些联系在一起。简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。

AOP(Aspect-Oriented Programming),即面向方面的编程或面向切面的编程。它通过提供另外一种思考程序结构的途

径来弥补了面向对象编程(OOP- Object-Oriented Programing)的不足。在面向对象编程中,模块化的关键单元是类(classes),而AOP中模块化的单元则是切面。所谓“切面”,指的是那些与业务无关,却为业务模块所共同调用的逻辑[7]切面能对关注点进行模块化,例如横切多个类型和对象的事务管理[8]。

1.2.3 Hibernate框架

Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件[9]。Hibernate是一个开放源代码的对象关系映射框架,该框架通过对JDBC API进行了轻量级的对象封装,使开发人员能够以面向对象的思维来操纵数据库[6][10]。它主要封装了通过JDBC访问数据库的操作以及向上层应用提供访问面向对象数据访问的API。

1.2.4 ExtJS框架

ExtJS可以用来开发RIA,即富客户端的Ajax应用,它是一个用JavaScript编写的,主要用于创建前端用户界面的UI框架。该框架与系统后台所使用的开发技术独立,因此,可以把ExtJS与使用Java、.Net或其它开发语言开发的应用系统很好地集成在一起[11]。用ExtJS可以开发出具有十分绚丽外观的显示层页面。

2 Web应用框架的设计与实现

2.1 Web应用框架的设计

本文设计的应用框架系统采用B/S模式的四层体系结构设计,自顶向下为表示层、业务逻辑层、数据库持久操作层、数据库层。基于Struts2,Spring,Hibernate和ExtJs技术开发。

(1) 表示层负责客户端页面的显示工作,该层使用了各种web页面技术,如 Struts2标签技术,JavaSript技术以及ExtJs技术等。

(2) 业务逻辑层负责与权限管理相关的逻辑定义与处理,该层是系统业务功能处理的核心。

(3) 持久层负责进行数据库操作,如查询,修改,删除等。该层主要基于Hibernate技术进行设计,减少了编写和维护SQL语句的工作量。封装了数据库访问,事物管理和缓存等工作。另外,持久层还为其它各层提供了统一的访问接口。

系统主要由五大功能模块构成,分别为用户基本操作功能模块,系统管理模块和权限验证模块,各模块再分别由其子功能模块构成,功能结构关系如图2.1所示:

图2.1 系统功能结构图

根据以上的系统功能划分,亿阳权限管理系统的程序包结构对应如图2.2所示:

图2.2系统模块包结构示意图

以上5个包分别对应于系统划分的5个功能模块。其中每个功能模块按分层设计,分为Struts Action控制层、业务逻辑服务(Service)层和DAO(Data Access Object)三层。这里,我们用业务字典管理模块为例,其分层包结构如图2.3所示:

其余各个功能模块的包结构与上图的业务字典管理模块类似。其中,子模块下的struts.action包为分层设计中的Struts Action控制层代码,用于控制应用程序的流程。处理用户请求并作出相应的响应。 service包内为业务逻辑服务层的代码,封装了程序的各种业务逻辑功能。其中Service包内存放的是接口类,负责定义该服务层需要的一些服务方法,而这些方法的具体的实现流到其impl子包内的具体实现类来实现。po包内封装的是持久化对象(persistence object),即数据库实体,或者说是物理数据模型的对象的Java对象反映。vo包内封装的则是业务逻辑或者表现逻辑的对象,又被称为DTO(data transfer object)[12],它是业务实体的一种抽象反映。

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

再次以业务字典管理模块为例,此模块的类结构设计如图2.4所示:

由于层是一种弱耦合结构[13],层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。因此,我们在分层设计时,遵循了面向接口设计的思想[12][13]。

2.2 Web应用框架的实现

2.2.1基于Struts2的控制层的实现

首先,要为该项目添加Struts2支持,除了需要添加struts的类库包外,还需要在工程的web.xml配置文件中加入以下代码:

struts2

org.apache.struts2.dispatcher.FilterDispatcher

这样就把客户端请求提交到Struts框架处理。

之后,需要在Struts.xml文件中配置客户端请求与Action间的映射关系。如下列代码所示:

/dictionary/dictionary.jsp

以上映射代码表示当前台页面向服务器提交了listdict请求时,该请求将被交给dictionaryAction实例的listDict方法来处理。

此系统将struts控制层的action类交给Spring框架来管理,以便实现action类的可抽取和可替换。

Spring框架通过applicationContext.xml文件来配置其托管的action类。下面的代码部分即为Spring托管的系统业务字典管理模块的struts action类配置:

class="com.boco.dictionary.action.DictionaryAction" scope="prototype">

上面的xml代码中配置的java bean的id与struts-dictionary.xml文件中action配置的class属性值一致,这样便将struts的Action类交给Spring框架代管了。通过修改applicationContext.xml文件中对应bean的class属性便可实现Action类的抽取和替换。

2.2.2 业务逻辑层(Business Logic Layer)的实现

业务逻辑层无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,我们也将业务逻辑层称为领域层。业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。

该系统采用与控制层中相同的方式将业务逻辑实现对象交给Spring框架托管。业务逻辑对象中通过调用持久层层对象来是实现与数据库间的交互。此系统的持久层对象同样交给Spring框架托管。业务逻辑对象中取得持久层对象的代码如下例所示:

dictionaryDao = (HibernateDaoSupport)SpringUtil.getBean(“dictionaryDao”);

2.2.3基于Hibernate和Spring的数据库持久层的实现

数据库持久层负责封装数据操作语句,为业务逻辑服务层提供访问数据源的途径。

在Spring容器中以bean的方式定义诸如JDBC DataSource和Hibernate SessionFactory的数据访问资源,任何需要进行访问的应用程序对象只需要持有这些事先定义好的实例引用。

之后需要将持久对象与数据库表在影射文件中进行关

联,在映射文件中除了将Java持久对象与数据库表进行关联外,还需要将对象的字段与数据库表字段在映射文件中进行关联。在实现时还可以在Spring框架的配置文件中配置Hibernate的事务管理方式。

2.2.4基于ExtJS的页面显示层的实现

ExtJS框架不仅能实现漂亮的外观界面,还拥有丰富的UI组件。

实现时首先需要在页面文件中引入ExtJS类库文件以及实现了自定义ExtJS组件的JavaScript文件,然后定义放置自定义组件的位置。部分代码实例如下:

……

3 结语

本文的系统基于Java EE架构,采用了较Struts1更为优秀的Strut2作为该web应用程序的MVC框架,利用Spring框架来管理业务对象,用Hibernate来进行数据的持久化。另外,为了满足当前许多用户对应用程序界面外观更高的需求,该系统还使用了ExtJS这一基于富客户端理念的UI框架来帮助实现显示层。

以系统中业务字典管理模块为例,其实现效果如图3.1所示:

图3.1业务字典管理模块实现效果图

这样的设计与实现使得该系统具备通用、方便、灵活等特点,并具有更高的可复用性、可维护性和可扩展性。在此系统的基础上进行扩展开发可提高之后项目的开发效率,节约开发和维护成本。经过实践证明,取得了很好的效果。

参考文献

[1] 孙卫琴,李洪成.Tomcat与Java Web技术详解[M].北京:电子工业出版社.2004.

[2] 邱述威,朱达荣,张霖.基于MVC+Struts的科研项目管理系统设计与实现[J].安徽建筑工业学院学报, 2006(1): 66-69.

[3] Rod Johnson. Introduction to the Spring Framework 2.5[EB/OL].

.

[5] Craig Walls,Ryan, Breidenbach. Spring in Action[M].Manning Publications, 2005.

[6] 王磊.基于Struts+Spring+Hibernate的架构设计及其在电子商务中的应用[D].电子科技大学,2007.

[7] Robert E Filman,Tzilla ELrad, Siobhan Clarke, Mehmet ksit. Aspect-Oriented Software Development[M]. AddisonWesley Professional, 2006.

[8] Martin Fowler. Inversion of Control Containers and the Dependency Injection pattern[EB/OL].省略/articles/injection.html.

[9] JBoss Community. Hibernate:Object/Relational Mapping and Object Persistence for Java[EB/OL]. 省略/.

[10] 杨帅.基于SSH的CRM系统的研究和设计[D].重庆:重庆交通大学,2009.

[11] 刘晓明.Web设计开发过程中EXT框架的应用与研究[D].大连:大连海事大学.2009.

[12] 吴昊.基于Struts和Hibernate构建GSM电子运行维护系统.成都:四川大学.2005.

spring框架篇9

关键词 : Spring security;电商;访问控制

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)14-0247-02

当今社会电子商务已经取得了飞速发展,这在很大程度上得益于计算机技术的发展。电子商务是基于信息网络平台按一定标准所进行的各类商务活动的总称。这种网络电商操作相比实体经营店,不仅降低了营业成本,更极大地方便了消费者直接通过互联网购买需要的商品,提高了交易效率。而在电子商务中,客户及商家最关注的问题莫过于安全性问题。如何设计安全可靠的电子商务交易平台,成为了电商系统构建需要解决的问题。本文阐述spring security安全构架在电商系统平台设计中的应用。

1 Springsecurity安全构架简介

1.1 Springsecurity安全构架概要

Spring是基于Java语言而开发出的一站式Web框架。Spring框架包含以下子框架:SpringMVC,Spring, SpringSecurity, SpringAOP 等。在数据库访问层,Spring可以整合Hibernate、iBatis等第三方框架,通过整合构成一个完整的Web程序框架。

在电子商务实践中,应用设计需要有一定的开源架构作支撑,实现数据库运行的最终目的。这个开源架构即Spring。现存系统架构大多是单层体系架构,Spring程序框架可以将其整合为一个有机结合的统一整体,使得架构中各个层面能相互协调运作,而且各层面间不相互冲突,把程序架构的能动性最大限度地发挥出来。Spring使用了AOP(面向方面编程)技术来实现安全控制。 Spring框架中,Spring Security子系统负责整个框架的安全。Spring Security实现安全控制的方法就是基于Spring AOP。

认证和权限控制是Spring Security要处理的两个主要领域。首先需要实现系统安全逻辑和业务逻辑在设计层面上的分离,要实现这个目标需要采用Spring Security提供的项目安全认证服务。在安全控制层面,现行的绝大部分身份认证模式都可以被Spring Security所识别,其根本原因在于这些身份认证模式采用的是第三方厂商运作,整个研究机构是采用统一标准,缺乏自身的特色和特点,不利用整个系统本身的运作安全。而Spring Security恰恰解决了这样一个难题,其支持的认证机制有以下几种形式:

同时,Spring Security也提供了一组深入的权限控制服务。该权限控制服务主要面向三个领域: Web 请求的权限控制,方法调用的权限控制和单个对象实例访问的权限控制。

1.2 Springsecurity安全构架构成

从整个框架运行看,Spring Security的安全框架包含了安全拦截器和安全控制管理组件。具体来说,安全控制管理组件又由认证管理器,访问决策管理器、运行身份管理器、调用后管理器四大部分组成。这一组成有着自己独特的运行方式和特点。Spring Security安全框架组成元素如下图所示:

访问系统中受保护资源的所有请求,都需要通过安全栏截器的拦截判断。因此,安全栏截器被视为Spring Security框架中资源访问必经的“大门”。 辨别用户身份的功能则由认证管理器提供,一般采取用户凭证辨别(即户名和密码)的方法来实现此功能。用户审核后的身份凭证需要与目标资源的配置属性进行比较,这一步通过访问决策管理器来实现。经过比较,如果用户有权访问目标资源,则执行授权。当目标资源的访问权限发生变化时,则需要通过运行身份管理器来确认当前用户的权限是否与之相适应。用户是否有权查看目标资源的返回结果则依靠调用后管理器来实现。

2 Springsecurity安全构架在电子商务平台系统中的设计

在电子商务交易中,业务安全性是至关重要的,而业务安全性的保障就是系统平台的安全架构,一个优秀的安全架构能有效保障业务交易的平稳安全,对商家和客户来说都是必不可少的。可以说,任何电子商务业务都离不开安全机制的保障,当今电子商务发展迅速,系统的参与者和范围都逐步扩大,相应的业务流程也变得复杂,平台对安全性的要求也越来越高。

在当前电子商务应用的安全性方面,以下几个问题是普遍存在的:

1)业务逻辑和安全逻辑没有做到设计和操作上的相对独立,目前二者还是耦合的。造成这一现象的原因主要是目前的电子商务应用系统还在采用面向对象的开发方式。

2)目前大部分电子商务系统在业务方法的保护方面有所欠缺,在操作上仅仅简单控制了对Web资源的基本访问权限。

3)传统访问控制技术的应用给企业应用系统带来维护上的不便。

通过Spring Security技术,这使得AOP方法得到了进一步运用,系统身份和安全性能得到了很大提高,将安全系能和业务功能进行耦合,实现安全逻辑的提高,同时也使得业务逻辑进一步得到梳理。安全逻辑与业务逻辑是相对独立的一个系统,要保证两者之间目的的独立性,同时又要保证两者之间的平台运用的兼容性,使系统功能的可扩展性也得到了有效保障。

将Spring Security安全机制应用于电子商务平台中,其根本目的是为了保证应用系统的安全性,使得信息的管理更加科学,信息资源的保密程度更加固化。最大限度地保证系统信息资源的完整,同时也让系统安全管理有一定的灵活性和较好的通用易用性。系统的总体构架如下图所示:

Spring Security程序框架的设计包括以下几个部分:

2.1 系统权限设计

电子商务系统平台的基础就是权限设计。本文介绍的权限设计方法是基于角色的访问控制技术,具体过程如下:首先,将商家用户信息存储到系统用户表(sys―user)中,将角色信息存储到角色信息表(sys―group)中,将权限信息存储到权限信息表(sys junction)中。多个角色可能会共同拥有权限信息表中的目标资源,对于这种情况,需要建立角色/权限表(sys_group―fimction)对角色信息和权限信息进行唯一性定义。在具体操作过程中,将目标资源的url访问路径、业务方法等受保护的资源存储到权限控制码中。数据库的E-R关系图如上所示。

2.2 身份认证模块设计

系统的安全防护要经过的第一道关卡就是身份认证模块,该模块会对用户身份进行判断,只有符合规定的用户才能通过。身份认证模块统一栏截用户提交的业务访问请求,并对不同认证方式下的身份认证请求加以处理。用户可以采取不同的认证手段,身份认证模块,从实际情况出发,选取特定的认证提供者,在现用户身份上进行识别,这样的系统能够实现各种表单的认证,也可以实现证书的认证。如DAOAUTHENTICATIONPROVIDER可以实现普通的基于表单的认证、X509AUTHENTICATIONPROVIDER 可以实现基于 X.509 证书的认证。

统身份认证模块的时序图如下:

2.3 授权访问模块的设计

授权访问模块是在身份认证的基础上,建立起来的。系统首先要对用户身份的合法性进行判断,在此基础上再判读用户是否有权访问受保护资源。在授权访问中,Spring Security可以对其进行授权,根据访问请求,通过安全拦截器进行拦截,这种资源的访问拦截形式,可以实现业务逻辑与安全逻辑的一个耦合。通过两者之间的联系,进行平台过滤器,对其进行授权控制,使切面应用到各资源或者业务方法上,将相关的授权请求进行接收,从而根据权限进行判断,作出授权操作,实现这一安全机制的根本目标。

3 结束语

目前基于Spring Security技术的电商系统平台设计已经体现出一定的优越性,在商家及客户信息保护、安全交易方面都具有良好的操作性和实用性。通过其强大的认证和权限控制功能,为商家和客户的互联网交易提供了一个安全、便捷的环境。

参考文献:

[1] 丁振凡. 基于Spring Security的Web资源访问控制 [J]. 宜春学院学报, 2012(8).

spring框架篇10

[关键词] 电子商务 开源项目 轻量级J2EE 设计方案

一、引言

在基于J2EE的应用程序开发中,即使在提供优秀的开发工的任务。尽管J2EE平台承诺,开发应用很简洁、高效,但实际情况并非如此。在使用J2EE开发应用程序过程中,难于控制开发进度、开发效率低下、部署环境复杂、维护困难等问题层出不穷。对于中小型企业,使用完整的J2EE实现过于庞大,最终常导致开发的失败。

二、J2EE轻量级框架Struts+Spring+Hibernate

最近轻量级框架开始流行,所谓的轻量级是和以 EJB 为核心技术的复杂框架对比而言。轻量级框架致力于提供最简单的组件来构筑 Web 应用系统,Spring 是典型的一种轻量级架构,越来越多的开发人员开始关注并使用这种架构。通过Spring 组合其他专一的开源产品如表示层的 Struts、持久对象层的Hibernate,来构建应用系统,实现了J2EE简单化编程。根据技术选择原则,最终确定采用上述 3 种受欢迎的开源框架,建立一个整合框架:整体框架和业务层用Spring;表示层我们用 Struts;而持久层则用Hibernate。 整体框架如图1所示。

      

图1 J2EE轻量级框架

Spring是一个开放的框架,不要求一定要用Spring自己的解决方案,Struts作为表示层的成熟技术已经在市场上广泛的应用,Struts 可以很好地和 Spring 技术中间层紧密结合,Struts可以使用Spring提供的事务处理等特性,所以选择Struts作为框架的表示层技术。Spring按照资源管理的方法提供和Hibernate 的集成以及 DAO(data access object)实现和事务策略支持,Spring通过IoC(控制倒置)机制支持和Hibernate的集成,Spring能够很好的支持开发人员选择的O/R映射技术。

三、电子商务平台的系统开发原理

以网上商店为例说明电子商务平台系统的开发原理。

1.系统结构模型

轻量级J2EE开发平台承袭 J2EE基于组件的多层应用模型,在综合考虑用户界面、业务逻辑、数据存储的功能和逻辑的基础上,根据应用功能和应用逻辑划分层次,明确责任,实现松耦合的组件式架构。在技术层面上,使用Spring规划轻量级J2EE应用平台时,可以按职责将应用分成四层:域模型层、业务层、持久层、持久层。Spring作为业务层成为连接其他层之间的枢纽,允许层之间以松耦合的方式向其他层暴露功能而不必依赖特定的技术。其他的层分别负责不同方面的应用职责,对功能进行封装,明确地定义接口在层与层之间通讯。平台的分层架构如图2所示。

 

图2 开发平台分层结构

(1)域模型层。在一个应用中,首先需要使用一组对象来表达现实世界中的概念。传统的方法是使用DTO(数据传输对象)将数据库中的数据转化为问题域中的对象,在应用开发时需要额外的编码。引入域模型层,借助一组业务对象,实现问题域和计算机域的阻抗匹配,替代系统中数据传输对象;用对象的方式描述现实世界,真实的反映现实世界对象(如:订单、产品等),可以减少额外的编码,便于理解,降低代码管理难度。此外,域模型层的业务对象在各层之间进行数据传递和数据转化,承担各层之间数据通讯的载体,能够最大化地降低系统间数据传递的开销,而且业务对象代表了现实世界中的对象,使得系统在进行扩充、重构时,各子系统间数据传递部分不会受到影响。

(2)表现层。表现层是用户直接和软件交互的部分。表现层向用户展现软件系统的功能,响应用户的请求,并向用户呈现处理的结果。因而如果用户界面不甚高效,那么无论其他部分多么优良,都将于事无补。成熟的方式是采用MVC(模型-视图-控制器)模式组织表现层,分离用户界面代码(视图)与应用数据和业务逻辑(模型),然后使用控制器匹配视图和模型,减少数据表现、数据描述和应用操作的耦合,最终得到响应快速、界面美观的表现层。

(3)持久层。持久层位于应用的一端,负责将数据持久化。数据持久层的设计目标是为整个项目提供一个高层、统一、安全、并发的数据持久机制,将复杂的业务逻辑和数据逻辑分离,使系统的紧耦合关系转化为松耦合关系,完成对各种数据进行持久化的编程工作,并为系统业务逻辑层提供服务。数据持久层提供了数据访问逻辑,能够使程序员避免手工编写程序访问数据持久层,使其专注于业务逻辑的开发,并且能够在不同项目中重用已有实现,简化数据增、删、查、改等功能的开发过程,同时又不丧失多层结构的天然优势,继承延续J2EE特有的可伸缩性和可扩展性。

(4)业务层。从应用分层上,业务层位于中间层次。业务层又称作服务层。合理的构建业务层,可以降低层次之间的耦合度,增加业务的可伸缩性和灵活性。借助Spring的IOC容器,使用配置文件管理其他各个层次的依赖关系、装配业务组件,降低层次之间的耦合,实现插件式编程;借助Spring的AOP实现,集中处理系统中的企业级服务,如事务管理、日志管理等,使代码更加简洁,增强复用性,提高开发效率。

在应用开发中,域模型层将现实世界对象抽象为域对象,持久层负责将域对象和数据库对应起来,业务层调用持久层的数据逻辑,执行应用逻辑,处理表现层的请求并以适当地方式向用户展示处理结果。

四、电子商务平台的系统功能设计与实现

1.网上购物车的介绍。网上购物车是网上商店的重要组成部分。网上商店管理系统一般分为网上商店前台和后台两个管理子系统。后台管理子系统主要是管理网上商店的全部数据信息,一般由客户管理模块、订单管理模块、商品管理等功能模块组成。前台管理子系统的主要功能是引导客户(网站访问者)完成网上购物的过程,一般由商品浏览检索模块、会员访问模块、购物车等功能模块组成。网上购物车是网上商店的核心部分,客户通过网上购物车进行购物,集中结算,网上商店管理系统的组成如图 3所示。

图3 网上商店的整体规划      

2.网上购物车的功能。网上购物与到超市购物过程类似,顾客可以将商品随时放入购物车或从购物车放回到货架上。网上购物车的主要功能有:①新建购物车;②添加商品;③删除商品;④修改购物入购物车或从购物车放回到货架上。

3.用户系统的具体设计与实现。用户系统可以说是整个网上购物车最基础的部分,它负责对用户数据的处理,以及对用户权限的设定,用户系统是与其他系统紧密结合的一个基础系统。(1)用户系统数据库设计:数据库的规划与设计是一个系统成败的关键,只有良好的数据结构才能让整个系统可靠、健壮、可扩展。用户系统数据库可以通过 SQL语句建立以下表:members和groups。members表主要是记录用户信息,groups表是记录用户权限信息。(2)用户系统设计实现:创建了数据库结构后,就开始实现用户系统。主要涉及用户注册,用户登录。用户注册和登录的主要原代码包括显示消息、检查E-mail地址的合法性、检查登陆、检查用户名、检查密码以及E-mail等程序段。