ssh框架范文

时间:2023-09-18 18:50:47

ssh框架

ssh框架篇1

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

[8] Deanna Raineri. Virual laboratories enhance traditional undergraduate biologylaboratories,Biochemistry and Molecular Biology Education,2001(29).

ssh框架篇2

关键词:SSH 框架技术 事务处理

中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2012)10-0126-02

1、基于SSH框架技术开发WEB项目的思路

SSH是Struts Spring Hibernate三个框架技术单词的缩写。根据SSH框架技术整合后各负其职,各尽其责及软件代码复用的原则,应采用三层结构形式体现WEB项目开发流程,这三层依次为:表示层(Web层)、业务服务层(Biz层)、DAO层(数据访问层),这三层之间均采用接口方式进行声明及调用。分层开发结构图如图1所示。

之所以采用SSH框架整合技术设计并实现Java WEB应用系统,主要是因为这种整合后的框架技术可以实现具有结构清晰、复用性好、维护方便、高稳定性和高效率开发的Web应用程序。

其中,表示层(Web层):主要接受用户请求,以及数据的返回,为客户端提供用户界面以便进行交互。

业务服务层(Biz层):此层主要是表示层和数据访问层之间沟通的桥梁,通过对数据访问层的操作,并根据业务规则的制定、业务流程的实现来负责数据的传递和处理。

DAO层(数据访问层):有时候也称为持久层,其功能主要是负责数据库的访问,实现了O/R映射,将面向对象的操作转变为面向关系的操作。

实体类层:用于对必须存储的信息和相关行为建模的类,主要用于三层结构中的数据传递。

在用SSH框架整合技术开发的Java WEB项目整个流程中,由Struts负责项目的显示用户界面及处理结果,Spring负责项目中各组件间的组织、管理及依赖注入过程,Hibernate负责处理数据对象的O/R映射及持久化。

2、基于SSH框架技术的某系统功能实现

SSH框架之间各组件的依赖注入关系如图2所示,依次为表示层(xxxxAction)依赖业务服务层(xxxxBiz),业务服务层(xxxxBiz)依赖数据访问层(xxxxDAO),数据访问层(xxxxDAO)依赖SessionFactory,SessionFactory依赖数据源(DataSource)。下面以开发的某系统为例(注:以下代码中连接数据库为SQL Server2008)。

2.1 Spring框架依赖注入Hibernate框架

在Spring框架的配置文件applicationContext.xml中第一步,进行数据源配置;

value="jdbc:sqlserver://127.0.0.1:1433;databaseName=访问的数据库名">

第二步,进行SessionFactory配置;

第三步,注入Dao层;

第四步,注入业务逻辑层;

2.2 Spring框架组装Struts框架

第五步,注入表示层(action) ;

在Spring框架的applicationContext.xml中加上如下所示的代码:

程序的依赖关系都使用Spring管理起来了,Spring框架在经过依赖注入后,会把Struts和Spring整合到一起。在Struts框架中的Struts-config.xml文件中加入如下所示的注入过程。

path="/fwxx" type="Spring框架提供的类">

3、结语

ssh框架篇3

关键词:个性化博客;SSH;Struts2+;Spring+;Hibernate

DOIDOI:10.11907/rjdk.162409

中图分类号:TP319

文献标识码:A文章编号:1672-7800(2016)012-0074-03

0 引言

随着网络技术的发展,互联网人群网络素养越来越高。人们不再仅仅局限于在微信、微博、QQ互联等应用中作为信息的接受者,而是渴求担当信息的制造者和者。在这个人人都能运营自媒体的Web3.0时代,个人独特的见解和所产生的信息价值正深刻改变并指引着互联网的发展。以博客技术为代表的互联网应用,作为一种全新的载体承载着人们个性化的表达与展示。针对信息内容生产者的互联网博客应用系统有多种形式,如新浪博客,性能稳定、容量无限,但存在可扩展性较差的问题,人们只能使用系统提供的固有功能,而不能将个人的想法融入到博客设计中。鉴于此,本文提出了基于Struts2、Spring和Hibernate框架(统称SSH框架)的个性化博客系统。在SSH框架下,使用者可根据自己的需要,规划博客系统功能,制作个人特色的系统界面,从而更好地在互联网时代展示自己。

1 系统框架

1.1 基于MVC模式的Struts2

基于WebWork,Struts2发展为MVC[1]框架,它创造性地将数据库逻辑(Model层)、页面展示(View层)与逻辑控制(Controller层)分离,从而使整个应用程序代码更加健壮、优雅。当获取客户端发送的请求后,作为控制器的过滤器类StrutsPrepareAndExecuteFilter,根据struts-config.xml中的配置,调用Action类中的执行方法。该方法在经过Model层计算后,控制器向客户端呈现显示页面。Struts2的MVC模式有效增强了信息系统的复用性和可维护性[2]。

1.2 基于IoC和AOP的Spring

Spring是一个轻量级、一站式的Java企业级应用解决方案,它提供选择式的功能集成。本文使用Spring的IoC(Inversion of Control,控制反转)[3]和AOP(Aspect-Oriented Programming,面向切面编程)[4]功能模块。其中,控制反转IoC主要指由宿主容器完成依赖对象的初始化和注入,而不是传统应用程序中主动去获取所依赖对象。面向切面编程AOP则是对面向对象编程OOP的重要补充,它将散布在核心功能代码周围的权限控制、日志打印、事务管理等业务功能抽取出来,形成横断切面,从而降低程序耦合度、提高内聚性。

1.3 基于O/R-Mapping的Hibernate

Hibernate是流行的对象/关系映射(ORM)框架[5],它将程序数据以类表映射的形式持久化到数据库,从而使程序数据获得JVM之外的生命周期。这种对象/关系映射支持继承、多态、关联、组合、集合等多种面向对象的特征和形式。除此之外,Hibernate还支持加载、多种抓取策略,基于自动版本和时间戳的锁机制,从而提高应用程序性能。在可伸缩性方面,Hibernate既适合内部网中小规模访问级别应用,也服务于并发量高的集群式应用;在可靠性和扩展性方面,Hibernate具有良好的稳定性和可配置性。

1.4 SSH整合

SSH指Struts2、Spring、Hibernate三大框架整合实现MVC模式架构,以达到程序系统的稳定性、安全性、高效性。与传统的EJB(企业级JavaBean)[6]相比,SSH是轻量级的企业级应用框架,强调低侵入性、组件间的松散耦合以及分层性,从而能够快速适应需求变更和问题定位,极大提高了程序开发效率。在整合过程中,由Spring起中心桥接作用,分别将Spring与Struts、Hibernate整合,并进行单元(JUnit)测试,从而完成从应用表示层、业务逻辑层、数据持久层的连接贯通。

2 系统功能

在信息量急度膨胀时代,每个人都作为一个信息源存在。如何快速保存、整理、升华个人思想,并在互联网中进行交流、沟通、传播,是目前互联网应用亟待解决的问题。针对这些问题,本文试图从个性化博客方向作一些尝试和努力。首先,博客是个人自我展示的阵地和平台,可以通过博客宣传个人观点、看法以及认识;其次,通过博客可以实现问题的开放交流、讨论;第三,用户可以定制功能模块,如相册、页面皮肤、装饰等。在安全方面,既要有认证、授权功能,也要保证会话管理中用户个性化信息安全;在性能方面,可通过反向服务器、连接池、一二级缓存等措施来加速应用程序。

基于以上目标,本文个性化博客系统具有以下基本功能,如图1所示。

(1)文章编辑模块。该模块集成百度的富文本编辑器UEditor,支持可视化编辑和HTML代码编辑。前支持预览和按时间自动保存草稿功能,编辑完成后可设定文章分类和权限公开程度。

(2)文章列表展示模块。该模块分布在首页和后台管理页面中。在首页,文章列表支持分页显示和动态加载,同时支持基于主题和内容的信息检索。在后台管理页面,采用EasyUI前端框架展示文章的增删改查操作。

(3)首页界面装饰模块。该模块主要提供页面元素拖拉式排版、背景调色和页面皮肤换肤功能,同时提供首页配饰的增加,如小时钟、HTML5动态小游戏、音乐视频等。

(4)留言管理模块。该模块在于加深博主、访客及朋友之间的交流,在展现形式上支持树形列表。每当有新的留言和回复,都将以站内信息的形式通知接受方。

(5)相册上传下载模块。支持多照片和视频上传,并为上传照片增加自定义水印。在相片展示时,可设定浏览权限和相册封面。

(6)安全功能模块。根据用户权限设置操作权限,对用户进行权限分类管理。

除了以上功能外,还需要额外增加其它辅助功能,如日志管理、数据校验、多用户管理等。

3 关键技术分析

3.1 Struts2、Spring、Hibernate整合

三大框架的整合过程包括两个阶段[7]:①Struts2与Spring整合;②Spring与Hibernate整合。对于第一阶段,要在web.xml中分别加入Spring初始化容器对象的监听器ContextLoaderListener、Struts2的核心过滤器StrutsPrepareAndExecuteFilter, 还需要加入Struts2与Spring之间的整合包,这样,在配置文件struts.xml中,配置元素action的class属性不再是类全称,而是Spring容器中已配置的bean名称。对于第二阶段,只需将SessionFactory实例交给Spring容器管理,即在applicationContext.xml中指明数据库连接池相关信息、hibernate配置文件所在位置。另外,配置声明式事务管理。在进行上述配置后,通过简单的增删改查测试完成整合检验。

3.2 DAO设计模式

DAO(Data Access Object)设计模式是J2EE中常用的设计模式。通过DAO接口和DAO实现类,将数据库底层操作和高层业务逻辑分离。针对每个实体对象,都有相对应的DAO接口和DAO实现类。而对于各个DAO接口中的重复操作,可以抽取出来形成泛型类BaseDao,其中T的真实类型需要通过Java反射技术获得。DAO模式使项目层次更加清晰,划清了事务界限,增加了项目的可维护性。

3.3 基于Shiro的权限安全管理

Apache Shiro是简单易用的Java安全处理框架,其提供了认证、授权、加密以及会话管理等功能。传统的用户认证授权常常采用基于URL拦截的形式,将权限操作对应的URL加入到数据表的字段中,将过滤器中获取的访问URL与用户对应角色所拥有的权限表中的url字段相比对,成功后继续访问资源。这种方式的开发效率和安全性较低,一般使用成熟的权限管理框架。Shiro作为一款轻量级框架,可以实现B/S、C/S、分布式系统的权限管理,已被越来越多的开发人员所使用。Shiro中有一个重要的概念:Realm,通过自定义的Realm可以获取数据库中的用户、角色及权限信息。通过Shiro配置式的管理方式,简化了权限管理操作,增强了系统的结构性和整体性。

4 系统实现

4.1 数据库设计

系统基本实体类包括用户类、文章类、留言类、权限类、相册类、相片类。每个实体类在数据库中都有一张对应的表结构。本系统采用MySQL数据库。鉴于篇幅有限,本文仅给出用户、文章的实体表结构,如表1、表2所示。

根据业务需求,实体类与实体类之间发生关联关系,如图2所示。

4.2 系统流程设计

系统流程如图3所示,分为浏览首页、登录注册、验证、系统管理4个部分。首先,用户输入系统网址浏览博客首页,需要进行账户注册。然后根据注册帐号登录,登录过程中涉及到基于Shiro的认证和授权过程。进入系统管理界面后,既可以对博客进行个性化自定义设置,也可以对博客文章、图片、评论进行综合管理。

4.3 系统配置文件

根据系统框架和功能,系统配置以下文件,分别是Spring容器配置文件applicationContext.xml、 Struts2配置文件struts.xml、Hibernate实体/关系映射配置文件xxx.hbm.xml、日志配置文件log4j.xml、Shiro、Spring的整合配置文件applicationContext-shiro.xml以及web.xml。下面给出web.xml配置代码:

xmlns="http:///xml/ns/javaee"

xsi:schemaLocation="http:///xml/ns/javaee http:///xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

Blog

shiroFilter

org.springframework.web.filter.DelegatingFilterProxy

targetFilterLifecycle true

targetBeanName shiroFilter

shiroFilter

/*

org.springframework.web.context.ContextLoaderListener

contextConfigLocation classpath:applicationContext*.xml

struts2

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

struts2

/*

5 结语

本文提出了一种基于SSH框架的个性化博客系统设计与实现方法,分别介绍了Struts2、Spring、Hibernate的特点及功能。在关键技术方面,提供了三大框架的整合方法、DAO设计模式以及基于Shiro的权限安全框架实施方案。在系统实现方面,对数据库设计、系统流程设计及系统配置文件进行了讨论。作为一款个性化博客系统,重在强调用户的个性化定制操作,展示个人观点的特色页面和用户交流组件。

参考文献:

[1] PRAVEEN GUPTA,PROF M C GOVIL.MVC design pattern for the multi framework distributed applications using XML,spring and struts framework[J].International Journal On Computer Science And Engineering,2010, 2(4):1047-1051.

[2] 林萍.基于SSH+DWR的高校科研管理系统研究与实现[J].计算机应用与软件,2014,31(7):164-168.

[3] 阎娟娟,陈波,高秀娥.基于SSH架构的INQAS的设计与实现[J].计算机应用与软件,2010,27(3):22-26.

[4] 刘荣辉,薛冰.基于Annotation的Spring AOP系统设计[J].计算机应用与软件,2009,26(9):264-267.

[5] 吴茂昌,阳玉琴.基于MVC模式的Java主流框架整合技术研究[J].计算机与数字工程,2009,37(10):91-92.

[6] 陈立岩.EJB组件技术及应用[J].计算机技术与发展,2007,17(3):458-461.

ssh框架篇4

关键词:课程开发;教学模式

中图分类号:TP311.5-4

《主流框架SSH应用开发》课程是软件技术专业的核心课程之一,也是Java技术方向系列课程中的主干课程。其课程性质是技术类专业课。本课程旨在培养学生应用开源Java框架开发Web应用的能力,以培养学生实际开发企业级应用项目的主要技能为主线,重点围绕使用Struts开发Web、使用Hibernate OR映射实现数据库访问、Web应用开发模式等内容,培养学生使用Java技术开发复杂Web应用程序的技能。

1 课程设计的思路

在以能力为本位,项目和任务为载体的教学改革和以工学结合优质核心课程为主题的课程体系下,对《主流框架SSH应用开发》课程进行基于工作过程的课程设计。经过对行业企业发展需要和周边地区相关企业调研,对软件行业java web开发技术的职业岗位进行分析、调研,整合出《主流框架SSH应用开发》课程的典型工作任务,以此为依据,得出java web开发人员应具备的知识、能力和素质。针对信息系统是典型的java web开发应用系统,各个社区、公司、学校、政府部门都需要使用该系统,该项目系统的需求广泛,并且能覆盖主流框架的所有知识点,所以课程设计中,以此项目为载体,把该项目按照功能划分成5个工作任务11个子任务,每个工作子任务形成一个教学单元,每个教学单元有明确的能力目标、知识目标、素质目标。以教学单元为脚本,开发校本教材,采用基于项目驱动和工作任务为导向的教学模式实施教学。课程开发思路见图1。

2 教学内容的组织与安排

在教学内容的组织和安排上,以学生为本位,注重学生关键能力的培养,是学校的教学设备得到充分而又合理的应用,实现课堂教学的一体化,采用“项目为导向,任务驱动”的教学组织。为保证“项目为导向,任务驱动”教学的顺利实施,首先要构建“团队+资源”的教学条件,即“双师”结构教学团队、学生学习团队和大学空间城网上资源、精品资源共享课程。改革以课堂和教师为中心的传统教学模式,将理论知识、实践能力和综合素质提高三者紧密结合起来,把理论知识融于实践教学中,以教学资源和学生为核心,实施“项目为导向,任务驱动”教学过程。教学内容参考表1。

图1 《主流框架SSH应用开发》课程设计思路图

在每个学习任务的教学组织中,以学生团队形式在一体化教室内展开。在任务实施中,我们求学生团队的成员团结协作,各有分工,共同完成学习和工作任务。在成果展示时,师生共同参与,共同评价。学习任务结束后,由教室对学生的工作成果总结成绩,提出不足及其改进建议。

通过实施行动为导向、能力为本位、学生为主体的“项目为导向,任务驱动”教学,在“一体化”的教学条件下,进行教学组织,实现了融“教、学、做”一体,培养学生的团队意识、质量意识、自主学习的意识,达到了学生、学院、社会三方受益。

3 教学模式设计

基于以能力为本位、以信息系统项目案例为驱动的课程设计,开发出5个学习任务和13个子任务,每个子任务就是一个学习单元。每个学习单元都有明确的能力目标、知识目标、素质目标。构件“团队”+“课程资源”教学条件,实施以行动为导向,以学生为主体组织教学,同时,进行“三结合”的“四评”考核。采用现代教育技术和虚拟现实技术等多种教学手段,充分利用学院网络教学资源和大学空间城,建设课程教学支撑网站。对《主流框架SSH应用开发》课程进行基于工作过程的课程设计,重视学生在校学习与实际工作的一致性,以职业能力培养为中心,将学生职业能力的培养融入到教学全过程。通过SSH框架在信息系统中的案例,在“学生为本位,项目为导向,任务驱动”教学模式的实施中,有针对性地采取任务驱动、工学交替、课堂与工作岗位一体化等,使学生在真是的生产环境中得到锻炼,实现了基于“学”的“教”,从理论知识的存储转向职业能力的培养。通过实施“学生为本位,项目为导向,任务驱动”教学,使学生与教师之间、学生与学习环境之间构建出了良性互动的关系,实现了基于“互动”、“能力本位”、“任务驱动”的传授,从师生间的单向行为转向师生、生生间的双向行动。

4 教学模式的创新

以学生为主题、能力为本位、项目实施、任务驱动的教学模式中收获知识、掌握技能、掌握方法,学会做事、学会相处,感受实际工作过程,解决了以前以教师讲述知识为主体的教学模式下的学生学不进的问题。

参考文献:

[1]徐署华.基于岗位工作任务的高校软件专业课程建设探索与实施[J].中国校外教育,2010(S2).

[2]刘瑜,杨玫,赵秀丽.“项目驱动”教学法在JAVA教学中的应用[J].中国科技信息,2010(16).

[3]朱克敌.项目开发管理课程设计教学方法研究与实践[J].计算机教育,2010(16).

ssh框架篇5

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

[13] 李黎.J2EE框架和设计模式的研究与应用[D].成都:电子科技大学.2007.

ssh框架篇6

关键词:SSH三层架构;OJ系统;Struts;Spring;Hibernate;Ajax

中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)26-1698-04

Research and Design of the OJ System Based on SSH Three-tier Framework

YU La-sheng, REN Ju

(School of Information Science and Engineering,Central South University,Changsha 410083,China)

Abstract: Most of the current domestic OJ system is based on B / S, this passage analyzed and compared the traditional ways and advanced J2EE framework of the SSH three-tier framework of the technical differences in approach, from various angles on the three-tier framework of the superiority of SSH, and this OJ framework approach applied to the system brought about by the development of high, high maintenance and expansion of high advantages. Based on this framework programme of the Central South University ACM online evaluation results show that the operating system, SSH structure of the new OJ system and the traditional structure of the OJ system design approach, a breakthrough in response to slow, low efficiency and maintenance of low pressure in several major Bottlenecks.

Key words: SSH three-tier framework; OJ system; Struts; Spring;Hibernate; Ajax

1 引言

OJ(Onilne Judge)系统,是当前国内外为适应高速发展的信息科学技术,极力推广的一种在线练习和考试系统。系统应当具有权限控制,提供练习与考试,审核提交答案,统计考核结果等功能。在ACM事业于中国发展的十几年中,OJ系统的出现更有如雨后春笋,各大高校纷纷建立起自己的ACM网站。但由于这些起步较早的OJ系统,架构陈旧,技术更新较慢,十几年高速发展的ACM人群和在线体验群体开始对其承压量、响应速度等提出了新的挑战。传统的servlet+javabean技术已很难适应这种需求,我们必须采用新型的网站架构技术,有效得缓解当前高速发展的信息群体所带来的压力与负担。SSH(Struts+Spring+ Hibernate)主流架构技术首当其冲。

2 传统架构与SSH三层架构的对比分析

传统的J2EE架构方式采用纯Servlet+JavaBean或Jsp+Servlet+JavaBean。国内一批优秀的ACM网站都是由这种架构方式架构而成,如POJ等。

在纯Servlet+JavaBean架构年代,其业务代码,逻辑代码与业务展示代码均无可避免的在同一servlet中出现,此种架构直接导致代码结构混乱,其维护代价高,可拓展性差等缺点展露无疑。

JSP技术得出现一定程度上弥补了Servlet的尴尬局面,使得传统得架构开始走向MVC三层架构模式。我们熟知的MVC架构模型应如图1所示:

传统的架构技术表现层用Jsp+Servlet技术来处理,业务层使用JavaBean,访问层是JavaBean(即常说的Dao),与资源层的连接采用JDBC控制。此种构架方式带来的弊端有代码编写量大,开发效率低,JDBC连接的安全性没有得到保证,业务代码无法高程度脱离,资源管理需手动编写代码控制等等。

SSH三层架构的出现,极大程度上解决了传统架构所带来的问题。其架构模型与传统J2EE架构相似,关键差别在于各层内部如何实现。SSH三层架构体系中,表现层使用了Struts框架,实现了视图控制分离。Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。关于页面导航,将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。

业务层使用了Spring框架。Spring是一个业务层框架,一个整合的框架,能够很好地黏合表示层与持久层。而Spring作用于业务层的主要原因是,Service层需要处理业务逻辑和交叉业务逻辑,处理事务,日志,安全等,而这些与Spring的IoC,AOP等不谋而合,完美得实现了业务代码的高效分离。

Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。Hibernate的强大缓存机制能一定程度上的缓解服务器端频繁读取数据库的压力,这也是Hibernate被广泛使用得重要原因之一。而且Hibernate高效的权衡了运行效率、内存消耗和开发效率,并自动封装了事务控制,安全性代码等重要功能。

因此,SSH的三层架构无论从性能还是编码风格上都优于传统架构方式。

3 基于SSH三层架构的OJ系统设计与关键技术

3.1 系统需求分析和国内现状

中南大学近几年ACM事业刚刚起步,一个良好的ACM平台缺之不可。为避免踏上国内原有OJ系统的老路,系统设计采用了SSH三层架构体系。

ACM在线评判系统的需求主要有以下几个方面:

用户权限控制――包括用户身份验证以及提交解答前的用户登录状态判断等;

及时信息反馈――用户提交解答后即时告知用户其解答的正确性;

练习考试信息添加――管理员能随时添加练习和安排考试;

统计用户练习测试信息――系统能自动统计用户练习与测试的排名信息,供用户端和管理员端参考。

当前国内的OJ系统,以POJ,ZOJ等知名平台居首,其容压量和响应速度均已到达一个峰值。POJ的系统现已难支撑其广大的注册用户。新型的架构平台在此种情况下呼之欲出。

3.2 系统设计原则

以之前论述的传统架构方式与SSH三层架构的比较,结合现阶段J2EE领域的主流技术,新型架构的中南大学ACM在线评判系统依照以下设计原则进行设计:

1)响应速度快――SSH三层架构的数据库持久层采用了Hibernate框架,用其强大的缓存机制,使客户端不用每一次请求都与数据库交互,大大降低了服务器端时间和空间上的消耗,以加快响应速度。

2)承压量增加――在硬件设备和网络连接设备一定的情况下,采用高性能数据库连接池与Hibernate框架结合起来,有效的缓解并发连接高峰期的连接数压力。

3)业务拓展性高――采用的三层架构方式将表现层、业务层和数据库持久层分离开来,Spring对业务层的管理,使业务拓展更加方便。

4)开发效率高――以SSH三层架构搭建的灵活性,节省编码人员大量编写重复代码的时间。而且架构应可其高分离性,在编码阶段实行分工编写模块,整合期达到零代价整合。

5)可维护性高――系统层次必须分明,以方便程序员对不同层面的代码维护不会对其他层面的代码造成太大影响。

6)代码重用性高――使用struts框架将view层独立出来,使页面代码具有高重用性。Spring层对业务代码的管理,使得业务层能专注于业务逻辑,使业务层也具有高重用性。

3.3 系统架构设计

依照新型架构系统的设计原则,将SSH架构搭建好之后的架构模型图应如图2所示:

在SSH三层架构的系统中,对象的调用流程是:jsp-> Action-> Service ->DAO ->Hibernate。 数据的流向是 ActionFormBean接受用户的数据,Action将数据从ActionFromBean中取出,封装成VO或PO, 再调用业务层的Bean类,完成各种业务处理后再forward。而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作。

3.4 架构中引入的关键技术

为了使中南大学ACM在线评判系统达到其最优性能,单从架构上入手是不够的。在搭建好三层框架之后,引入了一些三层架构必备的J2EE主流技术和判定技术。并将这些关键技术融合于各层框架之中,使系统更具有完整性和统一性。

3.4.1 内核判定技术

OJ系统的核心处理程序在于如何验证用户提交答案的正确性。在此处我们的设计思想是,将用户提交答案的验证封装成一个判定类供业务层调用,每当业务层需要对用户的提交代码进行验证时都调用此类中的方法来进行处理。

而在判定类的内部运用了多线程机制,即为每一个提交验证用户开辟一个线程进行处理。判定类中的判定方法应针对用户提交的语言不同去调用不同的底层编译器进行处理。这里应运用到JAVA程序调用外部程序方法。其判定的主要算法为:

public boolean Compile(String text) {

try {

FileOutputStream out = new FileOutputStream(file); out.write(text.getBytes());

try {

FileInputStream input = new FileInputStream(file);

solution.setCodelength(Double.valueOf(input.available()));

input.close();

} catch (Exception e) {

e.printStackTrace();

}

String comstr = plie + " " + workpath + "main" + " "

+ file.getAbsolutePath() + "\n";// C++编译器指令

String cmd = Shell;

Runtime runtime = Runtime.getRuntime(); // 开辟进程,运行编译器

Process process = runtime.exec(cmd);

OutputStream output = process.getOutputStream();// 获取进程输出流

output.write(comstr.getBytes());

BufferedReader buff = new BufferedReader(new InputStreamReader(process.getErrorStream()));// 获取编译后的错误信息

for (long l = System.currentTimeMillis(); l + 10000 > System.currentTimeMillis()&& (error = buff.readLine()) != null;) {

result += error + "\n";

}

try {

process.waitFor();

process.destroy();

} catch (InterruptedException e) {

e.printStackTrace();

}

if (!result.equals("")) {// 生成.exe文件,输出错误信息

solution.setErrorcode(Format.formatErrorCode(result,workpath+ "main.c:"));

solution.setResult("Compile Error");

return false;

} else {

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

3.4.2 Ajax技术

此技术广泛应用在中南大学的ACM评判系统中,实现了客户端与服务器端的异步通信。运用此技术同步了在线测试时客户端与服务器端的时间进度,并将一部分操作代价转移到了客户端进行,减轻了服务器端的压力,增加了系统的承压量。在设计中,将Ajax配置写在各界面对应的js文件中,其创建连接的代码为:

function createXMLHttpRequest() {

if (window.XMLHttpRequest) { //Mozilla 浏览器

XMLHttpReq = new XMLHttpRequest();

} else {

if (window.ActiveXObject) { // IE浏览器

try {

XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");

}

catch (e) {

try {

XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e) {

}}}}

}

3.4.3 数据库连接池技术

数据库连接池采用hibernate兼容的proxool,最大并发连接数设置为300,以供应小于300人同时的提交连接。Proxool数据库连接池部署在数据库持久层,与hibernate一起管理着系统与资源层的连接。在hibernate框架中加入proxool数据库连接池,需要在hibernate配置文件中添加以下配置信息:

pool1

org.hibernate.connection.ProxoolConnectionProvider

/com/csu/hibernate/xml/db.properties

3.4.4 线程安全控制技术

在用户提交代码进行审核的过程中,内核编译是一个多线程机制,而底层编译器一次只能单独处理一个提交事务,若同时有多个用户产生提交请求,便容易引起竞争共享资源,导致数据出错。因此在用户提交代码处理业务处应使用java同步机制,即在业务层处理用户提交信息业务外部加上synchronized关键字。在代码中的实现方法为:

try {

synchronized (m) {

…………….; //此处为提交业务处理的详细代码

}

}catch(Exception e){

e.printStackTrace();

}

4 系统实现成果

中南大学ACM在线评判系统已上线将近一年,在这近一年的时间里,系统从各个方面体现了新型架构带来得稳定性和健壮性。通过对比传统架构的OJ系统与中南大学ACM在线评判系统,在同等硬件条件下,可得出数据统计如表1所示:

5 结论

从上文两种架构方式的技术比较,及两种架构方式所设计的OJ系统性能对比来看,以SSH三层架构所搭建的新型OJ系统,在原OJ系统的承压量、响应速度和维护效率等几大瓶颈上都有了一定程度的突破。中南大学ACM实际案例证明,SSH三层架构的OJ系统较传统J2EE架构优势明显,势必将成为当今OJ系统设计的主流。

参考文献:

[1] 库尼亚瓦姆.深入浅出Struts[M].北京:人民邮电出版社,2007.

[2] 巴姆巴拉.J2EE技术内幕[M].北京:机械工业出版社,2007.

[3] 沃尔斯,布雷登巴赫.Spring In Action[M].北京:人民邮电出版社,2007.

[4] Sangeetha,Kumar.深入浅出J2EE架构――应用程序设计与部署的原理[M].北京:清华大学出版社,2006.

[5] 余浩东.J2EE应用框架设计与项目开发[M].北京:清华大学出版社,2008.

ssh框架篇7

肖岳峰,桂林理工大学副校长、教授。

摘要:目前高校食材的采购存在诸如流程繁琐、价格高、市场信息和采购信息掌握不及时、滋生腐败等一系列问题。然而,造成这些问题的根本原因在于现有制度的不完善导致其无法应对高校食堂公益性与采购市场性之间的客观矛盾。第三方采购平台是为解决现有的高校食材采购制度中的问题而提出的采购制度的创新。

关键词:高校食材采购;第三方采购平台;ssh轻量级框架;J2EE

近年来,随着高校后勤社会化改革的深入、各种新兴采购制度的提出,不断更新了高校食堂伙食原材料的采购工作,但都没有从根本上解决现行采购制度的弊病。网络飞速发展的大环境使以基于互联网的第三方采购平台的形式来替代现有的采购制度成为可能。

一、 第三方采购平台的提出

现如今高校普遍采用的是招标采购制度,招标采购虽然是目前的主流采购制度,但仍然存在供应商来源狭窄、采购流程繁琐、人力成本高、容易滋生腐败等问题。在这种情况下,国家有意推行联合采购、农校对接采购制度,但有由于种种缺陷而无法推行成功。

面对现行采购制度的诸多缺点以及推行采购制度的各种不可行因素,找到一个更为合理且可行的采购制度成为业界急需解决的问题。

如果稍加关注物流、供应链问题,相信第三方物流必定是个不陌生的字眼,如今的物流领域中,第三方物流已成为主流配送方式,它有配送更专业、成本更节约、资源利用更合理的诸多优点,因此我们大胆提出在高校后勤食材采购中引用第三方采购,即建立一个与高校、供应商没有隶属关系的中间组织,整合双方资源和供求信息,以开展业务合作的形式为双方提供各类采购服务并以此获益。在互联网飞速发展的大趋势下,引入网络平台可以有效节约人力、物力成本,并可使信息反馈更加及时,减少买卖方之间的信息不对称情况。

鉴于此,建立一个第三方采购平台,学校利用网络所需的物品,扩大了供应商范围,供应商通过网上价格和质量竞争,将质优价廉的商品配送到指定地点。可以真正实现多所学校的集团采购,而又能保证各个学校的独立采购主动权,解决了过去一直探索的“联合采购”但从来没有实现的难题,可以大大降低采购成本。网上采购避免交易双方有关人员的私下接触,有利于实现实时监控,避免“暗箱操作”,可以有效提高采购过程中的透明度。

二、系统主要功能结构

(一) 主要功能模块简介

本平台主要致力于解决高校食材采购现存诸如灰色交易,信息不对称等问题,实现高效后勤食材采购透明化、网络化。

本平台现在只设计用于高校后勤食材采购,但其还可以发展为高校其他用品采购乃至企业食材采购,因此将其分为食材采购、供应商管理、高效管理、食材管理、需求信息管理五个子系统。

其中食材采购为平台的核心子系统,其主要功能是供应商商品信息(为避免价格战这里商户相互之间看不到价格),高校根据自身需求通过查看食材的介绍和其他用户对于该供应商的评价信息(为避免高校与商户线下联系这里将商户的联系信息屏蔽)进行选择,一旦选中了合适的供应商则将需要的食材拍下形成采购单。

(二)主要用例分析

系统前台参与者为食材供应商(即卖方),高校采购者(即买方),后台参与者为第三方平台管理者。用例分析有:(1)供应商:准备在本平台卖食材的用户,主要用例为系统登录、食材信息。(2)高校采购者:准备在本平台挑选食材并采购的用户,主要用例为系统登录、浏览食材信息和商户评价信息、选择商户进行交易、按照采购单支付货款。(3)平台管理员:第三方采购平台的管理者,主要用例为后台登陆、用户管理、食材管理、采购单管理、交易管理等。

三、关键技术分析

(一) MVC模式

MVC 是一种流行的软件设计模式,它可以强制性的使 Web 应用程序的输入、业务处理和展示分开,MVC 典型的设计模式是将整个应用分为模型-视图-控制结构,它很好的实现了数据层、业务层、表示层的分离。

(二) SSH框架

SSH轻量级框架是目前企业级应用开发主流的设计框架 。

如图1所示,SSH轻量级框架成功的采用 了Struts、Spring、Hibernate的优势,规避了三个框架的缺点,使得各个框架可以充分发挥自己的优势。

四、采购平台系统设计

(一) 平台架构设计

由于平台建立主要是用于高校食材采购,一旦实际使用将会有众多供应商和高校通过本平台食材信息、采购需求,会有很大的访问量、并发数高,并且这种应用属于分布式网络应用的典型,适宜采用B/S开发模式进行开发。按照多层设计理论,在构建企业及的应用时,系统往往分为三层结构或者多层结构,这里将之划分为表示层、业务层、数据持久层,对于每一层上一章已做介绍这里不再赘述。因此,系统拟采用Java EE的技术体系,并使用SSH轻量级框架构建三层系统结构。

(二) 平台业务模型和业务流程

采购平台可分解为前台和后台两部分,其中前台主要用户有高校(买方)和供应商(卖方),前台的主要功能是提供一个平台给供应商摆列产品、给高校需求信息并选择合适的供应商进行采购,系统后台的使用者为平台管理者(即脱离高校与供应商的第三方),管理者主要对平台进行管理,包括通过注册信息甄选合格供应商,对于已注册用户进行管理,对于操作不当或有违约行为的用户进行警告或罚款。

平台的业务流程描述按照数据持久层、控制层、表示层的顺序进行。

首先,平台的底层数据库使用MS SQL Server存放数据,使用Hibernate框架以面向对象方式操作数据库实现持久化对象层(即PO/VO层 )。

其次,对于控制层使用Spring框架,Spring框架贯穿整个中间层,其作用是分别对Web层、 Service层(业务逻辑层),以及DAO层(数据访问层)、持久层进行无缝整合。

WEB层应用 Struts框架,通过调用业务逻辑层获得业务数据,然后将其返回给表现层显示。最后,通过JSP页面的开发应用,实现了表示层。

第三方采购平台采用了分层结构设计,遵循 Java EE技术体系,应用了轻量级的框架即SSH框架,采用面向接口编程,并在表示层实现了MVC模式。相信在此基础上平台将可以顺利进行下一步的开发工作。(作者单位:1. 桂林电子科技大学;2. 桂林理工大学)

参考文献:

[1]张以保,马东坤. 高校学生食堂物资联合采购实践与思考[ J ].高校后勤研究.2008,5:69-70.

[2]滕光富. 基于农校对接的物流运作模式研究[ J ].物流工程与管理.2012,6:7-9.

[3]李浩. 基于J2EE的城建办公系统的设计与实现[ D ].成都:电子科技大学,2010.

[4]叶展豪. 解析SSH框架构成[ J ].软件开发与设计 .2010,49:19-20.

ssh框架篇8

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

[4]Jboss Community.Hibernate.http://.

上一篇:框架图范文 下一篇:mvc框架范文