基于Jsp的网上购物系统设计本科毕业论文(37页).doc
-基于Jsp的网上购物系统设计本科毕业论文-第 30 页 本科毕业论文(设计)题目 基于Jsp的网上购物系统设计 学生姓名 专业名称 指导教师 基于J2EE的网上购物系统的设计摘 要: 在Internet飞速发展的今天,互联网已成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。由于网上购物的兴起,消费者的购物过程变得越来越轻松、快捷,人们足不出户就可以购买所需商品,从而方便的满足了现代人快节奏的生活方式。与此同时,网上销售不仅能有效的节省了运输、储藏等运营成本,而且跨越了交易的地域局限性。因此能够满足以上要求的电子商务网站越来越受到人们的重视,它已成为各行业经营者营销的主要手段。本文以开发网上购物系统为背景,对基于MVC模式的Struts框架、Hibernate的ORM机制和对持久化对象持久化的管理,以及Spring IoC(控制反转)技术进行了探讨,整合这三种框架:表现层使用Struts;持久层使用Hibernate进行系统的开发。此外,结合具体的实例对系统的设计与实现作了详细的说明,验证了以上方法的可行性。最后,对基于SSH技术开发购物系统整个过程进行了总结。关键词: J2EE;MVC ;Struts;Hibernate ;Spring ;整合Design of Technology-based Online Shopping System J2EEAbstract: Today, with the development of Internet, The internet has become an important channel for fast receiving, releasing and sending information. An important role is being played in people's political, economic and the other aspects of life. Because of the rise of online shopping, going shopping is becoming increasingly easier and faster for consumers. People can purchase the necessary goods at home. Thus, it satisfies the modern fast-paced lifestyle facilitatingly. At the same time, online marketing can effectively save the transport, storage and other operating costs, it also can beyond the geographical limitations of the transaction. Therefore, more and more attention has been paid to the e-commerce sites, the e-commerce sites that are able to meet the above requirements . The e-commerce sites has been mostly used by the industry operators for marketing. The article is based on the developing of online shopping system. The struts framework, Hibernate's ORM mechanism, the persistence management of persistent object and Spring IoC(Inversion of Control) technology will be discussed .The Struts framework is based on MVC. These three frameworks are integrated: Struts are used in presentation layer, spring is used in business layer, Hibernate develops system is used in persistence layer. Besides, with the context of specific examples, detail description is done about the design and implementation of the system, and the feasibility of the above methods is verified. In the end , summarization is made about the advantages and disadvantages of the shopping system development. The shopping system is based on the SSH technology.Keywords: J2EE ; MVC ; Struts ; Hibernate ; Spring ; Integration目 录1系统的开发背景11.1问题的提出11.2 问题的解决11.3 本章小结12 SSH相关技术的介绍22.1 Struts的介绍22.2 Hibernate技术22.3 JSP语言32.4 XML语言42.5 本章小结43系统的需求分析53.1 编写目的53.2 系统目标53.3 运行环境搭建53.4 功能需求63.4.1功能模块划分:63.4.2功能的描述:63.5 性能需求93.6 本章小结94系统的概要设计104.1 系统总体结构设计104.1.1系统前台设计104.1.2系统后台设计114.2 数据库设计124.2.1 数据库设计需求分析124.2.2 数据库表结构124.3 本章小结155系统的实现165.1 整合SSH的关键代码165.2 主要业务逻辑的代码245.3 本章小结38总结39参考文献40致 谢411系统的开发背景1.1问题的提出 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。由于网上购物的兴起,消费者的购物过程变得越来越轻松、快捷,人们足不出户就可以购买所需商品,从而方便的满足了现代人快节奏的生活方式。与此同时,网上销售不仅能有效的节省了运输、储藏等运营成本,而且跨越了交易的地域局限性。因此能够满足以上要求的电子商务网站越来越受到人们的重视,它已成为各行业经营者营销的主要手段。 由于电子商务的内部逻辑复杂、安全性要求苛刻、商务形式发展变化快 ,J2EE传统的JSP /Servlet开发模式常常带来显示、业务和数据的高耦合,造成软件难以复用,不能满足目前大型的Web应用开发中普遍要求降低开发团队的技术成本和分工协作难度,缩短开发时间的要求。1.2 问题的解决 在以上需求下产生了J2EE的框架技术。框架在Web中的应用以其层次性、平台无关性、安全性和可扩展性,已成为目前电子商务系统主要的解决方案。集成Struts、Spring和Hibernate三种J2EE框架技术可快速构建一个多层的可复用的电子商务网站。本系统采用Jsp、JavaScript、Struts、Hibernate、CSS、Mysql等技术进行整合,充分利用J2EE框架的优点和代码复用技术完成设计。1.3 本章小结 本章主要介绍了此系统的开发背景。提到问题是在什么情况下提出的,以及如何解决该问题。2 SSH相关技术的介绍2.1 Struts的介绍Struts 是Apache 组织的一个开放源码项目,它是一个比较好的MVC 框架, 提供了对开发MVC 系统的底层支持, 是基于MVC 分离思想的杰出产品。MVC 设计模式起源于Smalltalk 语言, 由控制器(Controller)、模型(Mode1)、视图(View)部分组成。其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,可以使界面显示需求变化的时候, 业务逻辑的改变大大减少; 模型和控制器的划分使得可以通过控制器方便地分发业务逻辑, 根据不同的用户显示不同的内容。从而提高了系统的可维护、可扩展、可重用性。Struts 的Controller 是通过ActionServlet对象实现的。这个控制器获得View(JSP)的请求后根据ActionMapping 对象调度相应的Model(Action 对象)处理业务逻辑。并根据获得的处理结果(ActionForward 对象) 装配View(JSP) 来响应,同时通过ActionForwad 对象封装数据在Model 和View之间交互使用。Struts 还通过自定义的标签库丰富了View层的JSP 技术, 方便了页面设计。2.2 Hibernate技术Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库, Hibernate可以大大减少操作数据库的工作量。 另外Hibernate可以利用代理模式来简化载入类的过程,这将大大减少利用Hibernate QL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本Hibernate可以和多种Web服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。Hibernate技术本质上是一个提供数据库服务的中间件。Hibernate的工作原理,它是利用数据库以及其他一些配置文件如Hibernate.properties,XML Mapping等来为应用程序提供数据持久化服务的。Hibernate具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供JDBC连接,并且自行管理事务,这种方式使用了Hibernate的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的JDBC/JTA API都被抽象了,Hibernate会替你照管所有的细节2.3 JSP语言JSP(Java Server page)是由Sun Microsystems公司提倡、多家公司参与建立的一种功能强大的动态网页技术标准。JSP为创建高度动态的Web应用提供了一个独特的开发环境,能够适应市场上包括Apache Web Server、IIS4.0在内的85%的服务器产品。相对于其他网页技术,JSP具有很多优势.客户端与服务器的交互是通过HTTP协议进行的。客户端与服务器完成一次HTTP交互需要下面4个步骤: 客户和服务器建立连接 发送客户请求 服务器应答 关闭连接服务器端在整个交互过程中完全处于被动地位,也就是说服务器不能主动将信息发送到客户端。这里的客户端主要是指用户的浏览器,当用户在浏览器中键入要访问的网址,开始与指定的服务器建立连接,开始一次交互过程。浏览器经过一段时间等待后,从服务器得到响应,并且把相应的信息以HTML方式呈现给用户。用户与一个JSP网站交互的过程与一个普通的网站交互的过程没有什么不同,惟一的区别在于服务器接受请求和进行应答的过程 服务器在收到一个请求后首先要分析这个请求,如果要求访问的页面是一个HTML页面、那么服务器将直接读出这个HTML页面并将这个页面传给客户端作为响应。 如果请求访问的页面是一个JSP页面,那么服务器将调用JSP引擎对这个JSP页面进行处理,将处理得到的HTML代码返回给客户端。 JSP引擎在处理一个JSP页面时,如果遇到JavaBeans组件,那么JSP引擎将调用相应的JavaBeans组件,得到JavaBeans返回的值,在返回给JSP页面。2.4 XML语言XML,或称为可扩展标记语言(Extensible Markup Language),是一种可以用来创建自己标记的标记语言。它由万维网协会(W3C)创建,用来克服HTML(即超文本标记语言(Hypertext Markup Language)的局限。和HTML一样,XML也是基于SGML标准通用标记语言(Standard Generalized Markup Language)的。尽管SGML已在出版业使用了数十年,但其理解方面的复杂性使许多本打算使用它的人望而却步。XML提供了一种标记内容的方式,可以添加关于数据用途的信息。信息使用XML存储之后,称为解析器的应用程序就能够可靠地提取相关信息,并根据不同的需要进行处理。XML是为Web设计的。Web服务是一种技术,允许用XML定义业务规则和过程,这样软件应用程序能够以平台独立和编程语言无关的方式进行通信。XML技术使数据可以移植,方便了消息创建,而Java技术则使代码可以移植。事实上,XML和Java语言可以很好地结合起来,成为构建和部署Web服务的完美组合。2.5 本章小结本章主要介绍了struts、Hibernate、jsp、xml的相关技术。3系统的需求分析3.1 编写目的随着社会发展的加快,电子商务将传统的商务流程数字化、电子化,让传统的商务流程转化为电子流、信息流,突破了时间空间的局限,大大提高了商业运作的效率,并有效地降低了成本,但是对于电子商务系统本身的性能而言也是非常重要的。为了满足更多市场的需求,对一个软件系统的要求也就越来越高。任何一个软件系统都可能受时间和资源的限制,为了避免盲目投资,减少不必要的损失,即以最小的代价在最短的时间内确定该项目是否值得开发,所以,必须进行需求分析,编写需求分析报告。才能将项目开发的风险降到最低。3.2 系统目标本系统是整合J2EE的三大开源的框架,并且结合安全性比较高的MysqL数据库来开发的。为了使系统在实际的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: 系统应具有实用性、可靠性和适用性,同时注意到先进性; 对各个数据库进行动态管理,防止混乱; 能够按照不同的条件进行简单查询和复合查询; 能够对查询结果进行分类汇总; 提高数据的安全性; 方便用户的操作,尽量减少用户的操作。3.3 运行环境搭建操 作 系 统:WINDOWS数 据 库 :MYSQL开发工具包 :JDK JSP 服务器 :TOMCAT3.4 功能需求3.4.1功能模块划分:注册和登录模块商品展示与搜索模块购物车模块订单模块顾客留言模块修改注册资料模块后台管理模块3.4.2功能的描述: 注册和登录模块用例图如图1所示图1注册和登录模块用例图游客只能注册,会员和管理员可以登录。 商品模块用例图如下图2所示:图2商品模块用例图游客可以浏览商品,会员都可以浏览、搜索商品、并查看商品的详细信息和购买商品。管理员可以浏览、搜索商品,查看商品的详细信息,并且可以添加、修改和删除商品。 订单模块用例图如下图3所示:图3订单模块用例图会员可以下订单、查看订单、修改订单,管理员可以查看、受理、修改和删除订单。 购物车模块用例图如下图4所示:图4购物车模块用例图会员可以添加商品到购物车、查看购物车中的商品情况、修改购物车中的商品数量、删除购物车中的某种商品、清空购物车 顾客留言模块用例图如下图5所示:图5顾客留言模块用例图游客和会员都可以浏览、查看和发表留言,管理员可以浏览、查看、回复和删除留言。3.5 性能需求 精度查询时应保证查全率,所有相应域包含查询关键字的记录都应能查到。 时间特性要求响应时间: 23秒内更新处理时间:23秒内数据的转换和传送时间:34秒内3.6 本章小结 本章主要介绍了对此系统做的需求分析。从运行环境、功能需求、性能需求等方面,进行了详细的分析。系统的目标是使系统在实际的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量。4系统的概要设计4.1 系统总体结构设计主要描述系统的前台设计结构、后台设计结构以及各个模块实现的功能。4.1.1系统前台设计系统前台设计如图6所示: 数据库 服务器 登 录 用户注册商品浏览和搜索 顾 客 留 言 购 物 车 下 订 单 用户自资料修改 浏览器图6系统前台总体结构设计用例图系统前台模块功能介绍: 注册和登录模块:游客可以免费注册;会员登录时对用户名、密码和验证码进行合法验证;用户注册时对注册字段进行验证。商品的浏览与检索模块:主要向用户展示商品和检索想要查看的商品。商品的查看模块:用户可查看商品的详细信息。顾客留言模块:用户可以浏览和发表网站最新的消息。 订单模块:已登录的会员可以下订单和查看自己的订单。购物车模块:用户可将要购买的商品放入,也可修改和删除购物车中的商品信息,购物车可以自动将金额汇总。修改注册资料模块:用户可以修改自己的注册资料。4.1.2系统后台设计系统后台设计如图7所示: 数据库 服务器商品分类管理商 品 管 理特价商品管理系统用户管理订单管理会员管理安全退出 浏览器图7系统后台总体结构设计用例图系统后台模块功能介绍: 后台登录模块:对输入的用户名、密码和验证码进行验证。商品分类管理模块:商品管理员可以对商品类别的添加、删除和修改。 商品管理模块:商品管理员可以对商品的添加、删除,检索和修改。订单管理模块:订单管理员可以对订单的查看、受理、删除和修改。会员管理模块:会员管理员可以对会员的添加、删除、修改和查看。留言管理模块:会员管理员可以对顾客留言进行的添加、修改和删除。系统管理模块:系统管理员可以对系统管理员的身份进行添加、修改。4.2 数据库设计4.2.1 数据库设计需求分析根据系统模块设计的需求,需要建立9张数据表来进行数据的存储于表关系的关联,本系统说采用的数据库是MySql5.1的数据库,之所以采用Mysql是因为Mysql容易上手维护方便,对于刚接触的新手来说还是很有帮助的,本系统不要求数据库有太多的容载量,只需要进行简单数据、文本关系的存储就可以了。4.2.2 数据库表结构表4.1 admin (管理员基本信息表)主要用于保存超级管理员的信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementAdminTypeInt(4)YesNullAdminNameChar(12)YesNullLoginNameChar(12)YesNullLoginPwdChar(12)YesNull表4.2 orders(订单基本信息表)主要用于保存订单的基本信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementMemberInt(4)YesNullCartInt(4)YesNullOrderNoChar(20)YesNullOrderDateDatetimeYesNullOrderStatusInt(4)YesNull表4.3 Leaveword(顾客留言信息表)主要用于保存顾客留言的基本信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementMemberInt(4)YesNullAdminInt(4)YesNullContentInt(4)yesNullLeaveDateDatatimeyesNullAnswerContentTextyesNullTitleChar(60)yesNullAnswerDateDatetimeyesNull表4.4 member (会员基本信息表) 主要用于保存会员的基本信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementMemberLevelInt(4)NoNullLoginNameChar(12)YesNullLoginPwdChar(12)YesNullMemberNameChar(20)YesNullPhoneChar(15)YesNullAddressVarchar(100)YesNullZipChar(10)YesNullRegDateDatatimeYesNullLastDateDatatimeYesNullLoginInt(4)YesNullEMailVarchar(100)YesNull表4.5 memberlevel (会员级别信息表)主要用于保存会员级别的信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementLevelNameChar(20)YesNullFavourableInt(4)YesNull表4.6 category (商品基本信息表)主要用于保存商品的基本信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementcateNameChar(40)YesNullcateDesctextYesNull表4.7 merchandise (商品详细信息表)主要用于保存商品的详细信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementCategoryInt(4)YesNullMerNameChar(40)YesNullPriceDecimal(8,2)YesNullSPriceDecimal(8,2)YesNullMerModelChar(40)YesNullPictureVarchar(100)YesNullMerDescTextYesNullManufacturerChar(60)YesNullLevelFactoryDateDatetimeYesNullSpecialInt(4)YesNull表4.8 cart (会员购物信息表)主要用于保存会员购物信息信息,该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementMemberInt(4)YesNullMoneyDecimal(9,2)YesNullCartStatusInt(4)yesNull表4.9 cartselectdmer(订单项信息表)主要用于保存订单项的基本信息(每个订单包括一个或多个订单项),该表的结构下图所示FieldTypeNullKeyDefaultExtraIDInt(4)NopriNullAuto_inceementCartInt(4)YesNullMerchandiseInt(4)YesNullNemberInt(4)YesNullPriceDecimal(8,2)YesNullmoneyDecimal(9,2)YesNull4.3 本章小结本章主要介绍了此系统的概要设计。首先对系统的总体结构进行设计,将系统分为七大功能模块,画出每个功能模块的用例图。然后对系统所需要的数据库进行了逻辑设计和物理设计。5系统的实现5.1 整合SSH的关键代码 web.xml文件中的配置<filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>GB2312</param-value></init-param><init-param><param-name>ignore</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><servlet-name>action</servlet-name></filter-mapping> <!-Struts标签库配置-><jsp-config> <taglib> <taglib-uri>/struts-bean</taglib-uri> <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/struts-html</taglib-uri> <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/struts-logic</taglib-uri> <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location> </taglib></jsp-config> <!-JSONRPC 组件-> <servlet> <servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name> <servlet-class>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name> <url-pattern>/JSON-RPC</url-pattern> </servlet-mapping> <!-配置Struts中央控制器-> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-配置欢迎文件-><welcome-file-list> <welcome-file>index.htm</welcome-file></welcome-file-list></web-app>以上代码主要配置了Struts的中央控制器AcionServlet的截取方式为“*.do”,过滤字符的filter过滤器的截取方式为“/*”。并且将Struts和Spring进行整合。 struts-config.xml文件中的配置<struts-config> <data-sources /> <form-beans > <form-bean name="loginForm" type="com.struts.form.LoginForm" /> <form-bean name="adminForm" type="com.struts.form.AdminForm" /> <form-bean name="cateForm" type="com.struts.form.CateForm" /> <form-bean name="merForm" type="com.struts.form.MerForm" /> <form-bean name="memLoginForm" type="com.struts.form.MemLoginForm" /> <form-bean name="memberForm" type="com.struts.form.MemberForm" /> </form-beans> <global-exceptions /> <global-forwards > <forward name="addAdmin" path="/Admin/adminAddUser.jsp" /> <forward name="sorry" path="/Admin/sorry.jsp"/> <forward name="addCate" path="/Admin/adminAddCate.jsp" /> <forward name="addMer" path="/Admin/adminAddMer.jsp" /> <forward name="addSMer" path="/Admin/adminAddSMer.jsp" /> <forward name="index" path="/default.jsp" /> <forward name="memSorry" path="/sorry.jsp" /> </global-forwards> <action-mappings > <action attribute="loginForm" input="/Admin/adminLogin.jsp" name="loginForm" parameter="method" path="/Admin/login" scope="request" type="com.struts.action.AdminLoginAction"> <forward name="logoutSuccess" path="/Admin/toLogin.htm" /> <forward name="loginSuccess" path="/Admin/