ssh框架范文
时间:2023-03-28 21:03:06
导语:如何才能写好一篇ssh框架,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
SSH是一种基于J2EE技术的MVC软件开发框架,它可以大大降低J2EE程序开发的难度,提高开发效率?本文试图通过对SSH框架的组成与功能进行深入的分析,揭示其较传统J2EE开发工具的先进之处。
1. SSH框架技术简述
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。相比传统的J2EE开发工具,它具有一系列独特的优点?
首先,SSH框架能够有效的降低开发成本?缩短开发周期?SSH作为一款开源的框架,无需部署在成本极高的大型服务器上,很多时候只需要配合APACHE一类较便宜的服务器使用。
其次,SSH作为一款轻量级的框架可以有效降低系统开销,同时它还可以与异步JavaScript和XML框架同时使用,不仅能够对用户体验产生极大的改善,且有助于提升系统性能。
最后,由于SSH框架建立于J2EE的基础之上,所以其同时具备了J2EE的安全性与跨平台优势?同时由于其往往将组件相关的配置与关系写入XML配置文件,使其在面对需求变化时可通过简单的对配置信息的修改来加以实现而无需对系统进行大的修改。2. 表示层框架Struts简介
最初Struts于2002年问世的时候,由于其创始人希望其能够对标签库与JSP等开发技术有所助益,所以它被设计成了一个开源项目。它很好的对MVC系统的开发提供了底层支持,有效的缩短了运用MVC模型对WEB应用的开发周期,最终成为了MVC模式事实上的行业标准。
Struts由四个组件协同工作,其中ActionServlet类是中央控制器,在每个项目中唯一存在。而Action作为分控制器对具体流程进行实际上的控制,调用相应的业务逻辑模块来实现功能并送出结果?ActionMapping作用是帮助控制器将请求映射到操作,ActionForm的作用则是接受和存储表示层中接受的数据。这四部分共同实现了Struts框架对流程的控制,
由于Struts框架属于开源项目,这给了我们深入理解其内部实现机制的机会?总体而言,Struts的优势很明显?它的优点在于它拥有大量的成功案例可供开发者借鉴?同时提供了丰富的标记库(Taglib),可大大提高开发的效率?而它将表现与逻辑分离的做法,使得结构更加清晰,有助于开发者将精力集中于业务逻辑的实现?最后,它具有优秀的页面导航功能,这对后期的维护有着不可估量的好处。3. 持久层框架Hibernate简介
Hibernate是一款开源的对象——关系映射框架,它对JDBCAPI进行了极其轻量级的对象封装,从而极大的扩展了开发人员对数据库的操纵程度,同时它封装了数据访问的细节,使得开发者可以将更多的精力集中在业务逻辑上。
Hibernate有6个核心接口,分别是拥有负责将其初始化的SessionFactory接口,负责执行被持久化对象的CRUD操作的Session接口,负责事务相关的操作的可选接口Transaction以及负责执行各种数据库查询Query接口与Criteria接口?Hibernate通过这些接口,对持久化对象进行各种存取操作并进行事务控制。
Hibernate主要有四块内容:持久化类PO,它是数据库表的一个映射,是Hibernate的操作对象,而操作结果会反映到对应的数据库表中,映射文件XMLMapping,它存放着PO和数据库表的映射信息,如表名和类名的对应,PO的属性与数据库表中字段的对应,hibernate.cfg.xml,存放着连接数据库的配置信息已经映射文件的路径,在Hibernate初始化时Configuration会加载该文件信息到计算机内存,并创建一个SessionFactory对象,把读入的配置信息拷贝到SessionFactory对象的缓存中,HibernateAPI,主要是前文中所述的六大接口,彼此配合最终实现Hibernate对PO的各种操作并持久化到数据库中。4. Spring框架简介
Spring框架提供了一种能够完全独立于各种应用服务器并可与现有框架无缝整合的解决方案,其主要通过控制反转与面向方面编程两种方式来进行实现,其主要优点在于无论你是否使用了EJB,SPRING都能够有效的对你的中间层对象进行组织,它为数据存取提供了一个统一的框架,并能够以一种统一的方式对不同的程序与项目的配置文件进行处理,它是一个全面的解决方案,包括了非常丰富的内容,包括视图层?模型层?数据层等,它提供了很多原来只有EJB能提供的功能(如声明式事务管理),却又无须运行在EJB容器上。
Spring框架由七个有着明确定义的模块组成,其中SpringCore是它的基础部分,是控制反转的承载容器?而在此基础上衍生出来的SpringAOP则提供了对面向类编程的支持,Springweb与Springorm则分别提供了对MVC框架与ORM框架的支持,SpringDAO则简化了JDBC编程,使代码更健壮,SpringContext作为一个强大的集成工具箱,有利于进行企业级程序的开发,而相比之下,SpringWebMVC则声名不彰,尽管它作为一款MVC框架提供了比Struts更自由的配置度但却未能得到广泛的应用,以上七个模块均可单独或联合实现,具有较高的自由度。5. 使用Spring对Struts与Hibernate加以整合
我们从前文中可以清晰的看到,Struts是目前应用于MVC框架中的业界实际标准,其具备高度的可靠性与稳定性,同时将表现与逻辑分离,从而使得结构更加清晰?同时提供了丰富的标记库(Taglib)与页面导航,大大提高了开发的效率与易维护性,但是在模型层却缺少相应的实现。
而Hibernate作为目前业界最成熟的持久层框架之一,封装了数据访问的细节,使得开发者可以将更多的精力集中在业务逻辑上,极大的提高了开发效率。
SSH框架的指导思想就是将这两个框架有机的整合在一起,充分发挥出二者各自的优点, Spring通过Springweb与SpringORM两个模块分别对Struts和Hibernate两个框架进行了整合,为企业级的应用程序提供了一套模块化的一揽子解决方案,在让前者发挥出其对程序流程的良好控制作用的同时让后者负责数据库的访问,以达到优势互补、降低开发难度、提高开发效率的目的。
篇2
关键词:Java;中文乱码;ssh;数据库;参数传递
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)21-5157-02
Research on Chinese Characters Garbage under SSH Framework
ZHANG Jin-meng, SU Jian, ZHAO Yao
(Shijiazhuang Vocational College of Posts and Telecommunications, Shijiazhuang 050021, China)
Abstract: Chinese characters garbage of Java web programming, is a long time and headache problems. Particularly, for just contact Java programming personnel, this problem is more trouble. This article introduces the solution of Chinese characters garbage, from the database code pages and jsp chinese parameters, ajax chinese characters pass those three points in the java web program under ssh framework.
Key words: Java; Chinese characters garbage; ssh; database; parameters pass
1 Java中文乱码问题的产生原因
在Java Web的应用中,中文字符乱码问题是个由来已久和让人头疼的问题,尤其是刚刚接触Java Web编程的人员,往往在解决中文字符乱码问题上花费了大量的时间和精力。
要了解Java中文乱码问题的产生原因,先要从Java的字符编码说起,常用的Java字符编码集有以下几种:
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码),是基于常用的英文字符的一套电脑编码系统。我们知道英文经常使用的字符、数字符号被计算机处理时都是以二进制码的形式出现的。这种二进制码的形式就是所谓的ASCII码。每个ASCII与一个8位二进制数对应。其最高位是0,相应的十进制数是0-127。另有128个扩展的ASCII码,最高位都是1,由一些制表符和其它符号组成。ASCII是现今最通用的单字节编码系统。
GB2312:GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集-基本集》。主要用于给每个中文字符指定相应的数字,也就是通行编码。一个中文字符用两个字节的数字来表示,为了与ASCII码有所区别,将中文字符每一个字节的最高位置都用1来表示。
GBK:为了对更多的字符进行编码,国家又了新的编码系统GBK(GBK的K是“扩展”的汉语拼音的第一个字母)。在新的编码系统里,除了兼容GB2312外,还对繁体中文、一些不常用的汉字和许多符号进行了编码。
ISO-8859-1:ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。 ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚,没有被收录在ISO-8859-1当中。
Unicode:这是一种通用的字符集,对所有语言的文字进行了统一编码,对每一个字符都用2个字节来表示,对于英文字符前面加“0”字节的策略实现等长兼容。如“a”的ASCII码为0x61,Unicode就为0x00,0x61。
UTF-8:Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
Java使用Unicode来存储字符数据,处理字符时通常有3个步骤:
1)按给定的字符编码形式,从源输入流中读取字符数据;
2)以Unicode编码形式将字符数据存储在内存中;
3)按指定的字符编码形式,将字符数据编码并写入目的输入流中。
所以Java处理字符时总是经过了两次编码转换,一次是从指定编码转换为Unicode编码,一次是从Unicode编码转换为指定编码。如果读入时用错误的形式解码字符,则内存存储的是错误的Unicode字符。而从最初文件中读出的字符数据,到最终在屏幕终端显示这些字符,期间经过了应用程序的多次转换。如果中间某次字符处理,用错误的编码方式解码了从输入流读取的字符数据,或用错误的编码方式将字符写入输出流,则下一个字符数据的接收者就会编解码出错,从而导致最终显示乱码。
2 中文字符乱码问题的分类和解决方法
SSH框架即strut+hibernate+spring,是目前比较流行的开源框架,提出了一种开发J2EE Web应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。本文分析了在开发工具为Eclipse,数据库为oracle,开发框架为SSH,应用服务器为tomcat的环境下中文字符乱码问题的分类和解决方法。
2.1 数据库写入和读出乱码
一旦数据库创建后,数据库的字符集是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集是十分重要的。数据库字符集应该是操作系统本地字符集的一个超集。存取数据库的客户使用的字符集将决定选择哪一个超集,即数据库字符集应该是所有客户字符集的超集。
在oracle中,我们关心的是三个地方的字符集:oracle服务器内部的字符集;ns_lang变量里保存的字符集,客户端应用的字符集。在Java编程中,需要统一Java应用中的字符集,oracle服务器内部的字符集,ns_lang变量里保存的字符集。通常,在Java开发中, oracle10g在创建数据库实例时需要指定SIMPLIFIED CHINESE_CHINA.ZHS16GBK字符集。有时,在安装oracle过程中自动创建数据库实例时使用AMERICAN_AMERICA.WE8ISO8859P1字符集或者一些与Java字符集不兼容的字符集,就会出现乱码问题,这时需要先安装数据库,不自动生成数据库实例,在安装完数据库之后,再通过oracle配置和移植工具DataBase Configuration Assistance创建数据库,在图1的界面中选择ZHS16GBK字符集。
2.2 JSP页面显示和传递中文参数乱码
要解决这类乱码问题,涉及到几个方面的设置:
1)在struts的配置文件struts.properties中设置struts.i18n.encoding=gbk,struts.i18n.encoding用在了请求和返回两个阶段中流的编码方式,该参数为gbk时,相当于调用HttpServletRequest的setCharacterEncoding()方法。
2)在web.xml中添加下面的程序代码,指定字符过滤器对字符的编码方式为gbk。
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
gbk
encodingFilter
/*
3)在编辑器中用gbk编码保存JSP文件,并设置JSP文件开头的,其中pageEncoding用来告诉tomcat此文件所用的字符编码。Tomcat以此编码来读取JSP文件并编译。还要设置,当JSP页面用post方法提交数据时,用此处指定的编码方式编码。
4)设置Tomcat的URIEncoding,如果URIEncoding不加以设置,则默认使用ISO-8859-1来解码URL,设置后便用设置的编码方式来解码。这个解码同时包括Path部分和查询字符串部分。即在Tomcat配置端口的语句中加入URIEncoding="GBK"。
进行完这些设置之后,基本上就不会出现JSP页面乱码问题了。
2.3 Action中redirect传递中文参数乱码
在开发中有时需要用response.sendRedirect做转向,它其实是向浏览器发送一个特别的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上能够看到地址的变化。通常sendRedirect需要把参数挂在地址后面以&分隔传递,传递中文字符时,有时会需要乱码,这时就需要用到Java的URLEncoder类了,这个类有个encode方法,形式为public static String encode(String s, String encoding),在encoding参数中,可以指定字符编码的方式,通常我们传递中文字符时,需要这样写ceshi.jsp?param1=.URLEncoder.encode(“你好”,”gbk”)。这样就能防止传递的中文参数乱码了。
2.4 Ajax传递中文参数乱码
Ajax即“Asynchronous JavaScript and XML”(异步JavaScript和XML)。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。
Ajax默认中文提交以UTF-8格式,解决Ajax中文参数乱码问题有两种方式,一种是提交中文后,在服务端用UTF-8编码提取参数:request.setCharsetEncoding(“UTF-8”);String str=request.getParameter(“param”);另一种是在Jsp页面用encodeURI编码两次,即encodeURI(encodeURI(”str”)),然后在服务端用String str=request.getParameter(“param”); .URIDecoder.decode(str, “UTF-8”)。
3 结束语
本文介绍了在开发工具为Eclipse,数据库选用oracle,开发框架选用SSH,应用服务器选择tomcat的环境下中文字符乱码问题的分类和解决。根据环境的不同,可将文中编码为GBK的部分替换为其它编码来解决中文乱码问题。
参考文献:
[1] 李刚.轻量级J2EE企业应用实战[M].北京:电子工业出版社,2007.
篇3
关键词:Android;SSH;框架;客户端;服务器端
中图法分类号:TP311.52
随着人们要求的提高以及3G网络的发展,传统互联网已不能满足人们的要求,移动互联网应运而生。Android系统作为目前最为流行的智能手机平台,其相关应用越来越多。本系统开发了一个基于Android的校园购物平台,为在校学生提供一个买卖商品的平台,满足学生物品交换的需求。
校园购物系统(Business In School,简称BIS),是一个学生校内交易的平台,用户可以使用该平台进行商品检索,找到自己需要的商品,联系卖家进行面对面交易,也可以二手交易,或者做为一个换客,以物易物。由于平台只面向校内,所以不提供交易风险担保,平台只是提供给买家和卖家一个相互了解渠道。
1 系统架构设计
校园购物平台有服务端及客户端,客户端主要用到Android技术。
1.1 Android客户端设计
客户端使用Android技术[1],借助该技术可以将客户端系统很好的移植到手机上,使用户可以随时随地登录到此系统上。客户端页面主要由所谓的活动(Activity)组成,每个活动之间由Internet负责页面的跳转及页面之间的数据传递。
1.2 系统服务器端架构设计
校园购物平台的服务端采用MVC分层设计思想,将各个层面互相独立,便于系统的开发以及后期的维护。本系统采用SSH(Structs+Spring+Hibernate)框架来实现,整个服务器端扩展性强,可维护性高。数据库通过利用Hibernate的数据库映射工具完成从表到Java类的映射,通过Hibernate对该对象完成持久化操作;然后通过使用Spring的控制反转机制(IoC)将对象之间的依赖关系交由Spring进行控制,从而避免硬编码所造成的过度程序耦合[2]。
表示层,负责逻辑层与表现层的交互。调用业务逻辑层,并将业务数据返回给表现层作组织表现,该部分采用Structs框架的Action处理。控制层负责拦截所有Http请求,然后根据用户请求决定是否需要调用业务逻辑控制器,如果需要则请求转发给Action处理,否则直接转向请求的JSP页面。业务控制层是整个系统的核心部分,它与实现的业务功能紧密联系,其中的各个功能模块各自实现不同的业务功能[3]。
业务逻辑层,负责实现业务逻辑,该层以DAO为基础,通过对DAO组件的模式包装,实现业务层组件与具体的数据库访问技术分离,使所有的数据库访问依赖于DAO组件,这样就可以把逻辑层与DAO层分开,达到松散耦合的效果[4],完成系统所要求的业务逻辑。
数据持久层,负责与持久化对象交互。该层封装了数据的增、删、改、查的操作。
持久化对象,通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为框架。Spring框架贯穿整个中间层,将Web层、业务逻辑层、DAO层和持久化对象无缝整合,其数据服务层用来存放数据。
2.2 服务器端实现
2.3 运行效果图
3 结语
本文设计并实现了基于Android平台的校园购物系统。系统在实现过程中结合了软件工程理论和先进的智能手机应用,开发出符合手机终端用户行为习惯的系统,以方便自己的生活和学习,具有很大的实用价值。
参考文献:
[1][英]梅尔.Android高级编程[M].王鹏杰,霍建同译.北京:清华大学出版社,2010.
[2]李刚.整合Struts+ Hibernate+ Spring应用开发详解[M].北京:清华大学出版社,2007.
[3]余志龙.GoogleAndroidSDK开发范例大全[M].北京:人民邮电出版社,2O10.
[4]孙鑫.Struts2深入详解[M].北京:电子工业出版社,2008.
[5]李宁.人人都玩开心网:gxtJS+Android+SSH整合开发Web与移动SNS[M].北京:电子工业出版社,2010.
[6]徐玲,蒋欣志,张杰.手机二维码识别系统的设计与实现[J].计算机应用,2012,32(5):1474-1476.
篇4
关键词:Spring Struts Hibernate 教师科研管理系统
中图分类号:TP311.52 文献标识码:A 文章编号:1672-3791(2016)02(a)-0010-02
针对教学科研工作中存在的以下问题:更新不及时、新旧信息错杂、获取信息复杂,相关管理人员管理工作繁重等,笔者进行了教学科研Web系统的开发。以期解决现行管理过程中存在的问题,使对教学科研活动的管理有序有效地进行,并提供多种查询统计功能和教师业绩点计算功能,进一步减轻管理员的工作强度,同时实行多权限设置,增加权限赋予功能,使得查询统计功能在拥有安全性的同时,加强了灵活性[2]。
该论文将会讲述运用Web应用技术,采用目前较流行的Spring+Struts+Hibernate开发框架,实现教学科研管理系统,其中详细讲述管理员功能模块的设计与实现[3]。
1 系统功能分析
该文主要是对教师科研信息管理系统中管理员模块的设计,该模块主要包括资料上传、公告、授权功能、审批管理、人员管理和业绩点计算等功能。主要的使用者是管理员。
1.1 通知功能
在管理员登录之后,进入管理员界面。在此页面,可以进入通知页面,其中包括两部分,通知和通知管理。
管理员可以新建通知,对新建的通知,管理员可以,或存为草稿日后,或取消。对于存为草稿的通知,管理员可以修改后,或修改后存为草稿,或取消,或直接删除。通知之后,系统会发送邮件通知所有用户,通知,主要便于及时查看。
提交完成之后的通知则可通过通知管理功能进行管理,同样可以对已的新闻进行删除或修改操作,同时考虑到的通知可能会很多,在界面中增加了分页的功能。对于修改已的通知,系统将会发邮件通知用户通知已经改变,并将该通知置顶。
1.2 审批管理功能
审批管理功能主要分为,审批上传资料和管理上传资料两块,是对用户上传的论文、著作、科研项目、专利发明、学术活动及学院相关资料等进行审批和统一管理。鉴于在功能模块上的类似,在此,以审批论文信息为例对审批功能的实现进行说明。
点击审批论文信息,进入待审批列表界面,表中将罗列论文的一些基本信息。点击论文题目,打开该论文的相关信息,进行审批,管理员没有权力更改用户提交的论文信息,如果这些信息不符合要求,管理员则可以拒绝,并填写审批不通过的理由,同时填写自己邮箱密码,系统将通过该管理员的邮箱向用户发出邮件,通知用户其论文未通过审批,并要求其进行修改,再提交。同样,若审批通过,管理员也会通过系统发邮件给用户,通知他论文审批通过。
在管理上传资料中,主要是对于那些超过了保存期限的资料,进行备份或删除,然后将其移出服务器。
1.3 人员管理功能
人员管理功能是对系统用户的基本信息的管理,也包括两个功能,人员添加和人员修改。人员添加,主要是用于添加新用户。考虑到本系统是内部服务系统,因此不通过用户自行注册,而是通过管理员添加来完成用户添加。管理员需填写用户的基本信息,并将用户的登录账号告知用户。
考虑到信息的公正性,用户不具备对其基本信息的改动权限,因此如果基本信息改动,用户应及时通知管理员,进行修改。管理员在人员管理中可以进行用户资料的修改,同时也可将离校教师的账户删除。
1.4 授权权限功能
授权权限是对用户查看统计信息权限的管理。管理员可根据用户的申请,赋予用户查看统计信息的权限,并适时关闭其权限。
管理员在授予权限页面中赋予用户权限,可一次赋予一个或多个用户,如果拒绝用户的权限申请,需填写拒绝理由。
管理员通过权限管理,可取消用户的权限。在用户的权限到期之后,管理员可取消用户的查看统计权限。
1.5 业绩点计算功能
业绩点计算主要是将每个用户的总的业绩点统计出来,罗列在一张表中,管理员可以通过备份,将上一年的业绩点导出,然后存放在服务器上,同时通过点击每个用户的工号,可查看每个用户具体的业绩点情况。
1.6 资料上传功能
资料上传功能主要是对课表信息和教材信息的导入和管理。管理员首先将规定列名的Excel表上传到服务器,然后再通过资料上传界面中的导入功能,将该表导入到数据库中,从而实现课表信息和教材信息的导入[1]。
同时,管理员可以通过上传资料中的管理功能实现对数据库中的课程信息和教材信息的修改或删除。
2 系统实现
在此,按照系统架构逐步阐述管理员功能的主要实现框架。该系统主要分为3个层次,表现层、中间层及数据库层[5]。
2.1 表现层
表现层提供与用户交互的界面,用Web页面实现。主要使用JSP技术实现,在个别静态页面中,使用HTML静态技术实现[6]。
2.2 中间层
该系统又将中间层划分为Web层、Service层、DAO层和common层。
(1)Web层。
该层包含了Formbean和Action两部分,同时也通过这两部分分别联系表现层和业务逻辑层,Formbean对应了JSP页面中的内容,而Action则调用了业务逻辑层中的内容。
(2)Service层。
在该系统中,Service层完成了业务逻辑层的工作,其中主要是对Hibernate所封装的对数据库的操作的调用。例如,
public News getNewsByNewsId(int newsId) {
// TODO Auto-generated method stub
Validate.notNull(newsId, "when get pmrReg, the pmrReg id must not null...");
News news = null;
try {
news = newsDAO.getObject(newsId);
} catch (ObjectNotFoundException e) {
eventLogger.info("the dailyReport[" + newsId + " does not exit...",e);
throw new ServiceException("通过主键获取日报错误");
}
return news;
}
(3)DAO层。
该层主要包括DAO层和PO层,其中DAO层的类都继承了common层中封装了Hibernate对数据库的操作的类CommonDAOHibernate.java,而不是直接封装Hibernate对数据库的访问。
PO,持久化对象,其中完全采用普通Java对象作为持久化对象使用,也是将数据库中的对象对应到Java对象,从而使对数据库的操作更加简单。大家可以利用MyEclipse自动生成POJO及其对应的配置文件。
(4)common层。
该层存放了公用的代码,包括对数据的增、删、查、改操作的封装,异常处理,日志处理,数据类型的转换,时间的处理,文件上传与发送邮件的方法,基础Action类,以及系统要使用的常量。其中,对数据库的操作的封装主要是由MyEclipse中的方法自动生成。
2.3 数据库层
数据层负责存放和管理应用的持久性业务数据。Hibernate提供了从映射文件到数据库Schema的转换工具,即hbm2ddl[7]。
执行该任务的Java类net.Sf.Hibernate.tool.hbm2bbl.SchemaExportTask。在该系统中是应用MyEclipse中的自动转换工具实现数据库与持久性数据的对应。
3 结语
该系统结构清晰,注重功能的功能性和使用方便性。根据各功能的特点,将各功能的流程考虑周到,流程设计完整。用户如有需要,可以申请查看统计权限,系统具有一定的灵活性。同时应用了SSH架构,在简化代码的同时,使系统具有较强的可扩展性。
参考文献
[1] 张芹.关于软件开发中数据库设计相关问题的探讨[J].信息通信,2015(12):166-167.
[2] 宋阳.新时期高校科研信息化建设工作思考[J].中国高校科技,2014(7):71-73.
[3] 陈亚辉,缪勇.Struts+Spring+Hibernate框架技术与项目实战[M].北京:清华大学出版社,2012.
[4] 傅伟,高海侠,涂刚,等.基于J2ME-J2EE的高校科研信息管理系统的设计与实现[J].微计算机应用,2011(7):76-80.
[5] 王进.B/S模式下的三层架构模式[J].软件导刊,2011(3):30-31.
篇5
【关键词】Struts2;Hibernate;办公自动化
1.介绍
目前,我们处于一个信息化和大数据的时代,各行各业都需要对大量信息进行处理。在日常办公中,人们开始面对越来越多的复杂与繁冗的数据,传统的办公方式逐渐无法满足人类和社会发展的需求。计算机技术的迅猛发展,使其在办公室中的应用越来越广泛,办公自动化开始成为主流的办公方式。国务院电子振兴办办公自动化专家会议对办公自动化作了如下定义:办公自动化是利用先进的科学技术,不断使人的办公业务活动物化于人以外的各种设备中,并由这些设备与办公室人员构成服务于某种目标的人机信息处理系统。如今,办公自动化系统已经逐渐进入各个行业,其便利的信息交流方式,较高的办公工作效率受到了人们的欢迎[1]。
2.系统设计
2.1 系统目标
本文从办公自动化系统的基础要求出发,将办公的方便性和高效性考虑入内,达到降低系统的耦合性的目标,并实现OA办公自动化系统的主要功能模块的操作。这样可以保证系统实现后的高效性、高扩展性和灵活性,达到协助工作人员处理日常工作的目标,从而减少了管理的繁琐,实现办公自动化和信息化。
系统采用BS构架模式并结合时下最流行的SSH框架,利用因特网信息交流的方便性与高效性,合理设计与规划,最终实现员工信息管理、在线交流信息管理、个人公开文件夹管理、会议安排管理等典型办公自动化功能。
2.2 相关框架介绍
1)Struts2框架介绍:Struts2框架是在Struts1和WebWork技术基础上进行合并而产生的。Struts2以WebWork为核心,采用拦截器的机制实现用户的请求。其主要分为模型、视图和控制器三部分(即MVC),主要的设计理念是通过控制器解除表现逻辑和业务逻辑的耦合性,以提高系统的可维护性、可扩展性和重用性。
2)Hibernate框架介绍:Hibernate是一个开源的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,方便开发人员开发,使其可以随心所欲的使用对象编程思维来操纵数据库,从而提高开发效率[2]。Hibernate的HQL查询数据语言是根据SQL面向对象的最小的扩展来设计的,在对象和关系领域间提供了一个交互的桥。
3)Spring框架介绍:spring是为了解决应用程序开发复杂性而创建的一个开源框架。其主要优势之一是分层架构,分层架构方便开发者选择组件。Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑和系统级服务进行内聚性开发。其简单性、可测试性和松耦合性使得应用程序受益。
2.3 功能模块划分
经过我们对办公单位实际情况考察并认真分析后,本系统包括的用户有普通员工、部门领导和系统管理员三个角色,其分别具有不同的权限。普通员工具有个人信息的修改功能,可以查看部门通讯录,管理个人在线信息,并可以查看个人日程安排和委托他人事项。部门领导不仅具有普通员工所有功能,还可以安排会议,查看会议记录,并安排所在部门员工的待办事项。系统管理员的权限最高,主要负责管理通知通告,具有对部门信息、员工信息和角色信息的增删查改的功能。该OA办公自动化系统功能体系结构如图2.1所示:
2.4 数据库设计
OA办公自动化系统的设计离不开数据库的设计,而该系统在设计过程中遇到的主要难点也是数据库设计。数据库的设计在整个系统设计过程当中扮演着举足轻重的角色,一个好的数据库能对系统的实现起到事半功倍的作用。系统在数据库设计中需要充分考虑数据之间联系,保证数据库设计的规范化,从而在系统实现和之后的维护过程中不会发生插入、删除和更新异常,使得后续工作高效的进行。本系统主要数据表列举如下:
该系统数据库管理系统采用MySQL,其开源性、多线程性和健壮性深受人们的欢迎[3]。数据库部署于后台服务器中,只有系统管理人员才能通过一定的认证访问数据库表中的数据。除此以外,系统不提供任何访问数据库的接口。
3.系统实现
3.1 关键模块实现
在OA办公自动化系统实现过程中,在线信息和工作安排两个模块相对于其它较为复杂,同时也耗费了大量的精力和时间。在此将这两个模块的实现过程详细介绍如下:
a)在线信息管理
在线信息模块相对复杂主要是因为在系统的首页需要动态地显示用户的未读信息数目,需要用到局部动态刷新技术——Ajax技术[4]。同时,用户对在线信息模块的增、删、查、改操作相对于其它模块也更多,因此对我们的数据库设计提出了更高的要求,这也增加了该模块的复杂度。在数据库表的设计过程中,难度主要集中在对于已读信息、未读信息、已发信息、草稿等的表示和状态转换的设计,需要设计人员极大的耐心。
b)工作安排管理
工作安排管理模块涉及到员工之间相互指定待办事项,而该功能又需得到相互间的授权,使其业务逻辑较为复杂。同时,待办事项的状态最终会从未完成转换为已完成,这也增加了该模块的难度。
授权的业务流程也较为复杂,例如员工A想向员工B指定代办任务,员工A必须首先得到员工B的授权。与此同时,在得到B的授权后,A可以向B指定代办任务,B也可随时解除授权。因此,在设计该模块的数据库表时需要考虑复杂的逻辑关系,对数据库的设计能力提出了很高的要求。此处涉及到了user表、authorization表以及assignment表大量的增、删、查、改的操作,工作量较大。
3.2 技术难点
在文件管理功能模块中,维护与管理文件上传和下载相对于其它操作较为复杂,下载模块需要进行较为复杂的struts配置,同时上传和下载时还要进行编码转换。
针对文件夹/文件的操作主要是增加文件夹、上传文件、更改文件名、删除文件/文件夹、分享文件夹、获得全部文件夹。这部分的难度主要集中在SQL语句,需要有足够耐心和细心。
对于上传文件这块,其struts的配置文件相对简单。而文件下载模块struts比较复杂,其主要配置文件如下:
application/octet-stream;charset=utf-8
此处将下载文件contentType统一指定为application/octet-stream,同时将charset的值设置为utf-8
attachment;filename=”${name}”
attachment是告诉浏览器下载该文件,而filename则是在action中接收该文件的文件名,以便在用户保存该文件时使用该文件名。
文件下载模块的action部分,其主要步骤如下:
1)定义所需的变量;
2)创建需要下载的文件
File file=new File(“保存文件的路径"+dowFileName)
3)将下载的字节流写入刚刚创建的文件
try{
//从file文件中获得输入字节流
fdlInputStream=new FileInput-Stream(file);
//下载时指定的文件名字用iso8859 -1编码
name=new String(dowFileName.getBytes(),"iso8859-1");
}
catch(FileNotFoundException e){
System.out.println(“指定文件找不到”);
e.printStackTrace();“
}
文件上传模块action部分,主要步骤如下:
1)声明所需的变量,其中许多变量是固定名称;
2)创建新的文件,保存上传的文件
File fileTo=new File("上传文件的保存路径"+uploadFileName);
3)将页面接收到的文件写入刚刚创建的文件中去
TestCopy.copy(upload,fileTo)
4.结束语
本文结合现代办公需求,依赖当今流行的SSH框架整合技术,具有良好的分层体系,使得该系统具有良好的扩展性,可维护性和稳定性。经过后期的内部测试,该系统很大程度上提高了办公效率,节约了成本和资源,其高效数据处理能力在一定程度推进了企业资源计划(ERP)的实现,值得继续推广和使用。
参考文献
[1]孙敏.办公自动化[M].北京:北京理工大学出版社,2010.
[2]李刚.轻量级JavaEE企业应用实战(第3版)-Struts2 +Spring3+Hibernate整合开发[M].北京:电子工业出版社,2012.
[3]周靖,许青松译.Leon Atkinson.MySQL核心编程:高级开发者者指南[M].北京:清华大学出版社,2003.
[4]王莉军.在Web2.0设计模式下利用Ajax技术实现网页数据动态更新[J].渤海大学学报(自然科学版),2008,3:29.
作者简介:
篇6
1 相关概念
1.1 Struts 2框架
Struts 2是Struts的下一代产品,是在WebWork基础上发展起来的。Struts 2的工作流程为[1]:当用户发送请求时,由核心控制器FilterDispatcher接受请求然后决定调用适当的action,同时,WebWork的拦截器链自动对请求应用常用的功能,如工作流、验证、文件上传等功能。然后回调Action的execute方法,execute方法该执行诸如存储数据、检索数据之类的数据库相关操作,由于Action只是一个控制器,因此,execute方法会调用业务逻辑组件处理用户的请求,最后Action的execute方法的执行结果将被输出到浏览器中。
1.2 Hibernate框架
Hibernate是一个面向Java环境的O/R mapping工具,通过对JDBC的封装,屏蔽了底层的数据库操作,把对象模型表示的对象映射到基本SQL的关系模型数据结构中,并且使用数据库和配置文件来为Web应用程序提供JSP持久化服务[2]。
1.3 Spring框架
Spring是Java EE领域一个非常优秀的框架,它提供了一种轻量级的IOC容器,该容器负责创建、管理应用组件。从最前端的控制器,到中间层的业务逻辑组件,以及底层的DAO组件,都处于Spring容器的管理之下,以一种低耦合的方式运行[3]。
2 基于S2SH框架Ajax应用
本节将以注册表单中验证用户名是否可用为例,对S2SH框架下Ajax的使用方法进行探讨。
2.1 环境搭建
本文使用Eclipse 6.6开发平台创建Web项目,然后依次为项目添加Spring 2.0和Hibernate 3.1支持,由于Eclipse 6.6中没有提供通过向导添加Struts 2支持的方式,因此需要手工将struts2-core-2.0.8.jar、xwork-2.0.3.jar和ognl-2.6.11.jar等必要的jar包复制到项目的WEB-INF/lib目录下。
2.2 创建实体类和映射文件
可以使用MyEclipse工具自动生成数据表account的实体类Account.java和映射文件Account.hbm.xml,并将这些文件存放在com.test.entity包下。
2.3 业务逻辑层开发
1)业务层接口
编写接口文件UserBiz.java,将其放在com.test.servcice包下。在接口中声明用户名验证方法。
public interface UserBiz {
public boolean checkUser(String username);
}
2)业务层接口实现类
编写业务层接口UserBiz的实现类UserBizImpl.java,将其com.test.servcice.impl包下。
public class UserBizImpl implements UserBiz {
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO; }
public boolean checkUser(String username) {
return userDAO.isExist(username); } }
2.4 数据访问层开发
1)数据访问层接口
编写数据访问层接口类UserDAO.java,将其放在com.test.dao包下,在接口中声明用户名验证方法。
public interface UserDAO {
public boolean isExist(String username);
}
2)编写数据访问层接口UserDAO的实现类UserDAOImpl.java,并放在com.test.dao.impl包下。
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
public boolean isExist(String username) {
List list = getHibernateTemplate().find("from Account ac where ac.name = ?" , username);
if (list != null && list.size() >= 1){
return true;
}else{
return false; } } }
2.5 Spring与Hibernate、Struts 2整合
给项目添加完Spring、Hibernate和Struts 2支持后,为了能将三者整合起来,还需要对相关的配置文件进行设置,主要的配置文件包括:applicationContext.xml、struts.xml和web.xml。
1)Spring与Hibernate整合
由于篇幅,这里省略了数据源和sessionFactory的配置代码,在applicationContext.xml文件中完成userDAO Bean的定义,并将sessionFactory注入到UserDAO中,配置如下:
name="sessionFactory">
接着完成userBiz Bean的定义,并将userDAO注入到UserBiz中,配置如下:
2)Struts 2与Spring整合
为了让系统中Struts 2框架起作用,必须在web.xml中配置Struts 2的核心过滤器,该核心过滤器负责拦截所有用户的请求,代码如下:
strutsorg.apache.struts2.dispatcher.FilterDispatcherstruts/*
Struts 2与Spring整合的关键在于,要让Struts 2的Action可以访问Spring容器中的业务逻辑组件。有两种整合策略,第一种策略是将Aciton实例的生成、管理交给Spring容器来负责;第二种策略是使用Spring插件的自动装配机制,即当Spring插件创建Action实例后,立即将Spring容器中对应的业务逻辑组件注入到Action实例。这里选择后一种策略,因此需要安装Struts 2的Spring插件,即将struts2-spring-plugin-2.0.8.jar文件复制到项目的WEB-INF/lib目录下,同时由于Spring框架还依赖于commons-logging.jar文件,该文件也需要复制到WEB-INF/lib目录下。此外,在使用Spring容器前,必须先进行Spring容器的初始化,可以使用ContextLoaderListener类,该类会在Web应用程序启动时自动加载WEB-INF下的applicationContext.xml配置文件,以创建Spring容器。使用ContextLoaderListener类时只需在web.xml文件中添加如下代码:
org.springframework.web.context.ContextLoaderListener
并在web.xml文件中指定spring的应用上下文路径,配置如下:
contextConfigLocation
classpath:applicationContext.xml
为了将Struts 2的Action交由Spring处理,需要在struts.xml文件中添加一个常量,配置如下:
这样,所有的Action无需在applicationContext.xml中显式配置依赖的业务逻辑组件,只要为Action提供一个setXxx的方法,Spring可将名为xxx的Bean依赖注入给该Action组件。
2.6 使用Struts 2的JSON插件实现用户名Ajax验证
JSON是JavaScript对象符号的简称,是一种轻量级的数据交换格式。JSON插件提供了一种名为json的ResultType,如果给某个Action指定了一个类型为json的Result,则该Result无需映射到任何视图资源,而是由JSON插件负责将Action中通过属性设置的状态信息序列化成JSON格式,并返回给调用页面,从而完成Ajax交互。为了使用JSON插件,需要将jsonplugin-0.7.jar文件复制到项目WEB-INF/lib目录下。
以注册表单中验证用户输入的用户名是否可用为例,当用户输完用户名后,系统应立即提示该用户名是否可用,可以在用户名文本域失去焦点时,立即发送一个异步请求,将输入的用户名作为参数发送到服务器进行判断。注册表单Register.jsp中主要的代码如下所示:
上述代码中,validateName是一个JavaScript函数,用于向服务器端发送异步请求,代码如下所示:
function validateName(){
var url = 'validateName.action';
var params = 'username='+document.getElementById('username').value;
var myAjax = new Ajax.Request(url,{method:'post', parameters:params,
onComplete: processResponse,asynchronous:true }); }
每当创建Ajax.Request对象时,就会发送一次Ajax请求。其中,url表示请求的地址,method表示发送请求的方式,parameters表示请求的参数,onComplete用于指定回调函数,asynchronous表示是否异步发送请求。为了使用Ajax.Request对象,需要在注册表单中导入prototype-1.4.0.js函数库,通过该函数库可以更加简单地访问页面中的DOM节点,从而更好、更简单地实现Ajax交互。页面中导入该函数库的代码如下所示:
回调函数processResponse代码如下所示:
function processResponse(request){
$("message").innerHTML = request.responseText.parseJSON().message; }
上述代码中使用了字符串的parseJSON()方法,使用该方法时需要在注册表单中导入json.js函数库,同时需要将该函数库复制到项目中。导入json.js函数库的代码如下所示:
从创建Ajax.Request对象时使用的参数url可以看到,该Ajax请求是发送给validateName.aciton的,该Action是一个普通的Action,代码如下所示:
public class ValidateUserNameAction implements Action {
private UserBiz userBiz; //该属性代表业务逻辑组件的引用
private String username; //该属性用于封装用户名请求参数
private String message;//该属性用于封装服务器响应的提示消息
public String execute() throws Exception {
if(userBiz.checkUser(username)){
setMessage("对不起,该用户已存在,请重换一个!");
}else{
setMessage("恭喜你,"+username+" ,该用户可以使用!");}
return SUCCESS; }
…… //由于篇幅,此处省略了属性userBiz、username和message的setter方法 }
上述Action代码中,由于Action返回的结果总是“SUCCESS”逻辑视图名,如果业务逻辑userBiz中的checkUser方法验证用户名可用,则将该Action的message属性设置为:“恭喜你,"+username+" ,该用户可以使用!”,否则设置为“对不起,该用户已存在,请重换一个!”。而message属性的值是需要直接显示在注册表单的message元素中的,因此需要使用Struts JSON插件为该Action指定一个json类型的Result,这样就无需使用视图页面来输出响应结果,系统会将该Action中的message属性序列化为以JSON格式的字符串,并将该字符串作为服务器的响应结果。为了实现上述功能,需要在struts.xml文件中配置该Action,配置如下:
客户端收到JSON格式的字符串后,使用parseJSON()方法将字符串解析为一个JSON对象,该对象包含的属性与Action完全相同,也包含了username和message这两个属性,其中message属性所设置的内容显示在id为message的HTML元素中。
2.7 使用DWR框架实现用户名Ajax验证
除了使用Struts 2的JSON插件外,还可以通过DWR框架[4]实现用户名的Ajax验证。为了让Web应用增加DWR支持,需要将dwr.jar文件复制到项目的WEB-INF/lib目录下。DWR框架可以自动将普通的Java类转化为javascript类,这个过程是通过一个核心Servlet的转换实现的。为了让DWR的核心Servlet能够起作用,需要在web.xml添加如下配置:
dwrorg.directwebremoting.servlet.DwrServlet
dwr/dwr/*
在web.xml中配置完DWR的核心Servlet后,该Servlet负责将服务器端的Java方法暴露出来,要暴露出来的方法是在dwr.xml文件中指定的,因此需要在项目中新建一个dwr.xml文件,并进行如下配置:
根据上述配置,从spring容器中取得beanName为userBiz的bean,即将UserBizImpl类创建为一个名为CheckUserExist的JavaScript对象。include表示允许调用的方法,这里将允许使用UserBizImpl类中的checkUser方法。为了能在表单中调用JavaScript对象,必须进行如下引用:
当用户在注册表单Register.jsp中输入用户名,失去焦点后,执行JavaScript函数checkUserExists,该函数中通过JavaScript对象CheckUserExist调用UserBizImpl类中的checkUser方法。代码如下所示:
function checkUserExists(){
var username = document.getElementById('username').value;
CheckUserExist.checkUser(username,callBackFunction);}
其中,callBackFunction为回调函数,代码如下所示:
function callBackFunction(isExist){
if (isExist){//isExist=true
document.getElementById('message').innerHTML="该用户已存在";
}else{ //isExist=false
document.getElementById('message').innerHTML="该用户可以使用";
} }
3 结束语
篇7
(西安交通大学数据与信息中心,陕西西安710049)
摘要:通过对高校科研管理现状的分析与研究,运用基于Struts,Spring和Hibernate的轻量级Web集成开发框架,并结合Ext 富客户端技术,从科研管理的基础数据组织入手,认真分析科研业务管理流程及信息交互特点,最终构建高效、灵活和稳定的高校科研管理信息系统。该系统实现了科研管理的网络化和数字化,有效提高了信息的集成效率,提升了科研信息精细化管理水平。
关键字:科研管理;SSH;Ext;精细化管理
中图分类号:TN911?34 文献标识码:A 文章编号:1004?373X(2015)20?0052?03
Research and application of scientific research management system based on Ext +SSH
Integrated development framework
GAO Zhan,SUO Zhihai
(Data and Information Center,Xi’an Jiaotong University,Xi’an 710049,China)
Abstract:In this paper,the current situation of research project management in universities is studied. Proceeding from ba?sic data organization of scientific research management,the scientific research management procedures and information interac?tion characteristics are analyzed by using light?weighted Web integrated development framework based on SSH(Struts Spring Hi?bernate) and rich client technology of Ext. Finally,a scientific research management system based on Ext+SSH integrated de?velopment framework with the advantages of reliability, efficiency and flexibility was constructed. The digitization and net?working of scientific research management were achieved by means of the system,which improve the efficiency of information in?tegration and promote the level of scientific research information management.
Keywords:scientific research management;SSH;Ext;delicacy management
学校科学研究能力的发展是制约高校整体办学水平的重要因素,对于建设“研究型大学”更是具有举足轻重的作用。近年来,随着学校科研工作范围和规模的迅速扩大,信息交互频繁,科研业务的复杂度日益增大,这就要求科研信息要做到快速流转和有效管理,为了满足科研管理系统建设的实际要求,构建了基于Struts,Spring,Hibernate 轻量级集成开发框架和Ext 富客户端技术的高校科研管理系统,为科研工作提供了重要保障。
1 SSH 和Ext 框架介绍
1.1 基于SSH的Web系统开发框架介绍
SSH 是一种基于J2EE 技术的MVC 软件开发框架,与J2EE 重量级体系相对应,轻量级Web框架SSH 不仅保持了J2EE的优势(例如事务管理),还简化了Web的开发[1],提高开发效率。SSH 集成框架从逻辑上分为三层:表示层、业务逻辑层、数据持久层[2]。系统架构图如图1所示。在表示层,Struts 作为系统的整体基础架构,它利用控制器分离模型和视图,把用户界面和事务逻辑进行分离,从而极大地缩短了开发时间。在数据持久层,Hibernate 框架对JDBC 进行了轻量级的对象封装,将数据库表通过配置文件映射成对象。程序开发人员无需关心数据库的具体结构,直接操作数据对象即可。Spring 管理Struts 和Hibernate,通过Spring 的反转机制,利用容器来创建对象,即在运行期间将对象的依赖关系注入到组件之中,使得应用代码可直接使用实例。
1.2 基于Ext的富客户端技术
Ext是一个基于纯HTML/CSS+ JavaScript技术的开源的富客户端应用程序框架,它与后台开发技术无关,可以用在多种开发语言的开发应用中,使B/S应用更具有活力和生命力,大幅度提升了用户体验。Ext提供了丰富的跨浏览器UI组件,灵活采用JSON和XML为交换格式,减轻了服务端表示层的负荷,从而达到客户端的RIA 应用[3]。Ext还提供了丰富的学习文档和方便易查的API文档,方便开发者查询和使用。
Ext 在开发中主要使用到Application,Controller,Viewport,View,Store,Model 和Data 七大类[4],其逻辑关系如图2 所示。Application 控制Ext 到找对应Con?troller 与View 等Javascript 文件;Controller 用来实现View 上的所触发事件和操作,并将对应的View,Store ,Model 进行关联;Model 和Store 是模型数据类,主要是给View类提供数据;View主要负责页面展示。
2 科研管理系统的设计与实现
2.1 科研管理系统的功能模块设计科研管理系统的设计与开发以“高效管理、服务师生、信息共享、公正公开”为建设目标,以科研管理的内容、流程为中心。从管理内容的覆盖范围来看,科研管理系统的主要分为了科研项目管理、科研成果管理、经费管理、科研问题管理、科研机构管理、科研办公管理功能、统计管理、专家库管理、基地管理等9大功能模块。各个功能模块具有相对独立性,同时也相互联系。从服务对象来看,为校领导、学院、科研基地、教师、科研管理人员5大服务对象提供全方位的服务。
2.2 基于Ext和SSH集成框架的系统架构设计良好架构的选择对提高项目的开发效率有着重大影响。基于Ajax 的Web 应用程序打破了传统Web 程序开发模式,大大提高了程序的可用性用户体验。因此SSH和Ext的组合构建了一个具有健壮架构体系和具有良好用户体验的Web系统开发架构[5]。
Ext+SSH 集成架构整合的基本原理如图3 所示。
Ext 实现Struts 框架中的页面表示和页面跳转,管理界面上的各种操作事件,同时做出相应的响应,由于其提供了丰富的UI 组件,并采用JSON 数据格式传输数据,提高程序员的开发效率[6]。在业务层,Spring实现MVC三层分离,控制各层负责不同的任务,协作完成一次完整的请求/响应。在数据持久层,Hibernate 实现数据库表到Java类的映射,简化数据库事务管理。
2.3 关键技术的实现
Ext框架拥有丰富的组件,而且创建组件的方法也非常简单,可以直接通过new 关键字来创建,比如创建一个窗口,可以使用new Ext.window(),创建一个表格可以使用new Ext.grid.GridPanel()。在本系统中,用户登录后的首页面板显示了用户基本信息,科研通知公告,代办事宜等信息,它们可以通过拖拽的方式调整位置,这里采用的Ext的Ext.ViewPort组件来实现页面布局,它可以随着浏览器的大小而自适应。部分核心代码如下所示:
科研数据不仅数量大,而且数据关联性也较强,在每个数据列表上建立快捷查询项是非常必要的,如图4所示。
图4 Ext的panel组件实现快捷查询页面
以下代码是利用Ext的panel组件实现的快速查询页面的代码:
3 结语
采用Ext+SSH集成架构开发的科研管理信息系统,结构清晰,快速高效,可维护性和灵活性较高。目前该系统已在西安交通大学科研院的科研管理工作中得到了应用,体现了“人性化操作”的设计理念,充分兼顾了校领导、科研管理人员、教师等用户的不同需求,实现了与校园信息化平台的其他应用系统对接,提升了学校科研管理能力和水平。
参考文献
[1] 邵雄凯,杨京涛.基于Struts,Spring和Hibernate的集成框架研究[J].软件导刊,2007(23):25?28.
[2] 张玮,陈为.基于Struts+Spring+Hibernate框架的探讨与研究[J].长春大学学报,2006(12):75?80.
[3] 王晓燕,宋绍云.Ext的组件体系结构研究[J].电脑知识与技术,2011(9):1999?2002.
[4] 田建伟,黎曦,刘潇潇,等.基于Ext和SSH 开发架构的电力生产信息系统的研究与应用[J].湖南电力,2014(2):16?19.
[5] 郭永乐,刘列根,张宇.基于轻量级框架构建Web应用[J].电子技术应用,2007(4):78?90.
[6] 王渊,怀自国,罗怡桂.基于Ext+Spring+Hibernate的Web系统开发架构的研究与应用[J].计算机与现代化,2009(12):78?81.
篇8
关键词:Android LinuxSSH QuickSSHD可行性
中图分类号:TN918.1 文献标识码:A 文章编号:1007-9416(2012)03-0000-00
Android操作系统最初由Andy Rubin领头的开发小组开发,最初主要支持手机。2005年由Google注资收购经过开发改良,逐渐扩展到平板电脑及其他领域上。Android操作系统采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。
传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
SSH之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。有点类似于VPN,但是它在保密方面的能力,远远强于VPN。
SSH协议框架中最主要的部分是三个协议:传输层协议、用户认证协议和连接协议。同时SSH协议框架中还为许多高层的网络安全应用协议提供扩展的支持。
QuickSSHD在智能手机中的使用。
通过下面介绍的一个使用过程,用来证明SSH安全传输协议在Android平台下的可行性,本次实验使用的软硬件及其各版本如下:(1)基于Android2.3.5版本的智能手机一部(已经获得root权限),(2)x86电脑一部;(3)在手机端安装了QuickSSHD的2.0.2(已付费)版本软件;(4)在电脑端安装了FileZilla软件,版本号是3.5.3。
QuickSSHD支持sftp与xterm(命令行终端)方式管理手机,可USB可3G可wifi,我这次使用的软件是FileZilla,因此测试了sftp功能,用的是wifi登录方式进行实验。在图1所示是QuickSSHD软件登录界面。
当你安装好QuickSSHD软件后开始使用,你可以获取一个由软件自动提供给你的IP地址(本次实验中得到的地址是192.168.1.102),且你进入时可以提供密码或者共享Keys的方式进行加密,一般建议采用密码的形式,这个密码是自定义的,也就是在x86电脑端开启软件FileZilla时所需输入的密码,第一次使用后,可以将这个IP地址和密码都设置为常用,以后登录不必每次都输入。
当在Android端设定好命令之后,你可以到x86电脑端设定好软件FileZilla的各项命令,上图显示我本次实验是进行sftp传输的实验,使用的登录名是root,密码就是你在Android端已经输入的密码,最后一个是端口,这个一般是固定的,sftp都是采用的22端口,图2所示是FileZilla软件在Android端和x86计算机端传输文件的界面,其中左图为x86计算机端路径,右图为Android端的/sdcard路径所示。
设置好点击快速连接之后,就会进入图5所示界面,该界面就是一个进行进行sftp方式传输的界面,左半面是x86电脑的磁盘驱动器,右半面你可以选择Android操作系统所属的各个文件夹,因为Linux是特性是利用文件管理系统,因此,你只要管理好了文件,也就是管理好了这个Linux,乃至你的Android系统,由于本次软件所测试的sftp协议在Android上的传输可行性,因此我在右半面选择的是该电子设备所携带的sdcard文件夹。通过测试,通常使用在Linux操作系统中的sftp传输协议完全能够使用在x86电脑和Android系统系统之间。
在本篇文章所述中,虽然只是针对SSH协议的sftp传输方式进行了验证,但是SSH传输协议的优点远不止此,因为是一种相对安全的传输协议方式,SSH协议今后还会在更多的应用区域得到更加广泛的推广,例如需要在公共区域的WIFI上网,虽然利用VPN也可以,但是有的地方封杀VPN,SSH比较安全,当然,还可以利用更改配置文件的方法,更改SSH的默认端口和对登录IP进行限制,进一步的保证利用SSH协议传输数据的安全性。
参考文献
[1] 余永洪.用SSH技术远程管理Linux服务器.《计算机与现代化》,2002.
[2] 孔祥真,徐小龙,邢宏健.Linux操作系统服务器SSH远程管理配置.《网络安全技术与应用》,2011.
[3] 刘平.Android手机访问服务器的一种数据交互方法.《电子设计工程》,2010.
[4] 刘振昌.让SSH远程管理更安全.《中国教育网络》,2011
篇9
关键词:SSH架构;Appfuse;代码自动生成
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)20-20272-03
Application Research on Automatic Code Generation Based on SSH Architecture
LI Jin-hai
(Modern Education Technology Center,Qingdao Technological University,Qingdao 266033,China)
Abstract:There are several common problems in the enterprise-ready application development, such as long project development life, low development efficiency, slow response to changing demands. Automatic code generation technology is the very one of effective ways to solve these problems. SSH architecture is one of the most widespread used J2EE architectures in the present. This paper discusses the automatic code generation technology which can be used in SSH architecture. Through the research on the Open Source framework Appfuse, this paper distracts its fast development module based on SSH architecture, improves the code generation ability of the module, and applies this improved module in the development of a privilege management system to have a check if it works well.
Key words:SSH Architecture;Appfuse;Automatic Code Generation
随着企业信息化的发展,J2EE技术的应用已经日益广泛。在J2EE体系架构中,基于各种开源框架的J2EE架构的应用逐渐成为主流。优秀的开源框架在J2EE中的应用在一定程度上也促进了企业级应用的发展。然而,在实际开发中仍然存在着项目开发周期长,开发效率低,不能快速响应需求变化等普遍问题。代码生成技术的发展已逐渐成为解决上述问题的有效途径之一。本文将对应用广泛的SSH架构的代码自动生成展开讨论。
1 SSH架构
SSH架构就是一个基于三种开源框架Stuts,Hibernate和Spring的轻量级J2EE架构,目前已是企业级应用开发中应用最广泛的J2EE架构之一。其架构层次主要划分为:表现层,业务层,数据持久层和领域对象层。在表现层中应用了Struts框架,这种基于请求驱动的MVC框架给架构也带来了清晰的MVC划分。在业务层引入Spring,使用其提供的IoC容器对业务类进行装配和管理,使类与类之间的耦合度降到最小,利用其提供的AOP框架对业务层中的事务进行声明式管理。由于Spring对Hibernate提供了良好的支持,通过使用HibernateTemplate可以方便地对数据进行持久化操作。数据持久层正是由Spring和Hibernate共同打造的。其中DAO接口的装配和管理也是由Spring提供的IoC容器实现的。
该类架构层次清晰,结构明显,同一层中类或接口的代码往往具有类似的结构,非常适于使用代码生成工具实现部分代码自动生成。
2 AppFuse框架
AppFuse 是一个开源项目,它使用了在 Java 平台上构建的开源工具来帮助开发者快速而高效地开发 Web 应用程序。它使用 Ant 来驱动测试、代码生成、编译和部署。它提供了目录和包结构,以及开发基于 Java 语言的 Web 应用程序所需要的库。AppFuse支持的Web框架有:Struts、Spring MVC、WebWork、JSF and Tapestry,支持的持久层框架有:Hibernate和iBates,支持的测试环境有:DBUnit,Junit,Jmock和Canoon’s Web Test。AppFuse中集成了XDoclet,并应用它自动生成代码和相关的配置文件。
Appfuse实现代码自动生成的核心就是应用XDoclet引擎按照代码模板文件进行代码生成。Appfuse要支持很多不同的框架和技术,所以其中的代码模板就要做到最通用。代码模板通用性的提高,在一定程度上降低了其功能和效率。而且,Appfuse中代码自动生成模块只能生成简单少量的Spring配置文件,大部分的配置工作没有实现自动化。基于此,本文对Appfuse中支持Struts,Hibernate和Spring的代码自动生成模块进行了提取,改进了其中的代码模板文件,增强了该模块的代码自动生成能力,并使得Spring配置文件的大部分配置工作实现自动化。
3 基于Struts,Hibernate,Spring框架的J2EE架构的代码自动生成
3.1 代码自动生成的任务列表
因为Ant配置文件build.xml是代码自动生成的控制核心,所以可以通过改写build.xml文件提取出Appfuse中的相关模块。修改后的build.xml文件包括:变量配置如项目包的名称、源文件目录等,定义相关类的引用路径,还有一系列的代码生成任务。任务列表如下:
<target name="help">
<echo message="提供以下任务:" />
<echo message="create-dir-->生成工程目录"/>
<echo message="generate-hbm -->运行HibernateDoclet,生成Hibernate 类的映射文件" />
<echo message="schemaexport -->运行SchemaExport,利用hbm.xml 文件生成数据表" />
<echo message="gen-forms --> 运行xdoclet,生成相应的Form类文件"/>
<echo message="webdoclet -->运行webdoclet,生成Struts配置文件和validation.xml" />
<echo message="gen --> 运行xdoclet生成相应类的dao,daoHibernate,manager等文件"/>
<echo message="move-gens--> 把生成相应类的dao,daoHibernate,manager等java文件移到当前工程文件夹下"/>
<echo message="gen-springxml --> 生成spring的配置文件context-spring.xml" />
</target>
3.2 对Appfuse中代码自动生成模块的改进
使用XDoclet自动生成代码需要有代码模板以及相应模板语言的支持,另外改进该模块时加入了一些通用基类,这些都是代码自动生成模块的基本组成部分。代码模板文件主要应用了Form和Method两个标签,其中Form标签是Appfuse中自定义的,而Method标签则是在原有XDoclet标签的基础上做了扩展。提取出的模块仍然需要Appfuse中FormTagsHandler和MethodExTagsHandler这两个标签类的支持,应把他们置于模块中WEB-INF的Class目录下。以下就是对原有模板文件的修改及改进:
(1)对Dao.xdt模板文件进行了改进,添加了两个常用方法,merge()以及find()方法。前者是用于在一个session中存在两个相同的对象拥有同一个identifer的情况下,而后者则用于执行HQL查询语言。两者在项目开发中使用频率颇高,所以需要增加。
(2)对相应的DAOHibernate类模板即DAO的实现类进行相应的改进,实现merge()和find()方法。
(3)在相应的DAOTest类模板中添加testMerge()和testFind()方法。
(4)在manager类模板中添加add方法,主要是在添加一个新对象时需要先判断是否有重复,所以应该与save方法分开。
(5)改进DaoHibernate.xdt文件,原模板文件中的get()只适用于对象的主标示的类型为java.Long.*中的情况,修改模板后使之也适用于long和int的情形。
(6)修改Manager.xdt,去掉了用不到的import语句。
(7)在ManagerImpl.xdt文件中添加 import .service.Manager;在改进DaoHibernate.xdt文件后应该相应的修改ManagerImpl.xdt中的remove()和get()方法。
(8)DaoTest.xdt,添加自己的BaseTestCase,然后修改DaoTest.xdt使所有的DaoTest类继承BaseTestCase。修改testAdd()中“verify a primary key was assigned”的语句,使其也适用于pirmary key是long 和int 的情形。
(9)ManagerTest.xdt,修改模板使ManagerTest类都继承MockObjectTestCase,修改模板文件中get()和remove()方法,使之也适用于pirmary key是long 和int 的情形。
(10)去掉了Appfuse框架中context-hibernate.xdt和context-service.xdt模板文件。通过在DaoHibernate.xdt和ManagerImpl.xdt模板文件中添加相应的XDoclet标签(@spring),利用xdoclet.modules.spring.SpringDocletTask任务可以自动生成spring的配置文件,省去了人工维护。
通过以上的修改和改进,使得这些模板功能更加强大,更符合我们的编程习惯从而更加实用。其中都是对原有模板文件比较大的改进,在一定程度上比Appfuse中的原有模块更能提高开发效率。
3.3 代码自动生成模块的应用步骤
应用该模块的步骤如下:
(1)在build.xml中设置项目的程序包、源文件目录、生成文件的输出目录、XDoclet模板文件放置目录、输出的Form文件目录、输出的测试类文件目录等一系列变量。
(2)设置各个库的引用路径,如Spring,Hibernate的jar文件 的引用。
(3)运行build.xml中的create-dir任务,创建工程详细目录。
(4)编写领域对象类,类文件中要添加详细的XDoclet标签;在关系数据库中建立一个空数据库文件。
(5)顺序执行Ant任务generate-hbm,schemaexport,gen-forms,gen-forms,gen,move-gens,gen-springxml,可以自动的连续执行也可以单步执行。
通过执行以上一系列任务,就会在相应的目录下自动生成Hibernate配置文件,相应领域对象的Struts Form文件以及在Struts-config.xml中的相关配置,领域对象对应的Dao接口及Hibernate实现类,领域对象对应的Manager接口及简单实现类,相应DaoTest类和ManagerTest类文件,还有简单的Spring配置文件。此外,还在已创建的数据库中产生与领域对象对应的数据表。
3.4 改进后模块的优势
这样在整个架构中,一旦实现领域对象层,以下内容会自动实现:(1)基于Hibernate的对象关系映射层。(2)基于Hibernate的数据持久层。(3)基于Spring的业务层的部分代码,即Manager接口和Manager实现。对于Manager实现还需要根据不同的业务作相应的修改。(4)基于Struts的表现层的部分代码,即在应用中可能会用到的Struts中的Form类,对应每一个领域对象先自动生成一个Form,以节省可能的工作量。此外,针对数据持久层和业务层接口的测试用例也会自动生成,大部分可以直接应用,只有小部分需要稍作修改以增强测试效果。
4 基于SSH架构的代码自动生成模块在权限管理系统的应用
4.1 RBAC模型
本权限管理系统基于RBAC模型设计。RBAC(Role-Based Access Control)模型的基本思想就是根据安全策略划分出不同的角色,资源访问许可被封装在角色中,用户被指派到角色,用户通过角色间接地访问资源。RBAC 的最大优点在于它能够灵活表达和实现组织的安全策略,使管理员从访问控制底层的具体实现机制中脱离出来,十分接近日常的组织管理规则。RBAC 被认为是一种更普遍适用的访问控制模型,可以有效地表达和巩固特定事务的安全策略,有效缓解传统安全管理处理瓶颈问题。其中RBAC96模型如图1所示。
4.2参照RBAC模型以及实际需求对权限管理系统进行建模
此权限管理系统把权限管理和组织机构管理结合起来,分配给用户的角色来自于部门,部门和角色之间是一对多的关系。权限许可是针对某一权限资源对象和权限操作,所以权限许可和权限资源对象以及权限操作都是一对一的关系。通过Borland公司的建模工具Together,将权限管理系统模型建立如下:
4.3 利用代码自动生成模块进行开发
按照3.3所讨论的步骤,先进行(1)到(3)步。然后根据图2中的模型,开始编写领域对象层代码并在代码中添加XDoclet标签。再依次执行第(4)、(5)步后,就会在相应的目录下自动生成了Hibernate配置文件,User等领域对象的Struts Form文件以及在Struts-config.xml中的相关配置,对应的Dao接口及Hibernate实现类,对应的Manager接口及简单实现类,相应DaoTest类和ManagerTest类文件,还有简单的Spring配置文件。此外,还在已创建的数据库中产生与领域对象对应的数据表。在该系统开发完毕后,将利用该模块自动生成的代码与已经完成的代码进行了比较,经估算可以节省近40%的代码量,于是就节省出了大量的时间用于核心业务逻辑的处理。
5 总结
改进后的自动化模块可以在相对稳定的对象关系映射层和数据持久层实现完全的自动化,而在业务层和表现层也可以减少一部分代码量,并且测试方面的代码量也会大大减少。 所以,在类似基于Struts,Hibernate,Spring的轻量级J2EE架构的系统的开发中应用该自动化模块会大大提高工作效率,缩短项目周期,提高对需求变化的快速响应速度。
参考文献:
[1] Rod Johnson.J2EE Development Frameworks[J].Computer,2005(01)107-110.
[2] 汪厚祥,李卉.基于角色的访问控制研究[J].计算机应用研究,2005(4):125-127.
篇10
关键词:SSH开源框架技术;档案管理系统;分布式档案管理
随着高校档案管理的复杂化和网络技术的发展,基于Web的档案管理系统具有很大的使用价值。研究档案管理系统软件,提出其设计开发标准的规范化建议,是为了促进档案系统软件开发设计的规范化与标准化,避免盲目设计与开发,节省研制成本,减少经济损失,扩大软件适用规模,达到档案管理的自动化、统一化,提高档案工作效率,保证档案管理安全性、通用性、可靠性,进而促进档案信息化的发展。
一、架构技术分析
1.Struts简介
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。
2.Hibernate
Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。
3.Spring
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
4.SSH整合后的特点
(1)大大降低了开发成本。SSH 的架构是基于Struts、Spring和 Hibernate开源框架开发设计的,所以它在技术成本上会很低,又由于应用框架技术可以更清晰的划分开发过程中每个人的工作任务,从而降低了人力成本。
(2)低耦合,增强了系统的可扩张性。对于传统的ASP和PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP和PHP页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险,因而具有良好的可扩展性。
(3)缩短项目的开发周期。使用框架技术可以避免反复开发的问题。无形中减少了开发过程中的编写代码量,提高了开发速度,缩短开发周期。
(4)重用性。为了避免重复开发,降低成本,我们希望能够重用以前的代码和设计。重用是我们不断追求的目标之一,但事实上,做到这一点不是很容易。
二、系统功能需求
于档案管理管理系统来说,总体上的目标就是提高档案管理的效率,将大量复杂的统计,重复的事务性操作等交给系统自动处理,在提高效率的同时,也减少了人工的投入和人工操作可能产生的错误。本系统的开发依据J2EE分层的系统框架,提出基于SSH(Struts+Spring+Hibernate)集成框架的档案管理系统的设计与实现。基于SSH的档案管理系统开发要实现的具体功能如下图所示。
三、系统实现
1.Web应用层实现
表示层主要包括系统和用户交互的页面,它的主要功能是收集用户的输入、验证和转换输入数据,并把转换后的数据传递给业务逻辑层。另外,表示层还发挥呈现数据、控制页面导航,以及处理国际化编程的功能。该层使用Struts框架来实现,Struts为基于Java的应用提供一种用户界面开发框架以及应用逻辑和业务逻辑的连接。它通过一个控制器ActionServlet提供Web应用程序生命周期管理,而且能够在服务器上处理客户端事件、输入验证等用户界面问题。
应用层Struts的设计主要包括用户Struts界面以及与之协作的事件Action的设计。档案管理系统设计的Action主要有:LoginAction、MenuAction、OrgAction、ParaAction、RoleAction、UserAction、DoucumentInfoAction、BorrowInfoAction
2.业务逻辑层实现
业务逻辑层使用Spring框架来实现业务逻辑处理,可以实现与各种框架良好的集成。同时Spring的IOC的依赖注入功能给开发人员减轻了负担,使程序代码逻辑结构清晰,实现组件间的松散耦合,加快开发进度。业务逻辑层主要定义与应用层组件事件关联的类和接口,用于向上层提供处理事件的服务,主要包括表示事件域处理方法的Service接口和Service实现类。
由于系统中的DAO对象紧密关联,因此采用Facade模式将DAO对象封装起来,应用层在使用业务逻辑层的服务时,仅仅与业务逻辑的Service接口发生联系,无需知道业务服务组件的具体实现,也无需了解底层的DAO对象。
3.持久层实现
数据持久层使用Hibernate持久化框架,也是使用接口与实现分开的方式。这样可以在持久层使用多种持久化技术。持久层主要定义应用程序通过具体的类与数据库交互。遵循系统架构图,持久层的设计将使用 Facade模式定义系统中各个模块的业务入口Facade接口,并定义它的实现类Impl,通过接口得到具体业务的DAO实现。通过DAO和对应模式的Domain Object,就能对数据库进行增删查改动作。
4.数据库设计
系统数据库的设计实现,对系统的应用具有很重要的意义。根据档案管理系统的实际数据量考虑,采用了Mysql数据库。Mysql是一个精巧的SQL数据库管理系统,以操作简便著称。由于其强大的功能、丰富的应用编程接口以及精巧的系统结构设计,在基于数据库的应用软件开发总得到了广泛的应用。
作为一个数据库管理系统,MySQL是客户机/服务器模式的分布式系统,由SQL服务器、客户端、管理工具和应用编程接口等一整套工具组成。它的平台无关性优点使其能在多个操作系统上运行。此外,MySQL还是多线程的,不仅具有运行速度快,可处理大批量数据等特点,还支持多CPU使用。
档案管理系统共建立了7张数据表:t_user(用户表)、t_channel(菜单表)、t_news(新闻表)、t_org(机构信息表)、t_para(参数信息表)、t_info(档案信息表)、t_borrow(档案借阅信息表)。
四、结束语
本文采用了基于Java平台的多层架构,通过运用Struts技术,Spring技术,Hibernate技术,建立一套可伸缩性高的系统开发架构。同时,由于接口的采用,使系统可以很好地满足与其它系统集成的需要,使利用计算机系统和网络服务系统的档案管理更加方便。 ■
参考文献
[1] 孙更新,周峰.Struts框架结构的Java Web开发技术基础与实践教程[M].北京:电子工业出版社.2008