网上书店说明书正文.doc_第1页
网上书店说明书正文.doc_第2页
网上书店说明书正文.doc_第3页
网上书店说明书正文.doc_第4页
网上书店说明书正文.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1 引言随着网络在中国的广泛普及,越来越多的用户逐渐习惯于网上购物,习惯于鼠标点击下订单,送货上门的快捷便利的购物方式。传统书店的购书观念正在被网上书店这一方便快捷的购书方式所冲击。网上书店在国际互联网上可以实现的商务功能已经越来越多样化,从最开始的信息发布功能,到现在的在线图书展示功能、在线洽谈业务功能、在线交易功能、在线采购功能、在线客户服务功能、在线网站管理功能等等,几乎传统书店所提供的功能都可以在互联网上进行电子化的高效运作,而借助网络的跨地域特点,更是将传统书店的地域限制加以突破,全国各地的读者都可以通过网络在同一个网上书店购书,从而大大增加了客户的数量1。国外的Web商务系统应用起步较早,所以应用的领域比较广,网络销售已经在人们日常消费中占到一定比例,Web商务系统也比较成熟。人们可以以网络这个媒体,足不出户就可以搜索、查询到自己需要的信息、购买自己需要的书籍。网上书店已经成为互联网时代购书者的最佳选择,必将获得巨大的成功。1.1 设计的目的和意义网上书店为人们提供了更广阔的购书环境。现在已经有了很多的网上购物软件,它大大地减少了投入的成本而且也很方便。首先,对于店主来说它无需我们花费资本去寻找店面、装修和雇佣服务员,大大节约了资本的投入,而且网上书店也不需要人一整天都看店面,只需要我们经常去看看订单和顾客沟通就可以了,为店主节约了大量的时间。其次,对于顾客来说更加方便了,足不出户,只要轻轻鼠标一点就可以轻轻松松浏览很多的书籍,而且可以浏览很多店面,更可以跨区域、跨省市,还可以跨国籍。了解最新的消息、最新的书籍信息。网上书店不但能减少店主资本的投入,而且在购书的过程为顾客提供一个良好的购书平台。网上书店给人们提供了更广阔的市场。网络使我们的空间变得很小,人们可以在短时间内浏览世界各地的商家的书籍并且购买;同样一个店主也可以面对全球的客户。不管是顾客还是店主都拥有一个广阔的市场。网上书店给人们提供了更快速的流通和更低廉的价格。网上书店缩短了顾客与店主的距离,顾客不需要亲自跑到店主的实际商店中,只要鼠标点击一下,就可以进到店主的店里浏览书籍、购买书籍,这种方式可以使书更快速的流通;在网上开店不需要太多的资本投入,而且网上书店减少了书籍流通的中间环节,节省了大量的开支,从而也大大降低了书籍流通和交易的成本,所以一般都比实际的书店价格低,人们可以在网上书店购买到更加物美价廉的书籍。网上书店更符合人们追求个性化的购书过程。人们越来越追求时尚、讲究个性,注重购物的环境,网上书店不受地域的限制更不受时间的限制,人们可以随时随地浏览世界各地的书籍,满足了人们追求个性化的要求。以上介绍了一些网上书店的优势。网上书店从方方面面给顾客和店主带来了很多好处。在现在快节奏的生活方式下,网上书店给人们节省了购物的时间,使得购物更加快速更加便捷。随着IT技术的不断发展,网上书店会越来越人性化,越来越满足人们对购书的各种需求,网上书店也会有一个很好的发展前景。1.2 国内发展情况据最新统计,中国大陆已经注册的网上书店大约有100多家,有网站的有50多家,但已经投入运营能够买到书的只有十来家。最近据一家媒体的调查,能够买到书且服务到位的也只有大洋网、旌旗席殊等几家。 很多人看到了书这种书籍网上销售的诸多好处:方便购买、金额小、风险小、用户容易决定;讯息的完整性以及很少出现质量问题和退货现象等。尽管全球最大的网上书城亚马逊股票惨跌,尽管各家书店都承认目前的亏本经营状况,但这并未阻挡投资者对网上书店前景的期待。一方面,从外部环境因素的变化趋势来看,由于中国物流市场已经对外开放, 支撑中国网上书店的物流产业正在蓬勃发展,一些国际物流公司如和 等已经进入了中国市场,而中国本土物流公司也将在竞争中得到优化;中国 人口基数大,且互联网用户增长快,网上书店拥有众多的潜在客户;中国银行业也 在积极提高网上服务能力以迎接来自国外银行的竞争。所有这些都为中国网上书店 的发展带来了机会。 另一方面,从内在潜质来看,中国网上书店能够在借鉴亚马逊模式的同时进行 创新,利用中国特有的优势来克服不利的外部环境因素,例如采用“自行车送货”和 “货到付款”就是中国网上书店的成功创新。随着外部环境的逐步优化,又有亚马逊这样的网上书店先行者的经验嫁接,中国网上书店发展前景看好。 消费者对消费要求的日益提高,使得网上书店必须向着专业化迈进,通过提供 专业的产品和服务,区分市场。以卓越网为例,日前针对不同的消费者和消费需求,开通了计算机、外语、文学和艺术四个专业书店,这不仅体现了卓越网“最以 客户为中心”的经验理念,相信也是中国网上书店未来发展的趋势。 尽管网络版权、阅读习惯仍是制约未来网络出版、网上书店发展的障碍,但网 络环境给图书出版业带来深刻的革命,已成大势所趋。网上书店和传统店铺都在继 续争取图书发行新的利润空间。目前的情况是,图书发行业对网络的利用并不充 分,只刚刚涉足电子商务和网站建设,对网络的其他产品,以及网络及时、一对 一、跨时间、跨空间等特性,并没有充分加以利用,可以预计,随着网络进一步融 入人们的生活,以技术、服务为品牌支撑的网上书店将成为市场的宠儿和业态创新的引领者。1.3 主要工作网上书店系统应该是实现网上选书、购书、产生订单等功能的系统。因此先要设计书籍的录入和删除;书籍的检索(按各种关键字检索);书籍的浏览等功能。继而用Oracle 作为数据库平台,建立数据库和设计应用程序。使得网上书店系统后台操作能够实现数据库表的浏览,记录的添加、删除和修改,实现了多条件查询和模糊查询,并能灵活的实现对不可更新查询结果集的更新操作。网上书店系统特点就是利用Browser/Server(B/S)结构,实现图书的在线查找,销售,以及图书的在线管理等功能。主要使用spring、struts、hibernate技术。前台输出采用jsp并结合struts标签,由struts框架中的MappingDispatch-Action控制整个流程,spring的IOC(控制反转)对逻辑层之间的数据进行转发,数据持久化操作采用hibernate框架完成2,3。后台数据库为Oracle,应用服务器采用Tomcat6.0,并安装Jave运行平台。各个JSP文件主要定义了信息的具体显示形式、表单、文本框还是标签等,并向Servlet传递用户请求信息4,5。Struts提供的ActionServlet充当控制器的角色,Model层Action类封装了网上书店的所有业务逻辑;此外还有一些各功能公用的Bean,如dao包中封装了整个系统通用的对数据库的操作,util包中封装了编码转化、监听等通用操作。并且采用MVC设计模式。MVC模式是”Model-View-Controller”的缩写,中文翻译为模式-视图-控制器。MVC应用程序总是由这三个部分组成:Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。本软件具有跨平台移植性的特点,可以运行再windows操作系统的环境下,也可以运行在linux和unix系统下,以myeclipse为开发工具,用到了oracle提供的小型数据库xe,运行在tomcat服务器上,通过firefox浏览器或者IE浏览器进行对数据的访问。基于浏览器的访问,体现了瘦客户端的理想需求,用户不需要安装任何软件就可以使用,真正为客户端提供了便捷的购书方式及环境。2 核心技术本系统采用的技术有JSP、Struts、Hibernate以及Spring等开源的框架技术。采用的设计模式为MVC设计模式。2.1 JSP技术简介JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作6,7。JSP规范是Web服务器、应用服务器、交易系统、以及开发工具供应商间广泛合作的结果。在传统的网页HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页 (*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。一次写入,之后,可以运行在任何具有符合Java语法结构的环境13。2.2 Struts技术简介Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架8。2.3 Hibernate技术简介Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任9。2.4 Spring技术简介Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架10,11。Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。用到模块的功能如下: 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring AOP: 通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现13。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。2.5 MVC设计模式简介MVC模式是Model-View-Controller的缩写,中文翻译为模式-视图-控制器。MVC应用程序总是由这三个部分组成。视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为 XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处 理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理13。业务流程的处理交予模型(Model)处理。模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务模型的设计可以说是MVC最主要的核心。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据14。抽象与具体不能隔得太远,也不能太近。 控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以 完成什么样的用户请求。控制层并不做任何的数据处理15。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个 模型。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器 改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更 新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能。 3 需求分析3.1 功能需求3.1.1 核心业务网上书店的核心业务主要指用户浏览书籍、管理自己书包、购买书籍等主要的业务流程,本系统为用户提供的核心业务如下: 用户可以查看书籍。当用户登录系统时,默认首先给用户展现的是所有书籍的相关信息,包括书籍的编号、名称、价格、简介、类型,如果对书感兴趣,可以点击后边的超链接暂时存入到书包里,然后返回当前页面继续浏览书籍。也可以按类型查看书籍,只要用户点击相应的书籍类型就可以找到对应类型的全部书籍信息。显示给用户看,也可以点击后边对应的超链接把所看中的书籍存入书包。用户也可以通过在文本框中输入相似的书名来查看所需要的书籍。用户可以管理自己的书包。在用户打开网页时不管登陆还是没有登陆都拥有一个属于自己的书包,用户也可以管理自己的书包。当用户在浏览书籍时,如果有看中的书籍,可以把选中的书放到书包中;如果用户想购买同样的书籍多本,可以在查看书包时修改要购买的书的购买数量;每本不同的书构成一个订单项,用以记录某本书的购买详情,如果用户后悔把某本书放入书包中,也可以通过点击超链接从书包中删除不想要的书的订单项。不仅如此,用户还可以查看书包所有书的预总消费额。用户购买书籍。如果用户登录,在登陆的情况下还可以生成订单。如果书包为空或者用户未登录都不允许生成订单。核心业务需求如图3.1所示。图3.1 核心业务需求图3.1.2 后台管理个人管理。管理员可以通过输入用户名和密码进行登录操作,在登录的情况下,管理员如果想退出系统,可以通过点击退出来达到退出系统的目的。订单的统一管理。管理员在登录的情况下,可以查看所有用户下的订单,如果想查看某一订单的详细信息,可以点击订单标号来查看订单的详细信息,以便可以给用户发货;管理员在发货以后,如果用户已经对所生成的订单付款,管理员还可以通过手动修改订单的状态,改为已付款;如果管理员觉得某条订单没必要存在了,管理员还具有删除订单的功能。书籍的管理。管理员在登陆的情况下,默认进入的是书籍的浏览页面,管理员可以查看所有的书籍,如果觉得哪条书籍的信息有不合适的地方,也可以通过点击修改书籍来修改书籍的详细信息;管理员如果想删除某个书籍,假如没有订单项与本书籍关联,则管理员还可以删除相应的书籍,如果有订单项与本书籍关联,则不允许管理员删除书籍;如果有新的书籍要卖,管理员还可以增加新的书籍。后台管理需求如图3.2所示。图3.2 后台管理需求图3.1.3 用户自服务用户自服务分为两块,一个是对于非注册用户来说,另一个是对于注册用户来说。非注册用户的自服务功能是在系统中进行注册。对于注册用户来说,有两个大的功能模块,用户管理和订单管理。用户管理包括登录、查看信息、注销即退出系统。用户可以通过输入用户名和密码进行登录;在用户登陆的情况下,如果想查看自己的信息,可以通过点击相应的链接来查看自己的详细信息;如果用户想要退出系统,则用户可以点击来退出系统。订单管理,即用户可以查看自己以前下的所有订单。用户自服务功能需求如图3.3所示。图3.3 用户自服务需求图3.2 性能需求首先,系统可以支持多个用户同时在线浏览书籍,购买书籍。当一个用户在一台机器上登录时,别的用户也可以在别的机器上登录浏览书籍、购买书籍。每个用户可以管理一个只属于自己的书包,所有用户都应该拥有属于自己的一个书包,不能与别人公用一个书包。其次,用户不能多次登录。统一用户如果在一台机器上登录,在没有退出系统的情况先,在别的机器上就不能登录,保证了用户的登录安全。如果是不同用户则允许登录。最后,系统不要求用户下载任何软件进行安装,给用户减轻了负担,真正实现瘦客户端的需求。用户只需要一个浏览器就可以使用本系统,简单方便。4 总体设计4.1 功能模块结构设计通过需求分析,对本系统进行功能模块的划分,分为三个大的模块:核心业务模块、后台管理模块、用户自服务模块。4.1.1 核心业务模块核心业务模块提供了三个大的功能:浏览书籍、管理书包、生成订单。浏览书籍里包括三个浏览书籍的方法:根据类型浏览书籍、根据书名浏览书籍、默认浏览全部书籍,也可以查看书籍的详细信息。管理书包的功能有为书包添加书籍、从书包中删除相应的订单项、查看书包、清空书包。当成为已注册用户时,用户可以生成订单。核心业务如图4.1所示。核心业务模块浏览书籍书包管理按类型模糊查询查看全部添加书籍修改数量删除订单项查看书包清空书包注册用户生成订单图4.1 用户功能模块图4.1.2 后台管理模块管理员模块未管理员提供了三大基本功能:书籍管理、个人管理和订单管理。书籍管理包括查看所有书籍、修改书籍信息、增加新的书籍、删除与订单项无关的书籍。个人管理包括登录系统和退出系统两项功能。订单管理功能包括查询所有订单及订单的详细信息、修改订单的状态、删除订单功能。后台管理功能模块如图4.2所示。后台管理模块书籍管理订单管理个人管理添加书籍删除订单修改订单查看订单登录系统退出系统删除书籍修改书籍图4.2 管理员功能模块图4.1.3 用户自服务模块用户自服务模块分为两块,一个是对于非注册用户来说,另一个是对于注册用户来说。非注册用户的自服务功能是在系统中进行注册。对于注册用户来说,有两个大的功能模块,个人管理和订单管理。个人管理包括登录、查看信息、注销即退出系统。订单管理,主要指用户可以查看自己以前下的所有订单。用户自服务功能模块图如图4.3所示。用户自服务模块未注册用户已注册用户在系统中注册订单管理个人管理查看订单登录查看信息退出图4.3 用户自服务功能模块图4.2 软件结构设计本系统采用MVC设计模式,分为View视图层、Model模型层和Controller控制层。View层主要用Jsp实现,主要分为两个包view包和img包。View包存放Jsp页面,img包存放所用到的图片。Controller层和Model层使用java语言实现。Controller层包括conf包、action包、form包和res包。conf包用于存放相关的配置文件包括实体与表之间的映射文件、应用的配置文件还有struts的配置文件。action包用于存放相应的action的java类文件,用于响应servlet接收回来的客户端的响应并调用biz层的业务方法,把响应的结果返回给客户端。form包用于存放form表单提交数据时相对应的实体类,能够把零散的数据封装成对象,以便操作。res包用于存放Jsp页面中不变的字符,以便可以实现国际化的需求。Model层从纵向角度来划分主要分为两层biz、dao层。biz层用于响应客户端发送的请求并做出相应的判断,并且调用dao层的方法对数据库进行操作。Dao层主要负责对数据库进行增、删、改、查的操作。Model层从横向角度还可以划分为biz包、dao包、entity包、util包、sql包、test包、servlet包、和web包。biz包用于存放相关的业务层的类,主要工作就是对业务进行操作。dao包用于存放对数据库进行操作的类,保证了业务层不会对数据进行直接操作,体现了各司其职、面向对象的编程思想。entity包用于存放相关的实体类,主要封装离散的业务数据。util包用于存放自己写的工具类,例如过滤器。sql包用于存放相关的创建表的sql语句的文件。test包用于存放对model层进行单独测试时所用到的测试类,真正做到了模块开发,利于将来寻找异常的出处。servlet包用于存放servlet类,用于接收客户的请求,并对请求做出响应。Web包用于存放关于web应用的一些类,例如监听器。4.3 相关实体及数据库的设计4.3.1 实体的设计 本系统共建有8个实体,分别为User(用户类)、Address(地址类)、Book(书类)、Order(订单类)、Item(订单项类)、Admin(管理员类)、Page(分页类)、Type(类型类)。主要的实体关系图如图4.4和图4.5所示。图4.4 实体关系图 1图4.5 实体关系图24.3.2 表的设计根据相关的实体类的定义,用到的表共有9张表。分别为bo_user、bo_address、bo_user_phones、bo_book、bo_book_contents、bo_type、bo_order、bo_item、bo_admin。bo_user表主要存放用户的相关信息,定义的列有:id(主键)、username(用户名)、password(密码)、birth(生日)、email、version。如表4.1所示。表 4.1 bo_user表列名类型约束备注IDintegerPrimary key主键,用于标识用户USERNAMEVarchar2(20)Not null存放用户名PASSWORDVarchar2(20)Not null存放密码BIRTHDate用于存放用户的生日EMAILVarchar2(30)存放用户的邮箱地址VERSIONinteger给数据加乐观锁bo_book表用于存放书籍的信息,定义的列有id(主键)、name(书名)、auth(作者)、publishHousing(出版社)、publishDate(出版日期)、publishNum(版次)、wordNum(字数)、pageNum(页数)、description(简介)、img(图片地址信息)、price(价格)、num(数量)、t_id(外键,指向bo_type表的主键)、version(版本号,用于对数据加乐观锁)。主要的字段如表4.4所示。表4.4 bo_book表列名类型约束备注IDIntegerPrimary key主键,用于标识书籍NAMEVarchar2(50)Not null书名AUTHVarchar2(20)Not null作者PUBLISHHOUSINGVarchar2(30)Not null出版社DESCRIPTIONVarchar2(10000)简介IMGVarchar2(50)图片地址信息PRICENumber(10,2)价格T_IDIntegerForeign key外键,用于表明类型,指向类型表的主键bo_order表用于存放用户下的订单,定义的列为id(主键,用于标识订单)、status(订单状态)、cost(总消费额)、time(下订单的时间)、u_id(外键,指向表bo_user的主键)、version(版本号,用于给数据加乐观锁)。如表4.7所示。表4.7 bo_order表列名类型约束备注IDIntegerPrimary key主键,用于标识订单STATUSVarchar2(20)Not null订单状态COSTNumber(10,2)Not null总消费额TIMEDate下订单的时间U_IDIntegerForeign key外键,指向bo_user表的主键VERSIONInteger给数据加乐观锁bo_admin表用于存放管理员的相关信息,定义的列为id(主键,用于标识管理员)、name(管理员名称)、password(管理员密码)、version(版本号,用于给数据加乐观锁)。如表4.9所示。表4.9 bo_admin表列名类型约束备注IDIntegerPrimary key主键,标识管理员NAMEVarchar2(20)Not null管理员名称PASSWORDVarchar2(20)Not null管理员密码VERSIONInteger给数据加乐观锁4.3.3 实体和表的对应关系User实体与bo_user、bo_user_phones表对应。Order实体与bo_order表对应。Item实体与bo_item表对应。Address实体与bo_address表对应。Book实体与bo_book、bo_book_contents表对应。Admin实体与bo_admin表对应。Type实体与bo_type表对应。5 详细设计本系统采用MVC设计模式,将系统分为三层:view层、model层和controller层。View层是视图层,是为了人性化得展现给用户进行操作,是用户和系统联系的接口。视图层主要由Jsp技术编码实现。Controller层是控制层,是为了接收用户向服务器发出的请求并对请求做出响应的返回给用户Jsp页面,主要由Action的子类实现。Model层是模型层,也是业务处理层,主要负责对控制层发送的请求做出响应。控制层由纯Java代码实现。5.1 view层设计View层主要由各种标签构成,主要用到的标签如下::表单提交数据时用到的标签,当客户向服务器传送数据时,表单是其中的一种传送数据的方法。:form标签的子标签,由type属性指定input是什么类型。如果type属性是text,则为文本输入标签;如果type属性是file,则为文件选择标签,负责将一个文件上传到服务器;如果type属性是submit,则为提交数据的按钮,这时表单会将数据按action指定的路径、post指定的方法将数据提交给服务器;如果type的属性是reset,则会将表单中已填入的数据清空。:画表格时用到的标签,可以通过指定width属性指定表格在页面中的宽度,可以通过指定height属性,指定表格的高度;通过指定bgcolor属性指定表格的背景颜色。:table标签的子标签,用于指定table的行。:tr标签的子标签,用于指定table的列。:超链接标签,由href指定链接地址,标签体的内容会被作为超链接体。:循环迭代指令,用于遍历一个集合,由id指定循环变量,由collection指定集合。$:EL表达式,用于把表达式里指定的变量从作用域中把值取出来,然后显示到页面上来。:用于判断,由test属性指定boolean类型的值。5.2 controller 层设计控制层的实现是自己定义一个类,继承MappingDispatchAction父类。自己定义方法,但方法的格式必需定义为: public ActionForward 方法名(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)的格式。具体实现如下:本系统主要定义了四个控制器,分别为:BookAction、UserAction、BagAction、AdminAction。BookAction主要负责书的相关操作,定义的方法如下:getAllBooks、getBooksByType、getBookById、getBookByName。getAllBooks方法,在用户登录系统时,会默认向服务器发送获得所有书的请求,当servlet接收到这个请求,根据struts-config的配置文件找到BookAction时,再根据param指定额方法名在BookOnline.xml里找到对应的名称,由服务器就会执行这个方法,再由这个方法通过biz对象调用biz层的方法,biz再调用dao层的方法,对数据库进行访问,把查询结果一路返回给这个方法,再由request对象调用setAttribute方法把返回结果放入作用域中,再根据ActionForward指定的路径返回给用户;getBooksByType方法,根据书的类型获得书的信息;getBookById方法,根据id查找书籍;getBookByName方法,根据书名找出相应的书的信息。UserAction主要负责用户的操作,定义的方法有:login、checkin、myInfo、checkOut。Login方法是专门给用户登录服务的,当用户输入用户名和密码并点击登录按钮时,通过服务器的接收和配置文件就会执行这个方法,如果登录有错,就会返回到错误页面,如果登录成功,就会将登录的用户保存到context作用域中,并且将页面转向成功页面;checkin方法时负责给用户注册服务的;MyIfo是用户查看自己信息详情时执行的方法;checkOut方法用于用户退出系统时,该方法会将保存在context里边的当前用户的登录信息清空,并返回到首页。BagAction主要负责对书包的操作。定义的方法有:addItem、modifyItemNum、deleteItemById、clear、getTotalPrice、getItems、buy。addItem方法的作用时给书包添加一个订单项,记录用户购买某本书的详情,存放到session作用域里;modifyItemNum方法负责对书籍数量进行修改;deleteItemById方法,用户可以通过这个方法来把某本书从书包中删除;clear方法负责清空书包;getTotalPrice方法的作用是获得当前书包中所有书的预总消费金额;getItems方法,用户查看书包时执行的方法;buy购买方法,当用户决定购买时,会执行此方法,并把书包中的内容转换到订单里,生成订单对象存到数据库里,并且将订单的详情展现给用户查看。AdminAction控制器负责管理员的相关操作,定义的方法有:login、checkout、addBook、changeBook、destroyBook、getAllOrders、ChangeOrder、destroyOrder、getBook、getAll、order。Login方法是专门为管理员登录服务的;addBook方法,当管理员要往数据库里添加新书时会执行此方法,把表单提交的数据封装成Book类对象,通过biz层和dao层保存到数据库中,返回到成功时指定的页面;changeBook方法是用于修改书的信息用的;destroyBook方法,用于管理员想删除某本书籍的记录时执行的方法;getAllOrders方法,查看所有订单的信息;changeOrder方法的作用是对某个订单进行修改,修改状态;destroyOrder方法,定义了从数据库中删除一条订单记录的功能;getBook方法,是根据书的编号执行查询书的方法;getAll方法是负责把所有的书籍查出来显示给管理员看,客户端发送请求,服务器接收到请求执行该方法,然后从数据库中把数据以分页的方式查询出来,通过request.setAttribute()的方法传给客户端,通过迭代遍历把所有查询的该页的数据集显示给管理员。5.3 model层的详细设计Model层分为两层:biz层和dao层。biz层为业务处理层,主要负责业务的处理。dao层为数据处理层,主要负责对数据库的增、删、改、查操作。biz层单独作为一个包,包里定义了接口和实现类。接口有AdminBiz、BookBiz、UserBiz、TypeBiz。这四个接口的方法与cotroller层所定义的方法一一对应,主要是为controller层提供业务服务;此外在biz包里还定义了一个Bag类,这个类定义的对象为暂态对象,没有实际的表与之对应,主要的功能是为登录系统的用户提供一个bag对象,用以暂时存放想要买的书,当用户把网页关掉时,用户所拥有的bag对象将会一起消失。biz层里还有一个包impl包,用以存放各个接口的实现类,方法与接口定义的方法完全相同。dao层也作为一个包而存在,包里也定义了接口和实现类。定义的接口有:AdminDao、AddressDao、BookDao、ItemDao、OrderDao、TypeDao、UserDao,这些接口与所定义的实体一一对应,定义了对实体的各种的查询的操作方法。此外,还定义了一个GenericDao接口和一个dao的通用类GenericHibernateDao,GenericDao定义了增、删、改的方法和根据id查询的方法,该接口使用了范型,在使用该接口时只要把类型给出,则就会自动调用该接口定义的方法,进一步简化了dao层的开发,达到代码的重复利用。GenericHibernateDao类则定义了通用的查询方法和GenericDao定义的方法,查询方法有queryForObject(final String select, final Object values)、queryForList(final String select, final Object values, final Page page)、queryForList(final String selectCount, final String select, final Object values, final Page page)。当确定查询的对象只有一个时,则调用queryForObject方法;当查询的对象根据分页为多个时则调用queryForList的重载方法,只有三个参数的queryForList方法是专门为查询记录的条数服务的,有四个参数的queryForList方法会去调用重载的方法,把记录的条数查出来,然后再执行自己的方法,把数据查询出来,返回给调用它的地方。与实体对应的那些接口都继承了GenericDao接口,同时把定义的通用方法也继承了,在实体类接口中就不需要再声明这些一样的方法,简化了软件的开发过程。同时还有一个包用以存放实现类,所有包里定义的实现类都实现了实体类接口,同时继承了GenericHibernateDao类,对数据库的各种操作只要用template对象调用GenericDao和GenericHibernateDao定义的方法就可以了,真正做到代码的重复利用,简化了代码的开发过程。5.4 整体流程的设计对于这个系统的每个来自客户端的请求,所经过的流程大体类似。当客户端向服务器发送一个请求时,首先经过字符过滤器CharFilter的过滤把编码方式改为gbk编码;如果是以.htm结尾的请求,则找到Struts框架为我们提供的ActionServl

温馨提示

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

评论

0/150

提交评论