毕业设计(论文)基于SSH的电子商务公共服务平台的设计与实现系统架构及企业网站子系统

上传人:沈*** 文档编号:42835445 上传时间:2021-11-28 格式:DOC 页数:51 大小:1.16MB
收藏 版权申诉 举报 下载
毕业设计(论文)基于SSH的电子商务公共服务平台的设计与实现系统架构及企业网站子系统_第1页
第1页 / 共51页
毕业设计(论文)基于SSH的电子商务公共服务平台的设计与实现系统架构及企业网站子系统_第2页
第2页 / 共51页
毕业设计(论文)基于SSH的电子商务公共服务平台的设计与实现系统架构及企业网站子系统_第3页
第3页 / 共51页
资源描述:

《毕业设计(论文)基于SSH的电子商务公共服务平台的设计与实现系统架构及企业网站子系统》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于SSH的电子商务公共服务平台的设计与实现系统架构及企业网站子系统(51页珍藏版)》请在装配图网上搜索。

1、 广州大学华软件学院 软件工程系 郑剑亮 基于SSH的电子商务公共服务平台的设计与实现-系统架构及企业网站子系统摘要 随着信息化的浪潮席卷全球, 传统的商务模式受到巨大的冲击,一种新的商务模式-电子商务平台,近年在国内逐渐兴起,越来越多的企业,特别是中小型企业开始慢慢转变企业的营销策略模式,逐渐向电子商务这方面进军。如何充分利用电子商务快速、方便、灵活的特性,为企业创造更多的价值,使企业跟上时代的步伐,在当今激烈的社会竞争中谋得一席之地,已经成为企业所关注的重要问题。本系统设计目的是建立一个以SSH框架为基础,结构灵活、可复用、可扩展,开发快速且轻量的电子商务公共服务应用平台。SSH即采用目前

2、社会上比较流行的J2EE框架,Struts2+Spring+Hibernate。此框架是基于MVC基础之上的一种扩展,把程序分为三层架构,模型层(M),视图层(V)和控制层(C),极大程度地降低了程序的耦合性,使开发出来的程序更灵活,更健壮,更高效。系统架构和企业网站子系统是本文论述的主要目标。构建一个可扩展,可复用,高效,灵活的架构和建立一个功能比较齐全的企业网站是实现本系统的关键。本文主要论述了采用SSH框架加第三方插件来构建系统框架和开发企业网站,阐述自己对SSH开框架的一点看法,并提出在程序开发中融入设计模式的思想。在结构化层次、理清系统业务模型和优化业务模型重用性的基础上,结合第三方

3、插件设计开发,简化开发模型,降低框架的复杂度,提高开发效率,让框架更容易实现,同时提高程序的扩展性、灵活性、复用性、健壮性,以更好的松耦合方式开发构件,使本系统能适应多变的业务需求。关键词 SSH,MVC,第三方插件,设计模式ABSTRACT As the information of technology sweeping across all over the word, traditional business patterns are having a huge shock. A new business model-E-business platform, gradually ris

4、e in recent years. More and more enterprises, especially the small and medium-sized ones, begin to change their marketing strategy mode into E-business by degrees. Making good use of the E-business character of fast, convenient, and agile, we can help enterprises create more value and enable them to

5、 keep up with the times and finding a good place in the drastic society.The goal of the system design is to create a E-business public service application platform which is agile , reusable , extensible ,rapid develop and light-weight, base on SSH frame.SSH is using the J2EE frame, Struts2+Spring+Hi

6、bernate, which is one of the popular frame in now society. The frame is based on a extensible of MVC and divide the procedure into three layers: Model layer(M),View layer(V) and Control layer(C). SSH greatly reduces the procedure coupling and make it more flexible, more robust and more efficient.The

7、 main objective of this dissertation is system architecture and enterprise website subsystem. The key point of the system is to create a extensible, reusable, height-efficient, flexible frame and build a enterprise website with a complete function.This dissertation is mainly discuss about how to use

8、 SSH frame and the third-part plug-in to build system architecture and develop enterprise website, and I expound my little view of SSH frame and put forward an idea that blend the design patterns in program development. In order to adapt the changing business needs, I consider that the frame should

9、be completed more easily on the basis of the reusable of structuring layer, clear system business model and optimize business model, and combine of the design development of the third-party plug-in board, simplify developing model, reduce the complexity of frame and improve exploitation efficiency.

10、And at the same time, improve programs extension, flexibility, reusability, robustness, use better loose coupling to develop construction member.KEY WORDS: SSH; MVC; Third-party plug-in board; Design pattern.目录前 言6第1章系统需求分析71.1系统设计目的71.2系统需求71.2.1功能需求71.2.2性能需求:91.3用例91.3.1企业管理员用例91.3.2客户用例:111.3.3客

11、户订单用例:111.3.4留言用例:121.3.5管理员登录时序图:131.3.6客户下订时序图:141.4运行环境141.4.1硬件环境141.4.2软件环境15第2章系统设计162.1MVC模式分析162.2SSH分析192.3插件式设计分析222.4设计模式引入242.4.1工厂方法模式252.4.2单例模式262.4.3享元模式272.5前台分页方法改进282.6数据库设计292.6.1数据库字典302.6.2E-R图34第3章功能实现373.1企业网站后台功能实现383.1.1基本信息管理页面383.1.2后台主要实现代码383.2企业网站前台功能实现413.2.1企业网站首页图41

12、3.2.2前台主要实现代码41第4章测试424.1性能测试434.1.1测试平台环境如下:434.1.2基准测试统计434.2兼容性测试444.2.1测试说明:444.2.2测试平台环境如下:444.2.3测试结果统计与分析:44总结46参考文献47附录48致谢51前 言21世纪是信息的世界,随着信息化的浪潮席卷全球,传统的商务模式受到巨大的冲击。越来越多的企业和个人消费者,在 Internet 开放的网络环境下,一种基于浏览器-服务器应用模式,实现消费者网上购物,商户之间的网上交易和在线电子支付的新型的商业运营模式-电子商务应运而生。目前做得比较成功的电子商务平台,国内有:当当网,阿里巴巴,

13、淘宝,京东商城,慧聪网等,国外有:亚马逊,eBuy等。电子商务在中国也发展了一段时间,目前在国内也有很多电子商务的平台,通过分析国内的电子商务网站可知,目前国内的电子商务做的都是集合型,一个平台中各个方面的商务领域似乎都有涉及到。像比较有名的一些网购平台,如:八点优网,邮乐网,京东商城,易百,淘宝网,拍拍网,红孩网等电子商务网站,涉及的门类都很多,而且他们都有一个共通的特点就是只有产品的展示与订购,很少有厂家企业的介绍。目前中国能用上电子商务平台的都是一些大中型的企业,而大部分的中小型,特别是小型企业还是用着以前的生意模式,靠朋友,靠关系,靠老客户来维持企业,这种模式在过去的时代会有一定的优势

14、,但在信息网络时代这种模式缺乏主动性,往往会使企业处在被动的状态。像阿里巴巴这样的大型电子商务平台是能很好地帮助企业做宣传,联系客户,但是阿里巴巴基本上是面对大中型的企业,每年的管理费用都非常高,对于一些中小企业要承受一笔高的资金是很困难的。为了能够上中小型企业特别是小型企业能够用上电子商务平台,我们特地开发此系统,使中小型企业也能做到生产,宣传,销售一条龙。本系统采用SSH(Struts,Spring,Hibernate)框架来开发。SSH框架是目前J2EE领域里最热门而且用得较为成熟的一套开源框架,它是基于MVC设计模式之上,在充分发挥MVC设计模式优点的同时,也创造出了自己的开发特点,降

15、低了应用程序的耦合性,更进一步提高了应用程序的复用性、移植性、灵活性、扩展性和应用性能。SSH是一套轻量级的开发框架,相对于EJB重量级开发框架,SSH在继承了它的优点的同时,在开发和执行效率上都有了相当程度的提高,同时对于开发者而言,它比EJB更容易学习和撑握,开发速度也更快。目前Struts和Spring发展到2.0版本,Hibernate发展到3.0版本,SSH框架也正在不断地进行优化和升级,运行也越来越稳定。第1章 系统需求分析1.1 系统设计目的本系统设计目的旨在建立一个以SSH框架为基础,结构灵活、可复用、可扩展,开发快速且轻量的电子商务应用平台。系统框架和企业网站子系统为本人设计

16、的主要目标,能够根据业务需求变化可以灵活操作系统功能模块,根据企业变化能够自由添加、修改、删除企业网站子系统是实现以上目标的关键。1.2 系统需求11.11.21.2.1 功能需求1.2.1.1 企业网站前台功能1) 首页:为企业提供一个企业首页,在上面显示企业的重要信息包括企业LOGO,企业名字,企业联系方式,企业部分简介,企业新产品展示等。2) 企业简介:本部分包括了企业简介,企业文化,企业荣誉。从全方位来介绍企业,使客户通过本功能就能比较清楚地了解本企业。3) 产品展示:为企业提供一个产品展示的平台,客户可以在上面根据产品类别来搜索产品,点击搜索到的产品进入了解产品详细,产品展示功能包括

17、展示产品的详细说明和从不同角度拍摄的产品图片。4) 公司相册:为企业提供一个展示企业形象与活动的平台,通过此功能,企业可以展示公司店面,工厂员工和员工活动的照片,让企业客户对公司有更深地了解。5) 客户下订:此功能为企业客户提供下订单的功能,企业客户不用亲自到企业实体店都可以进行下订单,方便了客户与企业之间的交易。6) 联系我们:展示企业的联系方式和联系地址,方便客户与企业之间的沟通。7) 留言:为企业与客户搭建一个沟通的平台,客户可以通过此功能向企业了解情况,询问信息,或提出建议。企业可以选择性回答客户提出的问题。8) 招聘:为企业提供一个招聘的平台,企业可以在上面发布招聘信息,游客通过浏览

18、信息后在线提交简历,大大方便企业招聘人才。9) 合作伙伴:为企业提供一个展示企业合作伙伴的平台,增添企业客户对企业的信任度。1.2.1.2 企业网站后台功能1) 首页管理:管理企业网站首页信息,可以动态设置首页信息,方便企业信息自主管理。2) 企业简介管理:企业简介管理包括公司简介管理、企业文化管理、公司荣誉管理,企业通过后台系统可以动态更新信息。3) 产品管理:产品管理包括产品类别管理和产品内容管理,企业可以随时添加、修改或删除产品。4) 公司相册管理:公司相册管理包括类别管理和内容管理,企业可以根据自身的需要编辑好相册,展示给客户欣赏,提高企业形象。5) 订单管理:订单管理包括未确认订单、

19、已确认订单和已取消订单,企业可以通过订单管理系统实时了解客户下订状态,确保企业能及时跟客户时行交易沟通。6) 联系我们管理:对联系我们页面信息进行动态更新管理。7) 留言管理:企业可以回复留言,删除留言和设置前台显示留言,方便企业自主对留言管理。8) 管理员管理:每个企业都有一个超级管理员,该管理员可以对本企业内的普通管理员进行添加、禁用、启用和查看管理。9) 招聘管理:企业可以自主动态发布招聘信息,回复招聘人员,查看投递简历。10) 合作伙伴管理:企业可以自主添加、修改和删除合作伙伴。1.2.1.3 功能拓展需求1) 提供网站风格选择:为企业管理员提供前后台主题设置功能,管理员可以根据本企业

20、的要求选择合适的风格2) 提供网站功能拓展接口:根据企业业务需求,提供功能拓展接口功能,企业可以根据自己企业的特点,添加或删除某些功能模块3) 提供网站模板选择:为企业管理员提供不同风格的企业网站模板,企业根据自己企业的特色,选择适合自己的企业模板1.2.2 性能需求:1.2.2.1 响应时间与内存使用量:忽略网络环境因素、主题模板及功能插件运作的因素,以本地测试为准。数据库安装响应:时间2秒内,内存使用量最高上限8,000,000 bytes。前台浏览响应时间:时间0.8秒,内存使用量最高上限9,000,000 bytes。后台操作响应时间:时间0.9秒,内存使用量最高上限9,000,000

21、 bytes。1.2.2.2 数据库的优化、备份:提供所有数据表的SQL语句备份,SQL语句的查询数据备份。MySQL数据库的优化处理。数据库每天备份。1.2.2.3 安全性:后台的界面访问、路径访问、操作执行的前后,均受登陆会话管理和用户权限管理的控制。1.3 用例1.3.1 企业管理员用例图1-1 企业管理员用例一级用例图1.3.2 客户用例:图1-2 客户用例一级用例图1.3.3 客户订单用例:图 1-3客户订单用例一级用例图1.3.4 留言用例:图1-4 留言用例一级用例图1.3.5 管理员登录时序图:图 1-5 管理员登录时序图1.3.6 客户下订时序图:图1-6 客户下订时序图1.

22、4 运行环境1.4.1 硬件环境a) 服务器端:服务器端的最低配置是由建立站点所需的软件来决定的,本网络系统服务器端的最低配置如下:处理器:Inter Pentium(Celeron) 4 2.4GHz 或更高。内存:2G硬盘空间:160G显卡:SVGA显示适配器b) 客户端:因为客户端主要用于浏览和操作数据,所以对客户端的硬件要求不高,不过现在的电脑有很高的性价比,因此需要的配置应该高于下面的配置:处理器:Inter Pentium(Celeron) 4 1.6GHz 或更高。内存:512MB硬盘空间:160GB显卡:SVGA显示适配器1.4.2 软件环境a) 服务器端:操作系统:Windo

23、ws NT/2000/2003网站服务器:Tomcat6.x + jdk6.x数据库管理系统:MySQL5.xb) 用户端:操作系统:Windows NT/2000/2003/XP professional/Windows Seven第2章 系统设计22.1 MVC模式分析MVC是一种将应用程序的逻辑层和表现层进行分离的方法。MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。· 模型(Model) 模型是应用程序的主体部分。模型表示业务数据。通常来说,你的模型类将包含取出、插入、更新、删除你的数据库信息的功能。&

24、#183; 视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。一个视图通常是一个网页,但是在 CI中,一个视图也可以是一个页面片段,如页头、页尾。· 控制器(Controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。是模型、视图以及其它任何处理 HTTP 请求所必须的资源之间的中介,并生成网页。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松耦合的构件。本系统是在MVC模式基础上来进行分层,由于本系统开发的工具是MyEclipse,在建立工程时开发

25、工具就已经初步把系统分成MVC三层结构。模型层由Models层来充当,该层主要是用来存实体Bean类和Hibernate影射文件。通过该层开发者很方便地对整个工程下的Bean进行管理,同时也非常方便地对Hibernate配置文件进行影射,极大的提高了开发的效率,同时对以后系统的维护也非常方便。图2-1 models层V层在本系统中主要是用来数据展示,本系统中V层主要是采用JSP技术。通过JSP技术可以很方便地把数据展示在web浏览器上。在JSP技术基础上,对其进行了改进,把html语言和java语言进行分离,这样既达到了解耦的目的,也使后续系统的维护变得很方便。把流程控制都放到Action层,

26、把业务逻辑处理放在service层中,充分利用Struts2技术,在html页面中使用Struts2标签来展示数据,尽量减少在html页面上写java语句。<tr><td nowrap align="right" width="11%">产品编号:</td><td width="60%">$product.id </td> <td align="right" width="4%"></td><td rows

27、pan="8" width="25%">温馨提示: 若无图片,删除失败!<img src="/E-Shop/images/users/enterprise/$product.picture_path" width="200" height="200"/></td></tr> <tr><td nowrap align="right" width="11%">产品名称:</td> &

28、lt;td width="50%"><input type="text" name="productName" id="productName" value="$product.name " maxlength="50" /> <span class="red">150个字符</span></td> <td align="right" width="39%"

29、><input type="hidden" value="$product.id"/></td></tr> <tr> <td nowrap align="right">价格:</td><td><input type="text" name="productPrice" id="productPrice" value="$product.price " maxle

30、ngth="10" /><span class="red">整数或小数,1-10位</span></td> <td align="right"></td></tr>C层主要是用来做流程和逻辑控制,也是整个系统的核心层。所有进出系统的访问都要经过这一层的控制。本系统对C层时行了一些改进,我们把控制层又细分为Action层,service层和Dao层。Action层只管流程控制,Service层只管逻辑控制,Dao层只管与数据打交道,各施其职,每个层次只管自己的

31、事情,这样能使整个系统的层次非常分明,不会出现功能的混淆。让开发者和维护者在编写代码的时候非常清晰。图2-2 C层细分MVC模型优点显然,但在实际开发过程中个人对采用MVC模式有一点点看法。马克思主义哲学告诉我们,任何事物都有它的局限性,MVC也不例外。MVC不是万能药,它并不能医治所有的疾病,作为一名医术高超的医生应该要能对症下药。MVC强制性地将业务逻辑层和表现层分开,在一定程度上是能很好地松耦合,但这种做法是会带来开发和运行的开销的。首先MVC采用多分层结构,这样就给开发带来了难度,增加了开发的时间,并且如果在层次设计的时候设计得不好,反而会降低程序运行的效率。另外多层次结构在运行的时间

32、没有单层次结构的程序运行的速度快,采用MVC模式如果分层太多,是会降低程序运行速度。孔子告诉我们要因材施教,我们做开发的也要因物施用,大炮有大炮的威力,小步枪有小步枪的灵活,并不是说所有的系统都要采用MVC模式来开发。MVC模式它提出来的初衷就是为大型软件设计而提出的,它对那些需要经常复用,扩展的大型软件是非常有好处,但对于那些复用性,扩展性很少的小软件,特别是对于开发时间要求比较紧的情况下,采用MVC模式,其实不是一种明智的选择。2.2 SSH分析SSH即Struts+Spring+Hibernate,是典型的J2EE三层结构,分为表现层、中间层和数据访问层。三层体系将数据表现、业务逻辑和数

33、据访问分开。业务逻辑、数据访问、权限拦截及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库打交道。表现层主要采用的是JSP+Struts,当然也有采用Struts+Freemarker或其他的结合,就目前来说,用JSP作为表现层还是占主流,JSP自问世以来,发展到现在,其稳定性已经得到大多数开发者的认同。Struts也可用到表现层,其实就是用它的标签,Struts强大的标签库为我们表现数据提供了一个很好的平台,通过Struts标签,我们能很好地表现处理后的数据。中间层细分开来又分为控制层和业务逻辑层。控制层主要是对整个系统访问流程的控制

34、,而业务逻辑层主要是对业务的控制。控制层主要由Struts来充当,我们通常说的MVC中的C,它作为表现层和数据层的中间介质,主要处理表现层和数据层的数据交换工作,当然像权限控制,数据校验,我们也会放在这一层中来进行。业务逻辑层主要由Service来控制,它主要封装的是业务逻辑,负责对更底层的DAO层进行封装。数据访问层主要由Hibernate来充当,它主要包括DAO层和PO层。DAO层封装好了对数据库的增、删、改、查的操作,而PO层主要是对实体对象的映射。Hibernate提供的是面向对象的操作方法,使开发者可以使用面向对象的思想来操作数据库,在一些层级性比较强的数据面前,使用Hibernat

35、e是一种很好的选择,它可以很方便地就能检出表与表之间的关系,完全免去了以往用jdbc时的那种写SQL语句的繁琐。而且Hibernate还提供了很多关连和检出方式,这就极大的提高了程序运行的效率。Spring贯穿整个中间层和数据访问层,它对Struts和Hibernate进行了封装管理。将Web层、Service层、DAO层及PO无缝整合。Spring提供的IOC和AOP能很好地解决JS22一些老难题。采用IOC(控制反转),很好地提高了对象的生成,提高了系统的内存利用率。你不需要找我,有需要时我会找你,这就是Spring IOC的核心。AOP提供的是一种全新的编程模式,切面编程。相对于以往的竖

36、面编程,切面编程无疑是给开发者一种新的开发思路。它能够分离关注点,且能够将横切关注点嵌入到面向对象的软件系统中,很好地解决了像权限控制,日志登记,操作记录等的问题。本系统框架主要采用SSH框架,Struts主要是用来控制整个系统流程。它由三个部分组成,核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。本系统采用的核心控制器为2.1.8版本(如图3-4),该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts 2框架处理。Struts 2框架

37、获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。 <!- struts2配置 -> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </

38、filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>拦截器也是本系统中使

39、用的一个Struts2重要组件功能,该组件功能提供一个事件拦截的方法,让你可以对某些动作进行拦截。例如本系统对所有后台操作都有一个检查是否登录的功能,如果没有登录则对其操作进行拦截。public String intercept(ActionInvocation ai) throws Exception Map session=ai.getInvocationContext().getSession();if(session.get("manager")!=null)return ai.invoke();elseActionContext ac=ai.getInvocati

40、onContext();ac.put("tips", "您还没有登录,请登录!");return Action.LOGIN;在本系统中Hibernate主要是对数据库的操作进行了封装。本系统数据库封装是采用外设形式。把连接数据库的信息全部写在外设的一个文件中,然后用Hibernate提供读取外设的功能去读取文件内容。采用此种做法的优点在于可以灵活配置数据库和对不同数据进行切换,考虑到以后有可能升级数据库,采用此种做法是很好的。<bean id="dataSource" class="mons.dbcp.BasicDat

41、aSource" destroy-method="close"><property name="driverClassName" value="$driver"/><property name="url" value="$url"/><property name="username" value="$username"/><property name="password" val

42、ue="$password"/></bean> 在本系统中Spring主要是对Struts和Hibernate进行了封装,把两个框架进行联结起来,采用IOC注入方式来调用对象,任何时候都对Struts和Hibernate对象进行托管,当有需要的时候自动提交给Struts或Hibernate。本系统对Spring作了一个小小的调整就是所有执行操作都放到Spring统一管理。在以往一些人整合SSH中,Struts的某些操作还是没有纳入到Spring中来,我们本次整合是把所有的操作都统一到Spring中来。<bean id="enterprise

43、ManagerDao" class="org.back.dao.enterpriseWebsite.impl.EnterpriseManagerDaoImpl" ><property name="sessionFactory" ref="sessionFactory"></property></bean><bean id="enterpriseManagerService" class="org.back.serivce.enterpriseWeb

44、site.impl.EnterpriseManagerServiceImpl"><property name="vipc" ref="enterpriseManagerDao"></property></bean><bean id="enterpriseManagerAction" class="org.back.action.enterpriseWebsite.EnterpriseManagerAction" autowire="byName&q

45、uot; scope="prototype"><property name="vs" ref="enterpriseManagerService"></property></bean>SSH框架功能强大毋庸置疑,但它也不是万金油,并不是所有的开发都要用这个框架。SSH框架比较适合应用于那些业务逻辑需求变化大,数据表关联较多,但数据检出不复杂,考虑到以后数据库有可能变换或升级,检出数据不频繁的系统。相对于model1和model2模式,SSH是一个笨重的框架,在开发上它的效率是比不上model1

46、和model2的,SSH框架采用的层次比较多,在执行效率上也不及model1和model2。在数据访问上,Hibernate是以对象的方式来访问数据库的,相对于jdbcd而言它的效率是比较底的,而且Hibernate关连的数据比较多,如果在配置上控制不好,会有很多冗余的数据检出来,这样就会加大的服务器内存的负担,降低了运行的效率。受制于HQL语言的限制,Hibernate对于一些复杂的检出是比较麻烦的,在这一方面,它远没有jdbc来得方便。对于开发者而言要学好SSH也不是一件容易的事,它是需要花一些时间去研究和学习的,相对于model1和model2,SSH要花相当大的时间去学习才能很好地撑握

47、。2.3 插件式设计分析应用程序框架插件接口配置文件插件2插件3插件n插件1图 2-3 插件式设计分析插件式设计比起许多设计模式更简单,更灵活,更容易理解和操作。它减轻了开发者很多的工序,减轻了开发者开发的负担,使开发者能够利用现有的插件,很好地完成目标功能。各种基于插件设计的架构都有自己的特色,但从总体架构上看,其模型都大同小异。基于插件开发的应用程序都有四部分组成,系统框架、插件接口、配置文件和插件。通过插件接口,系统框架可以非常灵活地使用外部插件,这也非常符合24种设计模式中的接口分离原则。· 应用程序框架它只负责整个程序流程的调控,并且可以在程序中嵌入插件接口,但不并不了解插

48、件的实际执行情况,只负责接口的接入。· 插件接口外部插件的入口,它是一个协议,与程序框架的关联点,外部插件就是通过此入口来接入程序框架,它只负责两者的整合。至于如何具体实现,就交给具体的插件来处理,它只负责接入而不负责具体的实现。· 配置文件接口配置文件,通过配置注明具体要调用哪个接口· 具体插件具体插件,负责实际的功能操作与具体实现,通过配置文件的配置被调用。一般具体的插件都遵循功能单一性,也就是说,是分页的插件只管分页,是编辑的插件只管编辑,两者不能混在一起,否则就会引起接口污染,不符合设计模式。本系统中采用的插件有FCKEditor、Display-tag、

49、Struts2标签库、JQuery。由于SSH开源性,因此在本系统中对于外部插件的引入非常方便,在配置好插件文件的基础上在需要引用的地方再配置一下配置名称就可以了,非常方便开发者开发。FCKEditor对于文章编辑,图片编辑非常方便,它里面已经集成好了很多编辑的功能方法,对字体、段落的格式提供了丰富的选择,还可以添加表情等,功能极其丰富。开发者在开发时只需引入相应的模块即可。 <tr><td>&nbsp;</td><td align="center" width="80%"> <FCK:edi

50、tor instanceName="description" value=" " height="185pt" ></FCK:editor> </td> </tr>Display-tag插件对于后台分页非常方便,它提供了分页、打印、导出、排序等功能,对于管理类数据的管理非常方便。有了它,开发者不必花大多的时间去编写类似以上功能的代码,可以省出更多的时间去整理业务逻辑,极大的提高了开发效率和开发时间。 <tr bgcolor="#EEEEEE" id="dis

51、playTableDiv"> <display:table class="displayTableShow" name="productsList" requestURI="getAllProductsList.action" id="product" pagesize="10" style="width:100%;"> <display:column property="id" title="编号"

52、sortable="true"></display:column> <display:column property="name" title="名称" sortable="true"></display:column> <display:column property="category.category" title="产品类别" ></display:column> <display:column

53、property="price" title="价格" ></display:column> <display:column property="min_buy" title="最低批发量" ></display:column> <display:column property="type" title="适用型号"></display:column> <display:column property=&

54、quot;description" title="产品描述" ></display:column> <display:column title="图片" media="html"> <img src="/E-Shop/images/users/enterprise/$product.picture_path" width="80" height="80" /></display:column><displa

55、y:column title="操作" media="html" ><input type="button" onclick="window.location='connectionModifyProduct.action?id=$product.id'" value="修改"/><input type="button" onclick="if(confirm('确定要删除吗?')window.location

56、='deleteProduct.action?id=$product.id&picturePath=$product.picture_path'" value="删除" /></display:column> </display:table> </tr>2.4 设计模式引入模式其实就是前人总结的一些经验,如果遵循某些规则会让开发者少走很多弯路。在JAVA世界里有一套经典的设计模式,GOF的23种设计模式,它让开发者创造出了很多优秀的程序。设计模式不仅是一种技术,更是一种艺术,采用设计模式来开发软件,

57、会有很多意想不到的效果。本系统引入的设计模式如下:122.12.22.32.42.4.1 工厂方法模式 本系统数据操作就是采用了工厂方法模式,首先定义了一个数据连接接口,然后再定义一个数据实现类,最后定义一个数据连接工厂来返回数据库连接。图 2-4 设计模式引入-数据库连接级别图接口public interface IDBConnection public int getRowCount(String strSql) throws SQLException;public ResultSet getRs(String sql) throws SQLException, Exception;pub

58、lic int insert(String sql) throws SQLException;public int update(String sql) throws SQLException;public int delete(String sql) throws SQLException;实现类public class DBConnection implements IDBConnection public synchronized int getRowCount(String strSql) int intCount=0; try stmt = (PreparedStatement) g

59、etStmtread("select count(*) from "+strSql); rs = stmt.executeQuery(); if(rs.next() intCount = rs.getInt(1); else intCount = 0; catch(Exception e) intCount = -1; System.err.println(e.getMessage(); e.printStackTrace(); finally close(); return intCount; 采用工厂方法模式可以按批量生产对象,同时也符合单一职责功能,一个工厂只生产一种

60、产品,符合开闭原则,对扩展开放,对修改关闭,如果以后数据库操作功能需要添加功能,可以很方便添加功能,而不用修改原来的代码。2.4.2 单例模式本系统数据连接采用了单例模式。采用单例模式的好处就是保证了在整个系统内只有一个实例存在,因为数据连接都是共同的,保证一个共用连接已经足够,这样就极大的节省了系统内存空间,提高了系统的运行效率。public class DBFactory private static IDBConnection dbconnection;private DBFactory()SuppressWarnings("unused")/* * 生成数据库操作唯

61、一实例 */public static synchronized IDBConnection getBDConnection()if(dbconnection = null)dbconnection = new DBConnection();/System.out.println("生成数据库操作实例!");return dbconnection;2.4.3 享元模式享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够受大幅度地减少需要实例化的类的数量。如果能把那些参数移到类

62、实例外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。在本系统中我们需要生成大量的企业网站,但这些企业网站的功能框架是都一样的,只是具体的参数不一样,这就非常符合享元模式了。我们把企业网站的享元类做好,等需要生成不同企业网站时,就把具体的参数再传进去,这样就能达到共享的目标。图2-5 设计模式引入-享元模式图可以生成无数个企业网站只需调用以上几个共用的享元页面就可以了。通过传入不同的参数,就可以区别开来是哪个企业的网站。2.5 前台分页方法改进目前java世界里分页方法有很多,针对不同的用途分页也不同,所采用的分页原理也不一样。有些分页方法是一次性把所有数据都查询出来

63、,然后再根据当前的ID号来确定要显示哪一页,此种方法是能实现数据分页,但是每次取数据都要把所有的数据都查询出来,这样做不利于提高查询的速度。有些分页方法则是根据当前页的首ID和尾ID号来确定上一页和下一页的内容,每次点击上一页或下一页都去数据库把相应的数据查询出来,这种做法是提高了查询的速度,但是每次查询都要访问数据库,增加了数据库服务器的负担,运行效率不高。本系统前台采用的分页方法原理是,第一次查询时把所有要查询的数据都从数据库里查询出来,然后把这些数据放到一个session中缓存起来,以后再查询时就从session缓存中去取需要的数据,这种做法的优点在于,只访问一次数据库减少了对数据库服务

64、器的负担,把数据缓存在本地,每次查询速度比去直接访问数据库查询要快得多。采用此种分页方法既减少于数据库的访问,又提高了数据查询速度,可谓是一举两得。/* * 获取公司信息 */public void returnCompanyInfo()/*使用session缓存,第一次加载数据时把数据放入到session中,以后每次访问同一页面时都会从session缓存中取数据,以减少对数据库的访问,减轻数据库的负载压力。*/companyInfo = ServletActionContext.getRequest().getSession().getAttribute("companyInfo&

65、quot;)=null?null:(CompanyInfoBean)ServletActionContext.getRequest().getSession().getAttribute("companyInfo"); if(companyInfo = null) companyInfoService = new CompanyInfoServiceImpl(); try companyInfo = companyInfoService.getOneCompanyInfo(1);ServletActionContext.getRequest().getSession().s

66、etAttribute("companyInfo", companyInfo);/System.out.println("初次访问!"); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); 2.6 数据库设计本系统采用的数据库为Mysql5.0,本系统所有与数据库相关的开发都遵从Mysql5.0数据库开发原则。本系统数据库开发定义名词如下:1. *:主关键字符号;2. PK:主关键字缩写;3. +:外关键字符号;4. FK:外关键字缩写;5. &:复合关键字符号;6. CPK:复合关键字缩写;7. UNIQUE:唯一索引;各数据表描述表21 数据库表描述数据表描述相关区域VIP_client企业客户信息表AdministratorCOMPANY_CATEGORY公司类型表AdministratorCOMPANY_CULTURE企业文化表AdministratorCOMPANY_HONOR公司荣誉表AdministratorPRODUCT_CATEGORY产品类别表Ad

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!