毕业论文
SHANGHAITUNIVERSITY
GRADUATIONPROJECT
(THESIS)
网上书店系统
OnlineBookStoreSystem
学院高等技术学院
专业计算机技术与应用
学号03321018
姓名胡家盛
导师江玮
完成日期2006年4月
目录
中英文摘 要
第一章JA的网络功能与编程JA语言简介
JA语言在网络上的应用
1-3JSP的基础——Servlet技术
第二章Struts概述
2-1Struts的由来和发展
2-1-1MVC简介
2-2Struts优缺点
3-3Struts的工作流程
第三章网上书店详细设计
3-1需求分析
3-2总体设计
3-3功能设计
3-4数据库设计与实现
3-4-1数据库的需求分析
3-4-2创建数据表的脚本
3-5网上书店基本流程
3-6网上书店各页面功能
3-7业务逻辑层各bean功能
3-8控制处理层
总结
手这个项目时,这种优势体现得更加明显.缺点:Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒.Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度.Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件.虽然它现在还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式ActionServlet是一个FrontController,它是一个标准的Servlet,它将request转发给RequestProcessor来处理,ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息RequestProcessor根据提交过来的url,如*.do,从ActionMapping中得到相应的ActionForn和Action.然后将request的参数对应到ActionForm中,进行form验证.如果验证通过则调用Action的execute()方法来执行Action,最终返回ActionFoward.ActionFoward是对mapping中一个foward的包装,对应于一个urlActionForm使用了ViewHelper模式,是对HTML中form的一个封装.其中包含有validate方法,用于验证form数据的有效性.ActionForm是一个符合JaBean规范的类,所有的属性都应满足get和set对应.对于一些复杂的系统,还可以采用DynaActionForm来构造动态的Form,即通过预制参数来生成Form.这样可以更灵活的扩展程序.ActionErrors是对错误信息的包装,一旦在执行action或者form.validate中出现异常,即可产生一个ActionError并最终加入到ActionErrors.在Form验证的过程中,如果有Error发生,则会将页面重新导向至输入页,并提示错误.Action是用于执行业务逻辑的RequsestHandler.每个Action都只建立一个instance.Action不是线程安全的,所以不应该在Action中访问特定资源.一般来说,应改使用BusinessDelegate模式来对Businesstier进行访问以解除耦合.Struts提供了多种Action供选择使用.普通的Action只能通过调用execute执行一项任务,而DispatchAction可以根据配置参数执行,而不是仅进入execute()函数,这样可以执行多种任务.如insert,update等.LookupDispatchAction可以根据提交表单按钮的名称来执行函数.有关论文范文主题研究: | 关于数据库的论文范文文献 | 大学生适用: | 函授毕业论文、高校大学论文 |
---|---|---|---|
相关参考文献下载数量: | 66 | 写作解决问题: | 如何写 |
毕业论文开题报告: | 论文提纲、论文题目 | 职称论文适用: | 技师论文、职称评中级 |
所属大学生专业类别: | 如何写 | 论文题目推荐度: | 优秀选题 |
第三章网上书店详细设计
3-1需求分析
网上书店系统主要是实现网上选书,购书,产生订单等功能的系统.一个典型的网上商城一般都需要实现商品信息的动态提示,购物车管理,客户信息注册登录管理,订单处理等模块.
根据网上书店的基本需求,本系统需要完成的具体任务如下:
书图查询:当客户进入网上书店时,应该在主页面中分类显示最新的书目信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者信息快速查询所需书目信息的功能.
购物车管理:当客户选择购写某图书产品时,应该能够将对应图书信息,如:,数量记录到对应的购物车中,并允许客户返回书目查询页面,选择其他商品,并添加到购物车中,当对应的购物订单生成后,应该能够自动清除以生成订单的购物车中的信息.
订单处理:对应客户购写图书商品信息的需求,在确定了所购图书商品的,数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的,送货的处理.
会员注册:为了能够实现图书商品的购写,需要管理客户相关的,送货地点等相关的信息.
3-2总体设计
系统组成
下表中给出了构成网上书店系统的各个组件,通过下表,可以从宏观上了解各个组件的功能.
用户表示层(视图)控制处理层(控制器)业务逻辑层(模型)bookMain.jspActionFormActionDBBookShow.jspLoginFormFirstActionConstantsBookShopCart.jspUserFormBookDetailActionBookOrderAddress.jspBookIdFormBookSearchActionBookCatOrderConfirm.jspBookCatIdFormLoginActionOrderUserLogin.jspPageIdFormBookBuyActionShopCartUserRegister.jspBookShopCartFromAddrConfirmActionUserOrderHistory.jspBookSearchFormClearShopCartActionWrong.jspDeliveryFormOrderDelActionOrderIdFormOrderHistoryActionPageCtrlActionRegistActionUpdateShopCartAction
3-3功能设计
1.图书信息管理
该模块实现图书书目信息的分类显示,也是提供图书信息依据书名及作者信息快速搜索的功能.此外,在用户选择了对应书目信息后,还可以显示出有关该图书的详细信息,以便于客户了解所购商品.
2.购物车管理
用于维护每一个进入网上书店的客户对应的购物车.即将客户所选购的图书商品信息记录到对应的购物车中,以便于到收银台进行结账处理.
3.会员注册
实现网上书店客户信息的注册,及身份验证.由于目前网上商城普遍采用的方式为或者邮寄,因此需要收集与客户相关的,通信地址等信息.
4.订单处理
根据客户购物车中的信息,以及客户所选择的送货方式和付款方式,连同客户对应的生成订单,以便于后续进行送货处理.
3-4数据库设计与实现
3-4-1数据库的需求分析
依据网上书店的处理需求,对就数据表的设计及功能如下.
图书基本信息表:存放网上书店所销售图书的基本信息.
图书分类基本信息表:存放网上书店所提供图书分类的信息.
客户基本信息表:存放书店客户的基本信息.
订单信息表:存放与客户相关的订单的基本信息.
订单条目详细信息表:存放订单中详细条目的基本信息.
3-4-2创建数据表的脚本
代码如下:
____________________________________________________________________________
//图书分类基本信息表
DROPTABLEbookcatCASCADECONSTRAINTS,
CREATETABLEbookcat(
idNUMBERPRIMARYKEY,
catnameVARCHAR2(40)NOTNULL
),
//图书基本信息表
DROPTABLEbookCASCADECONSTRAINTS,
CREATETABLEbook(
idNUMBERPRIMARYKEY,
catidNUMBERNOTNULL
REFERENCESbookcat(id)ONDELETECASCADE,
nameVARCHAR2(50)NOTNULL,
priceNUMBERNOTNULL,
salepriceNUMBERNOTNULL,
descriptVARCHAR2(500)NOTNULL,
authorVARCHAR2(50)NOTNULL,
contentsVARCHAR2(2000)NULL,
imageVARCHAR2(50)NULL
),
//客户基本信息表
DROPTABLEstoreuserCASCADECONSTRAINTS,
CREATETABLEstoreuser(
usernameVARCHAR2(20)PRIMARYKEY,
passwordVARCHAR2(20)NOTNULL,
nameVARCHAR2(20)NOTNULL,
telVARCHAR2(20)NOTNULL,
addressVARCHAR2(100)NOTNULL,
VARCHAR2(50)NULL
),
//订单信息表
DROPTABLEordersCASCADECONSTRAINTS,
CREATETABLEorders(
idNUMBERPRIMARYKEY,
usernameVARCHAR2(20)NOTNULL
REFERENCESstoreuser(username)ONDELETECASCADE,
timeDATENOTNULL,
deliveryVARCHAR2(20)NOTNULL,
paymentVARCHAR2(20)NOTNULL
),
//订单条目详细信息表
DROPTABLEorderdetailCASCADECONSTRAINTS,
CREATETABLEorderdetail(
orderidNUMBERNOTNULL
REFERENCESorders(id)ONDELETECASCADE,
bookidNUMBERNOTNULL
REFERENCESbook(id)ONDELETECASCADE,
countNUMBERNOTNULL,
priceNUMBERNOTNULL
),
_____________________________________________________________________3-5网上书店基本流程
网上书店在运行过程中页面的基本流程如下图:
3-6网上书店各页面功能
3-6-1网上书店首页bookMain.jsp详细功能及描述
获取图书分类信息以及图书基本信息集合
循环显示图书分类信息
提交显示指定分类图书信息的请求,同时传递对应图书分类编号
提交书目搜索请求及搜索条件的表单
提交搜索关键字的表单元素
选择搜索条件的表单元素
显示图书记录总数,当前页面编号以及总页数
循环显示对应图书书目信息
显示图书名称,,销售,作者信息
提交显示图书详细信息请求的超链接
提交分页显示请求的超链接,同时提交指定页面编号
在本页面中,当单击选择书目分类时,将提交"bookSearch.dobookCatId等于<,%等于bookCat.getId()%mode等于1"请求,以便于获取对应图书分类的相关信息.当选择了查询依据,并且输入了对应关键字,单击"搜索"按钮时,将提交"bookSearch.do"请求,同时提交查询条件,进行后续书目信息搜索的处理.当在书目列表中单击查看详细信息请求时,将发出"bookDetail.do"请求,同时传递对应图书记录的编号,以获取指定图书更加详细的信息.此外,在单击"首页","上页","下页"超链接后,将分别提交"bookPage.dopageId等于<,%等于0%>,","bookPage.dopageId等于<,%等于schSta.getPageId()-1%>,","bookPage.dopageId等于<,%等于schSta.getPageId()+1%>,"等请求,以实现页面的跳转
3-6-2显示图书详细信息bookShow.jsp页面详细功能及描述
依据图书记录编号获取待显示详细信息的图书类型的对象
分别显示该图书对象的详细信息
显示图书封面图片,名称,详细介绍,,销售
单击"购写"按钮后,将提交放入购物车的请求
显示图书目录
本页面是在控制器响应了网上书店主页提交的查看图书详细信息请求,即"bookDeatial.do"请求后,跳转到的页面.在该页面中将获取到的指定图书详细信息显示出来,同时如果用户单击"购写"按钮,将提交"bookBuy.dobookId等于<,%等于book.getId()%>,"请求,进行后续放入购物车的处理.
3-6-3显示购物车信息bookShopCart.jsp页面详细功能及描述
获取该用户购物车中信息的集合
提交更新购物车请求的表单
循环显示购物车中的每一条购物记录信息
设置购写数量的文本框
显示图书销售
显示图书总价
从购物车中移除购写记录信息
更新订单按钮
提交继续购书请求的超链接
提交清空购物车请求的超链接
提交结算付款请求的超链接
本页面是在用户选择购写某种图书商品后,进入的页面.在该页面中将显示该用户购物车中现有的所有购写需求记录.同时提供更新购物车的操作界面,例如,可以输入购写数量或者选择删除购写记录.单击"更新订单"按钮后,将提交"updateShopCart.do"请求,进行更新购物车信息的处理.此外,也可以单击"继续购书"按钮,提交"bookSearch.do"请求返回网上书店主页面继续购书,或者单击"清空购物车"按钮提交"clearShopCart.do"请求.同时,如果用户确认去收银台,则可以单击"结算付款"按钮跳转到"userLogin.jsp"页面进行用户登录.
3-6-4网上书店客户登录userLogin.jsp页面详细功能及描述
提交用户登录请求,同时提交登录用户信息的表单
提交登录用户用户名及的表单元素
登录按钮
提交新用户注册请求的超链接
本页面是客户在购物车页面单击"结算付款"按钮后跳转过来的页面,在该页面中,用户在表单中输入用户名及,单击"用户登录"按钮后,将提交"login.do"请求,以便于进行后续获取用户相关信息的处理,对于没有用户身份的新客户,可以在本页面中单击"新用户注册"按钮,跳转到"userRegister.jsp"页面进行用户注册.
3-6-5网上书店客户注册userRegister.jsp页面详细功能及描述
提交新用户注册请求,同时提交新用户注册信息的表单
提交注册用户姓名,地址,电子邮件地址,,用户名,以及确认的表单元素
注册按钮
在本页面中注册用户可以在表单中输入对应的注册信息,在单击"注册"按钮后,将提交"regist.do"请求,同时提交新用户的相关注册信息,以便于进行后续新用户注册的处理.
3-6-6选择送货方式及付款方式orderAddress.jsp页面详细功能及描述
获取客户信息
提交选择送货方式及付款方式的表单
显示客户信息,姓名,地址,,送货方式,付款方式
本页面是在用户登录通过后,跳转到的页面,在该页面中首先获取对应用户的客户资料,同时提供送货方式以及付款方式的选择,在用户单击"确认"按钮后,将提交"addrConfirm.do"请求,生成生续完整的订单信息.
3-6-7确认订单信息orderConfirm.jsp页面详细功能及描述
获取购物车信息集合
获取订单信息,客户信息
显示客户姓名,地址,
显示购物车中的信息
显示所购图书书名,数量,总价
显示整张订单总价
显示订单信息中的送货方式信息
显示付款方式信息
显示订单编号
提交继续购书的请求
提交查看该用户所有订单的请求
本页面中将全面显示该客户本次购物生成的详细订单信息,同时如果单击"继续购书"按钮将提交"bookSearch.do"请求返回网上书店主页面,如果单击"查看订单"按钮将提交"orderHistory.do",跳转到"orderHistory.jsp"页面.
3-6-8显示客户所有订单信息orderHistory.jsp页面详细功能及描述
获取该用户所有历史订单信息
显示订单信息信息列表
显示订单编号,时间,总价
提交取消订单请求的超链接
提交返回购书请求的超链接
本页面将显示与当前用户相关的所有订单信息.同时用户可以单击"取消此单"超链接提交"delOrder.doorderId等于<,%等于order.getId()%>,"请求删除该订单信息,此外也可以单击"返回购书"按钮提交"bookSearch.do"请求跳转到网上书店主页面.
3-7业务逻辑层各bean功能
在本系统的业务逻辑层中分别完成了对图书信息,图书分类信息,购物车信息,订单信息以及客户信息等类型对象的保存和处理.所有文件包含在WEB-INF\classes目录中
3-7-1封装了数据库相关操作的bean(DB.ja)
采用了Struts架构下提供的数据库连接池建立与数据库的连接,在该bean中通过构造方法建立与数据库的连接,并提供了相应的方法完成数据库中的查询,更新等操作,同时也提供了关闭数据库连接的方法,以便于及时释放资源.
3-7-2封装了图书住处处理的bean(Book.ja)
除声明了与图书基本数据相关的基本属性和方法之外,还提供了图书信息的查询显示处理相关的几个方法.其中在调用查询满足条件的图书信息方法时,需要提供查询的依据,例如,分类,按作者还是按书名,对应关键字等.
3-7-3封装了图书分类信息处理的bean(BookCat.ja)
除了声明了与图书分类数据相关的基本属性和方法之外,还提供了与图书分类信息查询及显示处理相关的几个方法.
3-7-4封装了图书查询及显示条件的bean(SearchStatus.ja)
主要封装了设置图书搜索查询条件相关的属性和方法,该程序中的方法将在搜索图书信息的程序中被调用.
3-7-5封装了购物车信息处理的bean(ShopCart.ja)
为了能够简化类的定义,考虑到购物车中所需要处理的图书基本信息与图书类型对象中封装的信息相同,只是需要再补充上购写数量即可,因此在定义该类时继承了图书信息类.
3-7-6封装了订单住处处理的bean(Order.ja)
除声明了与订单中所需要处理的数据相关的基本属性和方法之外,还提供了与订单查询,插入及删除处理相关的几个方法.此外,也提供了计算该订单所涉及总金额的方法.
3-7-7封装了客记信息处理的bean(User.ja)
除声明了与用户数据相关的基本属性和方法之外,还提供了与确认用户身份,获取用户相关信息,插入新用户信息处理相关的几个方法.
3-7-8常量文件(Constants.ja)
3-8控制处理层
下表是网上书店系统中的Action映射表.该映射决定了Action与其他Web组件之间的关联关系.作为前后台之间桥梁,本表中指明了每个Action的入口(即调用Action的组件)及出口(即请求转发的目标组件),以及传递Action的ActionForm.
Action入口ActionForm出口BookSearchActionIndex.jspBookSearchFormBookMain.jspBookDetailActionBookMain.jspBookIdFormBookShow.jspPageCtrlActionBookMain.jspPageIdFormBookMain.jspLoginActionUserLogin.jspLoginFormOrderAddress.jspRegistActionUserRegister.jspUserFormUserLogin.jspBookBuyActionBookShow.jspBookIdFormBookShopCart.jspUpdateShopCartActionBookShopCart.jspBookShopCartFormBookShopCart.jspClearShopCartActionBookShopCart.jspBookShopCart.jspAddrConfirmActionOrderAddress.jspDeliveryFormOrderConfim.jspOrderHistoryActionOrderConfirm.jspOrderHistory.jspOrderDelActionOrderHistory.jspOrderIdFormOrderHistory.jsp1.BookSearchAction.ja
该程序负责处理查询显示满足条件图书书目信息时提交的"bookSearch.do"请求
2.PageCtrlAction.ja
该程序负责处理分页显示图书书目信息时进行页面跳转时提交的"bookPage.do"请求.
3.BookDetailAction.Ja
该程序负责处理显示指定图书编号的对应图书详细信息时提交的"bookDetail.do"请求.
4.BookBuyAction.ja
该程序负责处理购写图书时提交的"bookBuy.do"请求.
5.UpdateShopCartAction.ja
该程序负责处理修改购物数量,或者删除购物记录时提交的"updateShopCart.do"请求.
6.ClearShopCartAction.ja
该程序负责处理从购物车页面提交的清空购物车时的"clearShopCart.do"请求.
7.LoginAction.ja
该程序负责处理从用户登录页面提交的"login.do"请求.
8.RegistAction.ja
该程序负责处理从新用户注册页面提交的"regist.do"请求.
9.AddrConfirmAction.ja
该程序负责处理从订单处理页面提交的选择送货方式及付款方式的"addrConfirm.do"请求.
10.OrderHistoryAction.ja
该程序负责处理从确认订单页面提交查看所有订单信息的"orderHistory.do"请求.
11.OrderDelAction.ja
该程序负责处理从订单信息显示页面选择"取消订单"时提交"delOrder.do"请求.
总结
本文讲述了Ja/JSP/Struts在WEB应用的一些基本知识,并通过网上书店的程序对JSP的运用进行了深化,从本文中可看出JSP与Struts框架结合的模式,在电子商务上应用十分灵活,不过要真正掌握好它们却并不是一件容易的事情,在实际应用的WEB开发中,还有很多关于安全方面的问题需要考虑.在这里要感谢上海浦东软件园的培训部的江玮老师,他在我论文及设计的定题以及修改上给予了我很多的支持,对我论文的完成帮助很大.
参考资料:
(1)JSP编程技巧/清宏计算机工作室编着.北京:机械工业出版社,2001.1
(2)精通JBuilder3环境下的JA编程/锐思创作室编着.北京:人民邮电出版社.,2001.1
(3)深入JAServlet网络编程.清华大学出版社
(4)Struts开发入门与项目实践.北京:人民邮电出版社,2005.8
19
bookMain.jsp
图书查询
orderConfirm.jsp
订单确认
orderHistory.jsp
历史订单查询
userRegister.jsp
新会员注册
userLogin.jsp
会员登录
orderAddress.jsp
会员地址确认
bookShopCart.jsp
购物车管理
bookShow.jsp
图书详情显示