网上购物系统毕业设计说明书_第1页
网上购物系统毕业设计说明书_第2页
网上购物系统毕业设计说明书_第3页
网上购物系统毕业设计说明书_第4页
网上购物系统毕业设计说明书_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

23/23目录0.1文档目的51.绪论61.1概述61.2网上购物系统课题来源61.3网上购物系统研究的目的及意义61.4网上购物系统的构建62.网上购物系统需求分析与设计62.1网上购物系统可行性分析62.2网上购物系统的安全策略72.3网上购物系统需求概述和分析72.4系统的用例图与活动图设计72.5网上购物系统架构设计和其应用模型72.6系统功能设计73.网上购物系统设计技术73.1JSP技术73.2数据库ORACLE技术与TOMCAT服务器73.3技术总概74.网上购物系统业务逻辑设计84.1对象/关系映射文件的建立94.2网上购物系统服务层的设计115.网上购物系统各模块的设计及实现的相关代码255.1浏览商品255.2网上购物系统服务层的设计115.3支付管理256.总结25致谢25参考文献25[摘要]:电子商务是当今IT行业的热点,而网上商店无疑是电子商务一个重要组成部分,也是电子商务的基础技术之一。网上商店利用现代最新信息技术,在网络上建立了一个虚拟的商店。它的存在对传统的商店产生了巨大的冲击力,它比传统的商店有着无法比拟的优势。在线购物系统指的是一种Web系统,它通过Internet为用户提供商品信息及销售服务,用户只要能够使用浏览器访问Internet,就可以在这个网站中获取商品信息,按照网站的规定购买网站提供的商品和〔或服务以及享受该网站提供的其他服务。[关键词]:网上商店、网上购物、商店、数据库[Abstract]:E-commerceisafocusofcurrentITtrade,andtheonlineshopisundoubtedlyanimportantcomponentofe-commerce,itisoneofthebasictechnologyofe-commercetoo.Theonlineshoputilizesthemodernlatestinformationtechnology,hassetupafictitiousshopinthenetwork.Itsexistencehasproducedenormousshockpowertothetraditionalshop,ithasincomparableadvantagesmorethanthetraditionalshop.ThesystemmeansakindofWebsystemtodoshoppingonline,itoffersinformationofthegoodsandsaleserviceforuserthroughInternet,solongasuserscanusethebrowsertovisitInternet,canobtaintheinformationofthegoodsinthiswebsite,buythegoodsthatwebsitesofferand<or>serveandenjoyotherservicesthatthiswebsiteofferaccordingtotheregulationsofwebsites.[Keywords]:Onlineshop,onlineshopping,shop,Database1绪论1.1概述近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。1.2网上购物系统课题来源在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储、科罗格、J.C培尼等纷纷挤身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC的统计结果,截止20XX1月中国有互联网用户7950万人,而又有40.7%以上的网民在过去的一年里有过网上购物经历,这就说明中国有网上购物的用户达是3235.7万人,并且这一数字还在以17%左右的速度增长,预计到20XX中国网上购物用户将达到6962万人,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。1.3网上购物系统研究的目的及意义电子商务<electroniccommerce>是计算机网络所带来的又一次革命,它的发展将形成新的交换体制,产生新的市场规则,冲破时间与空间的限制,加快全球市场一体化的进程,电子商务还将有力地推动信息和信息服务业的发展。而网络购物中心作为电子商务的一种形式,是伴随着市场经济和Internet的蓬勃发展,以及人们的消费观念不断变化,而形成的一种新的产品销售形式。网上销售作为一种新的商品营销手段,正以其高效、低成本的优势,逐步成为新兴的经模式和理念,也越来越被消费者认同。敏锐的商家当然不会错过这样绝好的机会,越来越多的商家投身到提供网络销售服务的行业中来,一个基于Internet的全球电子商务框架正在形成。与传统的百货商店、连锁超市、大卖场、便利店等有形商铺相比,网上销售业态具有一定的先天优势。一是地段。相对于传统的有形店铺来说,网上销售则大多不存在地段方面的制约。二是经营成本。借助日益发展的科学技术,网上销售通常能够省却从生产到销售过程中的许多环节,从而有效降低经营成本与交易本。三是风险。对于个人来说,网上商店等无店铺零售业态的准入门槛相对较低,运转比较灵活,即使遇到风险,也有船小好掉头的优势。随着社会济的发展及消费水平的提高,人们希望得到更加方便、更加快捷的购物方式,同时也乐于尝试各种新的购物方式。在这一市场需求的推动下,企业会对商品零售的方式进行创新,而先进的技术给创新提供了重要支撑与平台。1.4网上购物系统的构建现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一个细小的环节都和重要。这样才能使得在电子交易时避免不必要错误发生。我们将使用HTML、JSP等技术来编辑网页,并运用JSP技术把数据库和动态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本文在实际应用开发中解决方案是建立网站,

以及自己的数据库,使得所需商品信息可以及时的保存、更新。可以更好的及时了解商品买卖的情况。2网上购物系统需求分析与设计2.1网上购物系统可行性分析建立一个网络购物中心系统,需要有很多技术上的支持。从系统本身的组成来看,网上购物中心由两个部分组成,分别是前台部分和后台部分。前台主要是由用户管理,后台由管理员管理。2.2网上购物系统的安全策略安全技术保障技术是电子商务安全体系中的基本策略,目前相关的信息安全技术与专门的电子商务安全技术研究比较普遍和成熟。电子商务中常用到的安全技术有以下几种:密码技术密码技术包括加密技术和解密技术。加密是将信息经过加密密钥及加密函数转换,变成无意义的密文。而解密则是将密文经过解密函数、解密密钥处理还原成原文。密码技术是网络安全技术的基础。身份验证技术电子商务主体向系统证明自己身份,并由系统查核该主体的过程,是确认真实有效身份的重要环节,这个过程叫作身份验证。常用的验证技术有报文鉴别、身份鉴别和电子签名。访问控制技术访问控制是指对电子商务网络系统中各种资源访问时的权限确认,防止非法访问。它包括有关的策略、模型、机制的基础理论与实现方法。防火墙技术。2.3网上购物系统需求概述和分析随着Internet的蓬勃发展以及生活节奏的加快,人们的消费模式及理念也随之改变。人们已不再满足于信息浏览和发布,而是渴望着能够充分享受网络所带来的更多便利。因此,急需一种高效、低成本的经营销售方式以适应时代步伐。而网络购物中心正是基于如上原因而逐步发展起来的。在进行具体设计之前,应该充分调研,了解用户对网络购物中心的需求,即用户需要。任何一个软件项目的开发总是建立在需求分析的基础上的,因此只有更好地了解、分析、明确用户需求,并且能够准确、清晰以文档的形式表达出来,保证开发过程按照满足用户需求为目的正确项目开发方向进行,是软件开发需要面对的问题。根据网络购物中心系统的功能特征将它分为前台和学生后台两个部分,现分别对这两个部分进行需求分析。用户管理模块为了便于网站的管理,必须有一套完整的用户管理体系,该用户管理模块由用户注册、用户登录找回密码三部分组成2.3.2登录用户可以通过订单号查询订单。2.3.3所选商品必须通过购物车暂存,然后生成订单。商品管理模块用户可以对商品进行详细的操作,如:对商品的增、删、查、改。和对其的分类等等一系列的事件。2.3.5为了保护用户信息不受非法侵害,用户登录后即可对个人的注册信息进行修改。2.3.6留言板:2.4系统的用例图与活动图设计2.4.1系统的用例图图活动图设计的功能层次图图2.5网上购物系统架构设计系统结构系统采用Struts+Hibernate的技术架构,对系统进行分层。Struts的action调用业务层获取业务数据,并通过Jsp页面〔viewer把数据呈现出来;运用Hibernate技术将对象持久化。各个框架模块间的关系如下图〔图:图系统结构的优点独立性可将系统分为以下十三个独立模块,前台:登录模块、个人信息管理模块、浏览商品模块、购物车管理模块、支付管理模块、个人订单管理模块,后台:管理员信息管理模块、用户信息管理模块、商品管理模块、商品分类管理模块、订单管理模块、首页管理模块、销售统计模块。可扩展性采用Struts架构的MVC模型来将低系统各层之间的耦合程度;系统采用Hibernate技术来对数据库访问进行很好的封装,降低系统对于具体的数据库环境的依赖。可移植性采用Java技术来使系统能在不同的硬件平台上进行移植;尽量不采用依赖于特定运行环境支持的开发技术,提高系统在不同的Web服务器之间的可移植性。安全性用户提交请求到系统进行处理前。必须进行权限的验证。这个验证通过Filter来进行。可靠性保证事务操作的原子性。把相关的操作定义在同一事务范围内;从表现层提交的数据在提交到业务层进行处理之前,都应该经过有效的验证。操作简便由于在前端采用了统一的浏览器界面,所以用户在使用时简单易用,只需要掌握一些简单的Web页面操作方法,大大降低了培训成本。节约成本整个软件的开发可集中在服务器端进行,不必对用户端进行特殊设置和软件安装,降低维护成本。应用模型图2.6系统功能设计根据不同功能类别分其子功能如下〔表:功能类别子功能登录系统用户注册用户登录找回密码退出登录个人信息管理查询个人信息修改个人密码修改个人资料浏览商品商品查询发表评论购物车管理商品添加商品删除数量修改支付管理填写支付信息选择支付方式<只有选择了网上银行支付才进行>网上银行转帐个人订单管理订单查询订单打印管理员信息管理管理员登陆系统管理员添加管理员系统管理员查询管理员系统管理员删除管理员系统管理员修改管理员权限管理员修改密码用户管理查询用户信息删除特定用户商品管理添加商品删除商品修改商品<能够更改该商品是否为推荐商品>查询商品查询脱销商品删除该商品的特定的评论信息商品分类管理查询分类添加分类修改分类删除分类订单管理查询订单修改订单状态删除订单首页管理公告管理销售统计退出系统表3网上购物系统设计技术3.1JSP技术JSP的运行环境要开发JSP应用程序,服务器端必须有相应的开发环境,开发环境主要有以下两部分组成:JDK〔JavaDeveloperKit,Java开发工具包、JSP服务器。1.JDK的安装和配置JDK是Sun公司免费提供的Java语言开发工具,它包含了Java开发中所必需的开发工具和Java运行环境〔JRE-JavaRunEnvironment,是Java应用程序开发的基础。2.Tomcat的安装和测试Tomcat服务器是在Sun公司的JSWDK〔JavaWeb服务器开发工具包的基础上发展而来的一个优秀的JavaWeb服务器,它是由JavaSoft和Apache开发团队共同提出合作计划的产品,它还可以和目前大部分的主流HTTP服务器〔如Apache服务器一起工作,且性能稳定、效率高。JSP数据库设计数据库是信息系统的核心和基础,是信息系统开发和建设的重要部分,把信息系统中大量的数据按一定的模型组织起来,提供存储检索数据的功能,使信息系统可以方便、及时、准确地从数据库中需的信息。在动态网站的设计中,数据库设计的重要性不言而喻。数据库设计一般包括数据库需求分析、数据库概念结构设计、数据库逻辑结构设计三个步骤。JDBC驱动管理器的作用是在JDBC运行结构上提供最基础的指引功能。即当一个JDBCAPI程序进行数据库调用时,它会选择一个正确的JDBC驱动程序进行连接。JDBC驱动的作用是当JDBCAPI制作的程序进行数据调用时,实际连接数据库并进行相应的处理,JDBC驱动提供JDBCAPI的接口类。使用JDBC需要完成以下步骤:1.加载JDBC驱动程序及建立连接将驱动程序类加载到应用程序的Java虚拟机〔JVM中,它可以使用该驱动程序打开连接。作为初始化工作一部分,DriverManger类将试图加载jdbc.drivers系统属性中的全部驱动程序类。这使得用户可以使用它们的应用程序来自定义JDBC驱动程序。另外应用程序也可加驱动程序管理器来询问注册的驱动程序是否已识别该URL字符串等。它将使用该驱动器创建connection对象。2.执行SQL语句前面已经创建了一个连接,接下来可根据需要对底层关系数据库采取相应的操作查询,插入,更新等。向数据库中传送SQL命令时需要使用Java.Sql.statement接口,statement不会被直接使用,应用程序会调用connection对象,而该对象是所有从JDBC驱动程序返回的远程对象的根。3.处理结果Request对象用于读取浏览器的信息,它包含了所有有关当前浏览器请求的信息,包括Cookies,HTML表单变量等。通过"HttpServletRequest"能访问到请求的参数、请求的类型以及文件头〔Header信息。例如一个典型的HTML输入表单,它包含了3个要素,表单上含有输入子端,含有"提交"按钮,按下提交按钮,会启动服务器的JSP程序,处理表单上的数据,在服务器所启动的程序就可通过Request对象得到参数。利用JSP访问Response对象Response始于服务器端针对用户请求的项影响关联的"HttpServletResponse"类型的对象。可以通过"response"变量设置HTTP的状态和向客户端发送数据,如Cookie,HTTP文件头信息等。如浏览器所取得的是一个.htm文件,PWS不必执行任何程序只要回以一原始的.htm文件。但如果浏览器取得的是.jsp文件,那么PWS就会解释执行.jsp文件中的程序。程序如何响应数据给浏览器则是程序的任务。而正是通过JSP所提供的Response对象将程序的执行结果响应给浏览器。利用JSP访问session对象session对象用来在每一用户之间分别保存用户的信息。它提供网页之间的公用信息。例如:在购物的网页中,把不同类型的商品分别制作成不同的网页。每当购物者进入某一网页选购某些商品后,必须帮它把选购的商品放进"购物车",此时的购物车就是所有购物网页的共同对象。因此,购物车使用session对象制作最为合适。网站数据库的优化:连接池Web应用程序的访问中随着用户数量的增加,当前的用户请求还没有处理完毕时,后面的请求就已经到来因此让应用程序在某一时刻只接受一条数据库的请求是不现实的。所以应该改善Oracle数据库服务器的性能连接管理程序创建并维护数据库连接池,一个特定池中的所有连接都连接到同一个JDBCURL,当一个线程执行JSP实例需要使用数据库实例时,它就可以通过连接池管理程序得到这个连接,当使用这个连接线程结束后,应当将连接交还给连接池管理程序,这样连接池管理程序就能把它提供给正等待的其他请求线程〔可能被封锁。3.2数据库ORACLE技术与TOMCAT服务器安全的Web应用平台将应用程序服务和数据库服务相分离,采取远程访问数据库的方式来保障数据的安全。结合实例介绍了JSP远程访问Oracle数据库的技术。Web服务器端是以WindowsXP+JDK116+Tomcat5.0为平台,介绍了JDK116、Tomcat5.0的环境配置以及如何在Tomcat5.0服务器上建立虚拟目录的方法。数据库服务器端是以Solaris10+Oracle11g为平台,描述了如何通过Oracle客户端工具远程连接、管理数据库。最后,结合数据库中新建测试表,提供了基于JDBC接口访问Oracle数据库的JSP程序实例,为进一步研究优化远程访问Oracle数据库技术奠定了基础。对数据库的有效管理和开发是Web应用的重要环节。Oracle数据库提供了客户端连接工具,可以通过它使用SQLPLUS<Oracle中的数据库操作工具>,高效、安全地远程管理Oracle数据库系统。同时,在基于JSP技术的Web开发应用中,数据库访问是使用JDBC<JavaDataBaseConnectivity,Java数据库连接>实现的,它为程序员提供了一个易操作的数据库连接管理接口本文结合实例,通过SQLPLUS在Oracle11g数据库表空间中,建立测试表——用户登录信息表,使用JSP编写的用户登录程序,实现了调用数据库中的数据对登录合法性进行验证的功能。Java环境——JDK116JDK<Java开发包>包含了Java开发中必须的工具和Java程序运行环境,它是由一个标准类库和一组建立、测试的Java实用程序组成[1]。使用JDK需要配置系统环境变量,假定JDK安装在c:\jdk,在"我的电脑2>属性2>高级2>环境变量2>系统变量"中添加以下变量。1.新建环境变量JAVAHOME,用以描述JDK的安装路径。JAVAHOME=c:\jdk2.新建环境变量path,保障操作系统能运行Java命令。path=%JAVAHOME%\bin3.修改环境变量classpath,使Java执行环境能找到指定的Java程classpath=.;%JAVAHOME%\lib\dt1jar;%JAVAHOME%\lib\tools1jar;Web服务器软件——Tomcat5.01.Tomcat环境Tomcat是一个小型的轻量级Web应用服务器,它运行时占用的系统资源小,扩展性好,是开发和调试JSP程序的首选[2]。运行Tomcat也需要配置系统环境变量,假定Tomcat安装在c:\tomcat,在"我的电脑2>属性2>高级2>环境变量2>系统变量"中添加以下变量<与JDK环境流程相同可查看有关资料>。完成上述操作后,启动Tomcat,在IE中访问http://localhost:8080,如果看到Tomcat的欢迎页面,说明Web服务器建立成功。3.2.3虚拟目录便于用户输入,具有更好安全性<不提供真实物理路径>,因而普遍应用于Web程序开发在Tomcat5.0服务器上建立虚拟目录需要以下两步骤。1.编辑Tomcat安装目录下的conf\server.xml,找到</Host>的位置,在其前面加入:<Contextpath="\test"docBase="c:\test"privileged="true"reload="true"></Context>path表示在浏览器中输入的路径,docBase表示站点的实物理路径。设置reload参数为true,可以在每次对代码修改后自动重启Tomcat服务器,显示最新调试结果。2.修改Tomcat安装目录下的conf\web.xml文件。<init-param><param-name>listings</param-name><param-value>false</param-value></init-param>把选项<param-value>中的值false设成true。完成上述操作后,重新启Tomcat,在IE中访问http:\\localhost:8080\test,如果看到Tomcat关于test目录的列表,说明虚拟目录建立成功。JSP连接Oracle11g数据库1.安装JDBC驱动程序要通过JDBC技术远程连接数据库,必须在客户端Oracle的JDBC驱动程序。将驱动程序中的classes121jar文件拷贝到Tomcat安装目录下的\lib中。2.JDBC是一种用于执行SQL语句的JavaAPI,它由一组用Java语言编写的和组成开发人员通过它可以方便地查询数据库、操作数据甚至调用存储过程。下面这个JSP程序展现了使用JDBC连接Oracle数据库并查询数据信息的完整过程。。importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.Statement;publicclassResultSetTest{publicstaticvoidmain<String[]args>{ Connectioncon=null;try{//加载ODBC驱动Class.forName<"sun.jdbc.odbc.JdbcOdbcDriver">;//通过驱动管理器〔DriverManager获得连接con=DriverManager.getConnection<"jdbc:odbc:myodbc","pubuse","123">; Statementst=con.createStatement<>; Stringquery="selectid,namefromstudent";//获得一个结果集 ResultSetrs=st.executeQuery<query>;//获得结果集的元数据〔表及相关的信息 ResultSetMetaDatarsmt=rs.getMetaData<>;//得到结果集有几列intnum=rsmt.getColumnCount<>; String[]columns=newString[num];//列的序号是从1开始的for<inti=0;i<num;i++> columns[i]=rsmt.getColumnName<i+1>;//先输出列名for<inti=0;i<num;i++> System.out.print<columns[i]+"">;//输出列名之后换行 System.out.println<>;//取出结果while<rs.next<>>{//输出每一行的值for<inti=1;i<=num;i++>{ Stringtemp=rs.getString<i>; System.out.print<temp+"">; } System.out.println<>; } }catch<Exceptione>{ e.printStackTrace<>; }finally{try{//用完后要关闭连接,释放资源if<con!=null> con.close<>; }catch<Exceptione>{ e.printStackTrace<>; } } }}3.3技术总概由于本网上购物系统采用Struts+Hibernate的技术架构。对系统进行分层。Struts的action调用业务层获取业务数据,并通过Jsp页面〔viewer把数据呈现出来;运用Hibernate技术将对象持久化。结合JSP页面和TOMCAT服务器构成了一个MVC模型视图层、控制层、业务层为一体的系统结构体系。整个模型的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。下面简单介绍下所用到的二个技术架构。3.3.1Struts架构Struts架构,是一种将视图层和控制层分离的架构,让整个系统看起来具有层次感和增加系统的维护效率。Struts是Apache软件基金下Jakarta项目的一部分,Struts框架的主要架构设计和开发者是CraigR.McClanahan。Craig也是Tomcat的主要架构师,以及JavaWebServicesDeveloperPack的主要架构师和实现者。他现在是Sun的JavaServerFaces<JSR-127>以及J2EE平台的Web层架构的规范领导。在Java应用中使用Struts包含以下步骤。1.actionForm的创建ActionForm是个JavaBean,扩展org.apache.struts.ActionForm类。这个对象捕获通过请求传送的输入。当浏览器提交一个表单,它在请求中为每个表单中的字段创建一个参数。ActionForm针对每个HTML表单中的字段具有一个对应的属性。ActionServlet匹配请求中的参数和ActionForm中的属性。当匹配好ActionServlet为属性调用setter方法,并将请求中的值传入。在我们的练习中,表单中的username字段需要一个setUsername<String>方法。Password1字段需setPassword1<String>和setPassword2<String>方法。2.RegisterAction的创建Action一个Java类,扩展了。ActionServlet组装ActionForm,然后将其传递给Action。Action通常负责输入校验,存取业务信息,以及决定向Servlet返回哪个ActionForward。3.创建Struts配置文件<struts-config.xml>struts-config.xml文件包含了ActionServlet需要用来处理对应用请求的详细信息。为了练习,我们创建一个空壳的struts-config.xml文件。文件存储在<BaseDirectory>/webapps/register/WEB-INF/目录下,需要改变的是:首先,添加/register到<action>元素的path属性。ActionServlet使用Web容器转发给它的URI来选择正确的Action类。URI和ActionMapping的path属性匹配。这里,请求给出的路径必须在去除前缀和后缀后和/register匹配。前缀或后缀通常是/do/或者.do。我们的练习中,将后缀设置为.do。当URI具有一个.do扩展名,容器就知道将请求转发给ActionServlet。Struts会自动去除扩展名,所以我们在配置时不必加上它们。下一步添加:registerForm到<action>元素的name属性。<action>元素使用name属性来识别哪个ActionForm将被创建,并将提交的表单组装给他。然后,添加app.RegisterAction到<action>元素的type属性。ActionServlet使用这个属性来识别将用来处理请求的Action类。接下来,在<forward>元素下,添加success到name属性,并且/success.html到path属性。最后,再在另一个<forward>下添加failure到name属性,/failure.html到path属性。这些元素将创建ActionForward对象,我们将用它来选择程序的控制流。<forward>元素定义了在RegisterAction中使用的逻辑名称之间的关联。4.视图层〔如:success.html,failure.html,register.jsp的创建将ActionForm和ServletAction与其相应的视图层的页面在Struts配置文件进行连接。3.3.2Hibernate架构Hibernate架构,是一种将业务层〔也可以说是模型层和控制层分离的架构,让整个系统看起来具有层次感和增加系统的维护效率。Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤。1.创建Hibernate的配置文件。Hibernate从其配置文件中读取和数据库连接有关的信息,这个配置文件应该位于应用的classpath中。Hibernate的配置文件有两种形式:一种是XML格式的文件;还有一种是Java属性文件,采用"健=值"的形式。下面介绍如何以Java属性文件的格式来创建Hibernate的配置文件。这种配置文件的默认文件名为perties的内容如下:hibernate.dialect=net.sf.hibernate.dialect.MySQLDialecthibernate.connection.url=jdbc:mysql://localhost:1521/SAMPLEBsername=roothibernate.connection.password=1234hibernate.show_sql=true2.创建持久化类持久化类是指其实例需要被Hibernate持久化到数据库中的类。持久化类通常都是域模型中的实体域类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX<>和setXXX<>方法。以下定义了一个名为Customer的持久化类。3.创建对象-关系映射文件Hibernate采用XML格式的文件来指定对象和关系数据之间的映射。在运行时,Hibernate将根据这个映射文件来生成各种SQL语句。在本例中,将创建一个名为FirstSort.hbm.xml的文件,它用于把FirstSort类映射到FirstSort表,这个文件应该和FirstSort.class文件存放在同一个目录下。以下为FirstSort.hbm.xml文件的源代码。<classname="com.wuhan.data.FirstSort"table="firstsort"><idname="fid"column="fid"><generatorclass="increment"></generator></id><propertyname="fname"column="fname"></property><setname="secondSort"cascade="delete"lazy="false"><keycolumn="fid"></key><one-to-manyclass="com.wuhan.data.SecondSort"/></set></class>4.创建对象-关系映射文件Hibernate对JDBC进行了封装,提供了更加面向对象的API。以下两图对比了直接通过JDBCAPI以及通过HibernateAPI来访问数据库的两种方式如下图。图4网上购物系统业务逻辑设计4.1对象/关系映射文件的建立物理设计有关各模块这间对象关系映射表如图〔图;图4.2网上购物系统服务层的设计N层的应用软件系统,由于其众多的优点,已经成为典型的软件系统架构也已经为广大开发人员所熟知。在一个典型的三层应用软件系统中,应用系统通常被划分成以下三个层次:数据库层、应用服务层和用户界面层。如下图〔图4.1:

图4.1

其中,应用服务层集中了系统的业务逻辑的处理,因此,可以说是应用软件系统中的核心部分。软件系统的健壮性、灵活性、可重用性、可升级性和可维护性,在很大程度上取决于应用服务层的设计。因此,如何构建一个良好架构的应用服务层,是应用软件开发者需要着重解决的问题。

为了使应用服务层的设计达到最好的效果,我们通常还需要对应用服务层作进一步的职能分析和层次细分。很多开发者在构建应用服务层的时候,把数据库操纵、业务逻辑处理甚至界面显示夹杂在一起,或者,把业务逻辑处理等同于数据库操纵,等等,这些,都是有缺陷的做法。本文,就在这个方面进行设计时可采用的方案进行一些探讨。

为了使讨论更具有针对性,本文会讨论一些比较流行的系统架构,例如J2EE架构,以及JDO。在微软的.Net平台上,将以Websharp中间件为例。Websharp中间件是笔者开发的一个构建在微软.Net平台之上的一个中间件系统,也是实现文章所述的系统架构的支撑系统。选用这些架构做例子,也是因为.Net出现的时间比较短,目前在这个平台上没有成熟统一的架构,而J2EE是目前最成熟的构建企业应用的平台。设计的原则同软件工程的原则一样,应用服务层的设计,必须遵循的最重要的原则就是高内聚和低耦合。软件分层的本来目的,就是提高软件的可维护性和可重用性,而高内聚和低耦合正是达成这一目标必须遵循的原则。尽量降低系统各个部分之间的耦合度,是应用服务层设计中需要重点考虑的问题。

内聚和耦合,包含了横向和纵向的关系。功能内聚和数据耦合,是我们需要达成的目标。横向的内聚和耦合,通常体现在系统的各个模块、类之间的关系,而纵向的耦合,体现在系统的各个层次之间的关系。

系统的框架,通常包含了一系列规范、约定和支撑类库、服务。

对于如何判断一个软件的系统框架的优劣,笔者认为,可以从以下几个方面来评判:1.系统的内聚和耦合度

这是保证一个系统的架构是否符合软件工程原则的首要标准。

2.层次的清晰和简洁性

系统每个部分完成功能和目标必须是明确的,同样的功能,应该只在一个地方实现。如果某个功能可以在系统不同的地方实现,那么,将会给后来的开发和维护带来问题。

系统应该简单明了,过于复杂的系统架构,会带来不必要的成本和维护难度。在尽可能的情况下,一个部分应该完成一个单独并且完整的功能。

3.易于实现性

如果系统架构的实现非常困难,甚至超出团队现有的技术能力,那么,团队不得不花很多的精力用于架构的开发,这对于整个项目来说,可能会得不偿失。简单就是美。

4.可升级和可扩充性

一个系统框架,受设计时技术条件的限制,或者设计者本人对系统认识的局限,可能不会考虑到今后所有的变化。但是,系统必须为将来可能的变化做好准备,能够在今后,在目前已有的基础上进行演进,但不会影响原有的应用。接口技术,是在这个方面普遍应用的技巧。

5.是否有利于团队合作开发

一个好的系统架构,不仅仅只是从技术的角度来看,而且,它还应该适用于团队开发模型,可以方便一个开发团队中各个不同角色的互相协作。例如,将Web页面和业务逻辑组件分开,可是使页面设计人员和程序员的工作分开来同步进行而不会互相影响。

6.性能

性能对于软件系统来说是很重要的,但是,有的时候,为了能让系统得到更大的灵活性,可能不得不在性能和其他方面取得平衡。另外一个方面,由于硬件技术的飞速发展和价格的下降,性能的问题往往可以通过使用使用更好的硬件来获得提升。4.2.2设计的内容应用服务层,通常也被称为业务逻辑层,因为这一层,是应用软件系统业务逻辑处理集中的部分。然而,我将这一层称为应用服务层,而不称业务逻辑层,因为,这一层需要处理的不仅仅是业务逻辑,还包含了其他方面的内容。

从完整的角度来说,应用服务层需要处理以下内容:

1.数据的表示方式

数据,是软件处理的对象。从某种程度上来说,"软件,就是数据结构加算法"的说法,是有一定意义的。在面向对象的系统中,数据是用类来表示的,代表了现实世界实体对象在软件系统中的抽象。考虑所谓的MVC模式,这个部分的类属于M--实体类的范畴。由于应用软件通常会使用数据库,数据库中的数据,可以看成是对象的持久化保存。由于数据库一般是关系型的,因此,这个部分,还需要考虑类〔对象同关系型数据的映射,即通常所说的O-RMAP问题。

2.数据的存取方式

如同上述所说,软件系统处理的实体对象数据需要持久化保存数据库中,因此,我们必须处理系统同数据库的交互,以及数据的存取和转换方式的问题。

3.业务逻辑的组织方式

在面向对象的系统中,业务逻辑表现为对象之间的交互。有了上述的实体对象,以及对象的保存策略,就可以将这些对象组合起来,编写我们的业务逻辑处理程序。在业务逻辑的处理中,必须保证处理的正确性和完整性,这将会涉及到事务处理。通常,我们也会把业务逻辑封装成组件的形式,以得到最大的可重用性。

4.业务服务的提供方式

在我们完成系统的功能后,如何向客户提供服务,是我们需要考虑的问题。这里的客户,不仅仅是指软件的使用者,也包括调用的界面、其他程序等。例如,在一个基于Web的ASP.Net或JSP系统中,业务逻辑功能的客户便是这些ASP.Net页面或JSP页面。业务逻辑组件应该通过什么方式,直接的,或间接的,向这些客户提供服务,是这一层需要完成的任务。

5.层的部署和层间交互

对于一个多层的应用软件系统来说,尤其是大型的应用软件系统,通常需要把不同的部分部署在不同的逻辑或物理设备上。特别是一些基于Web的应用软件系统,其部署工作将涉及到Web服务器、组件服务器、数据库服务器等不同的服务设备。在进行应用软件架构的设计的时候,必须考虑各种不同的部署方案。

综上所述,一个完整的基于Web的应用软件系统,其架构可以用下图〔图来表示〔Websharp推荐的应用软件系统架构:图

对于以上各个方面来说,每个问题都可以有很多种策略和方案,但是,在一个系统中,应该尽可能的统一这些策略和方案。也就是说,在一个系统,或者一个项目中,应该统一每个解决每个问题所采用的方法。软件的开发方法是灵活的,可以用不同的方法解决相同的问题,这会诱使开发人员采用他们认为能够表现自己的方法,但是,从整个系统来看,这将会是灾难性的。我们应该尽可能统一,就是,采用统一的数据表示方式、统一的数据存取方式、统一的业务逻辑处理方式等。4.2.3数据实体的表示应用软件系统,从本质上来说,是计算机对现实世界的模拟。现实世界中的实体对象,在软件系统中,表现为需要处理的数据。在面向对象的系统中,这是通过"类"和"对象"来表示的。

参考著名的"MVC"模式,类可以分成实体类〔M、控制类〔C、和边界类〔V,分别代表了实体对象、控制和界面显示。系统中需要处理的数据,在面向对象的系统中,属于实体类部分。1.数组表示的方法

例如,上面的例子中当一张入库单包含多条入库单明细的时候采用的方法。为了灵活性,也可以使用容器来,如Java中的Vector或C#的ArrayList<C#>。只是,在处理对象的时候,需要一个类型转换的操作。这个问题,在支持泛型的语言中不会存在,如使用C++的标准库的容器类。

2.EJB的方法

在J2EE体系中,对实体对象的处理的典型方法是EntityBean。J2EE中使用EntityBean来表示数据,以及封装数据的持久化储存〔同数据库的交互。由于EntityBean比较消耗资源,而且采用的是远程调用的方式来访问,因此,在需要传递大量数据,或者在不同的层次之间传递数据的时候,往往还会采用一些诸如"值对象"<ValueObject>的设计模式来提升性能。关于J2EE中的设计模式的更多内容,读者可以参考《J2EE核心模式》一书。5网上购物系统各模块的设计及实现的相关代码5.1浏览商品图5.1查询商品名称查询商品功能描述在首页根据输入的商品名称、类别进行查询,并显示该商品的列表。如果只是输入类别,那么显示该类所有商品列表。如果只是输入商品名称,那么现实该名称所有商品列表。优先级5输入商品名称、类别操作序列输入商品名称和选择商品类别——>执行查询——>现实查询结果。如不存在则显示商品不存在。输出所查询的商品列表。或者提示该商品不存在面向对象游客、登陆用户补充说明表5.1商品评论名称商品评论功能描述在商品详细信息的页面中可以为该商品写评论。先级5输入评论内容,以及评论人的名称操作序列评论内容,以及名称后-->点击提交按钮。输出评论更新后的该页面面向对象游客、注册用户补充说明表5.25.2购物车管理图名称添加商品到购物车功能描述将该商品放入购物车里优先级5输入点击商品的放入购物车连接操作序列点击商品的放入购物车连接输出返回当前页,并在左边购物车栏显示面向对象游客、用户补充说明表名称删除购物车中的商品

温馨提示

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

评论

0/150

提交评论