




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA EE架构与应用课程设计JAVA EE架构与应用课程设计报告题 目:基于SSH2架构的电子商务系统设 计 者:专业班级:学 号: 2015年 01月 20 日河南理工大学计算机学院中文摘要1第1章绪论21.1研究背景21. 2国内外研究现状31.3研究的目的和内容3第2章 企业级架构与 SSH2框架整合32.1企业级应用架构的发展32.2 Struts2技术架构分析62. 3 Spring技术架构的分析92.4 HIBERNATE技术架构的分析92.5 SSH2框架整合10第 3 章 系统需求分析103. 1需求分析11第 4 章 系统总体设计124.1功能度计124.1. 1用户操作
2、124.1.2管理员操作134.2数据库设计134.3 本章小结16第 5 章 系统实现175. 1搭建 Struts2+Spring+Hibemate环境175. 2用户注册模块185.3产品显示模块195.4 购物车模块205.4.1 购物车Action215.4.2购物车页面215.4.3提交购物车Action225.5购物拦截器235.5.1处理订单255.5.2添加商品25第 6 章 总结与展望 26参看文献 26中文摘要 随着网络技术和电子商务的发展,越来越多的企业为了提高市场竟争力,开始通过电子商务的形式进行网上商品交易,如何构建适合企业发展的电子商务同站己经成为目前企业比较关心
3、的问題,在 JavaEE平合中, SSH2 ( Struts 2+ Spring + Hibernate)框架整合开.发已经成为当今最流行的开发平台之一,这种开发平台也被称为轻量级 JavaEE企业应用平台.本文首先讨论了Struts2、 Spring和Hibernate的 基础及其相关技术,包格各个架构的关键支推技术,研究与实践了 Java EE的分层思想, Struts2框架的体系结构与 MVC模式,Spring框架的IoC与 AOP以及 Hibernate的 的 ORM,然后研究了 Struts2 和 Spring整合的方式方法,Spring和Hibernate整合的方式方法,以及 St
4、rut2、Spring和Hibernate三种技术整合的最佳方案.在此基础上为了大大提高用户体验的丰富性,尝试添加了的基子互联网的应用程序-互联网应用程序 RIA(Rich Internet Application). RIA 技术简化并大大改善了 Web应用程序的用户交互,更具有交互性和响应性的用户体验.其中具有代表性的是 flex框架,本文引入 aex框架,最后在实际项目随心淘购物商城系统中应用了 SSH2+FLEX整合技术.使网络应用程序可以提供更具有交互性和响应性的用户体验,开展相关应用研究,具有重要实际价值关键词:Struts2,Web 架构,flex,RIA第1章绪论1.1研究背景
5、随着软件产业的不断发展,企业应用软件系统复杂性逐渐增加,对系统的要 求也在不断提高,开发商的开发成本和开发时间也是成几何比例增加。 Sun公司适时地提出了 JavaEE(JavaPlalform, Enteraprise Edition , Java平台企业版)目的是满足企业应用的高要求,降低开发商的成本,减少开发商的响应时间,并且对 JavaEE方案进行了定义(即 Java EE规范)。 Java EE多层架构是一种流行的 Wee应用开发框架,已成为解決电子商务和企业级应用的标准平台。但这个平台并不能流是所有的需求特点,随着软件开发,技术开发、构件开发,在多层软件开发项目中,可重用性,和可扩
6、展性的软件组件,得到越来越多的开发商的青睐。由此,许多开发商将同一类型的抽象问題的解决方法,考虑到一个应用程序框架。 使用这些框架来构建分布式应用程序的完美应用,实现了高内聚,低耦合,高弹性,易保持的优势.其中最受入们者味的是Struts Spring和H框架外。Struts作为第一个基于MVC设计模式解源的。Java Web编程框架,得到广泛应用,已成为一种主流的 Web编程框架.Spring是新型的开放源码的轻量JavaEE框架,它支持许多 java Web技术和框架,Java/J2EE应用程序开发更加容易和效率更高。Hibemate 是一个开放源代码的対象关系映射框架,对JDBC 进行了
7、轻量级的对象封装。 使得 Java程序员可以使用对象编程思维来操作数据库 。随着WEB2.0时代的到来,为了提高用户体验,出现了一种新类型的基于互联网联应能序Rich Internate Application(简称RIA) ,即富互联网应用程序,RIA是集桌面应用程序的最佳用户界面功能与 web应用程序的普遍采用和快速、低成本布署以及事实媒体重动于一体的全新的网络应用程序。它最大程度地提高了网络程序广泛性和丰富性。 RIA下表现最为突出的是flex框架, Flex 是为满足希望开发RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于 J2EE和.NET平台。 Flex 目
8、前技术发展较快,越来越多的产品基于Flex技术了,比如3G视频会议系统、网络流媒体点播平台, SNS等。它是一系列发展中的技术和产品线的概括词,包括 FlexFramework, FlexBuilder2, FlexEnterpriseServices2 等。为适应这一形势的需要, SSH2 (Struts2, spring, hibernate)和RIA (富互联网应用程序)结合引入到 web应用程序开发中。 ssH2 框架,实现了事务逻辑在服务器端开发的低相合的代码和数据持久性。 Flex技术,设计前台的各种应用,提供丰富的,更具交互性,更美观和更具动感的用户接口,从而建立一个富用户体验的
9、电子商务网站。1.2国内外研究现状目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外, JSP已经是比较流行的一种技术,尤其是电子商务类的网站, 多采用JSP。他原来的产品lntershop1 2,3,4占据了主要的电子商务软件份额。它们都是通过CG味提供支持的。但去年10月后它推出了Enfinity, 一个采用JSP/Servlet的电子商务ApplicationServer,而且声言不再开发传统软件。总的来说, ASP, PHP,JSP三者都有相当数量的支持者,而这三者也各有所长, 在开发过程中,我们应该根据实际的需要来使用最合适的技术,本系统则采
10、用JsP 技术,配合SSH2框架进行开发。1.3研究的目的和内容本课题主要通过“淘宝2电子商务系统来研究 Struts2框架, Spring框架和Hibernate框架在项昌中的整合方法。在整合 SSH2 権架基础上, 研究构建 Flex 框架,整合flat 与 ssH2 框架。以建立增加系统灵活应用和宫用户体验的电子商务网站。利用该架构实現了“淘宝2电子商务系统,其中包括主要模块有:用户注册、用户登录、产品査询模块、购物车模块、订单管理模块、管理员登陆模块。 主要内容色括: (1)深入分析 struts2、 spring2 和 Hibernate3技术。(2)研究 Struts2框架、 sp
11、ring2 框架和 Hibemate3框架的整合方法。(3)在研究 SSH2 技术和MvC设计模式的关系的基础上,构建一种富客户端 Web应用程序 FlexMVC框架。(4)对基于 SSH2 和 FLEX的 Web应用框架设计。结合应用实例详细讨论 ssH2框架下的电子商务网站项目中的设计与应用,在实践中检验 SSH2+flex的有效性,验证理论的可行性。第2章 企业级架构与 SSH2框架整合2.1企业级应用架构的发展随着计算机技术在企业应用软件领域的迅速发展,作为跨越整个企业业务之间的桥梁,企业级应用与当前的计算机技术更完美的融合到企业应用程序,是体系结构的必然发展。在软件系统中,软件体系结
12、构提供了一个包括行为、结构和属性的高级抽象, 它是由元素描述、元素间相互作用、元素集成的模式和模式的约束组成。系统的拓扑结构和组织结构也由软件体系结构指定,构成系统和系统需求中的元素也由其显示出来,由此给供了关于设计决策的一些基本原理.设计好体系结构,决定着系统开发的成败。近几年来,互联网技术发展迅猛, 特别是基子web的相关技术,如检索技术、信息发布技术、 Java相关技术和网络分布式技术的发展,使系统体系结构由 C/S结构向 B/S结約、再到多层分布式结构演交,从而使软件系统中的网络体系结构进入了一个新的阶段。从 C/S架构到 B/S架构:(1) c/s架构:即Client/servet
13、(客户加服务器)架构.c/s架构中数括库内容被存放在远程的服务器上,使得客户机上必须安装相应的软件。 C/S架构分两部分构成:一部分是前端客户机,用于接受用户请示,请求数据库服务;另一部分是后台服务器, 客户端接收数据管理(Serye,)发出的数据,最后由客户端将将计算结果发送给用户。C/S架构是相对很成熟的一种架构,其优点是交互性强、存取模式安全、便于处理大量的数据、响应速度快。然而这是一种针对性的架构开发程序,不够灵活多变,难以维护和管理。 扩展性差,适合用于小型局域网。(2)B/S架构:即 Browser/Server (测览器/展务器)架构,就是只安装、维护一个服务器(server),
14、而用测览器在客户端(Browser)运行软件。它是对c/S架构变革和改进,主要使用了相对成熟的web浏览器技术,是软件系统构造技术的一种创新。在B/S架构体系中,服务器处理浏览器的请示,然后返回用户所需的信息到浏览器。 Web Server来处理其余工作。早期开发的B/S架构,把所有的控制逻辑、数据持久化、业务逻辑混在一起,使得企业级应用技术使用混乱,由页面脚本来实现处理逻辑,所以致使早期的B/s架构应用到后期面临着维护难度大、不易扩充的等同题。Java企业级应用分层:在现在企业级应用中,我们的应用软件一般分为三层,分别是客户层,业务逻辑层,企业信息系统层(或数据库层).客户层一般在客户端的P
15、C机上,是直接与使用者交互的软件:业务逻辑层,也叫中间层,所有业务理辑处理都在这一 层完成;企业信息系统层,也在服务器端,主要用于保存数据。 sun的 javaEE规范中采用4层体系,可以扩展到 n层,最简单情况会分为4层,即将业务逻辑层(中间层)分为Web层与业务层.Web层(Wleb Tier):由Servlets和 JSP组件组成 web组件, JanBeaas组件用于管理用户输入的信息,然后业务层的Enterprise JavaBeam 来处理这些输入发送。业务层(BusinessTier):实现业务逻辑,在基于 JavaEE规范构建的企业级信息系统中,业务层中的 Enterprise
16、 JavaBeans (EJB)由一些逻辑规则代码构建而成, 这些代码为特定业务领域的代码。EJB 组件用于完成从客户端相应功能,如在应用程序中接收数据、发送处理结果给客户端、处理符合业务规则的数据等功能, Web 层构和业务层形成了此多层体系的中间层, JavaEE 4层应用体系结构如图2-1所示。通常情况下, 一个商业系统被划分为4个层次,分别为表示层、持久层、业务层和域模型层同,表示层:在Web应用开发中需要关注的一个焦点即是表示层。 Struts2所应该提供的功能包括:(1)管理用户的请求和相应。(2)提供一个控制器负责调用业务逻辑的处理方法以及其他处理。(3)处理其他层次抛出到Str
17、uts Action的异常。(4)组装一个可以被呈现在视图(View)中的模型(Mode1)。(5)执行表示层技验,持久层:在web应用开发中的另一个关键点就是持久层,持久层的具体功能如下所示:(1) 査询相关的信息并保存到 java对象中 。(2)保存、更新和删除存储在数据庫中的信息。业务层:典型的 Web应用的中间层就是业务层。通常业务层应该包括以下功能:(1) 业务判断和业务逻辑处理。(2)事物管理。(3)通过使用相应接口和其他层交互。(4)管理业务层对象的依赖性。(5)可以増加持久层和表示层的灵活性,以便使他们之间不会有交互。(6)是想一个业务的上下文,方便表示层调用业务层的服务。(7
18、)管理持久层的实现,域模型层:域模型层包括真实世界中的业务对象,例如,订単,订单条目和商品等。在 Web应用中使用域模型层可以省去开发人员创建和维护数据传输对象所带来的麻频.这个模型允许java开发人员直接使用目前流行的面向对象的软件的开发工具,而不是需要任何额外代码。2.2 Struts2技术架构分析Struts2技术架构是2007年才推出的一种全新的框架。它不是Struts1的升级版 本, 实际上它是在 WebWork的基础上发展而来的。MVC英文即 Mode1-view-controller,它是目前非常流行的一种软件设计模式, MvC的设计思想是将应用的输入、处理和输出流程进行强制的分
19、离。这样一个应用被分成为: Model(模型)、 View(视图)、 Controller(控制)这三个层同,这三个层以低耦合协同工作,由此提高应用的可结护性和可扩展性.此MVC模式结构的整体效果可如图24所示。 图2.4MVC结构视图(View):用户交互的界面,具有代表性的视图技术包括: JSP技术, htm1静态页面技术,动态页面 flex框架技术和报表页面技术等等,常用的视图技术用于负责数据信息的输入和输出 。模型(Mode1):用子处理业务流程和业务状态,制定业务规则。 MvC的核心设计即为业务模型。它还有一个很关键的模型为数据模型,此数据模型是指用子数据保存的实体对象(持久化)。控
20、制(controller) 业务流程由控制层进行控制,然后实現Model与view 的协同工作。并不在控制层进行数据处理。由此,形成了 Strusts+Spring+hibernate+flex 的整合框架视图, 一个视图可能对应多个模型。随着 Web技术的不断发展和 web应用的不断扩大, struts1的诸多缺陷和局限性也逐步表现出来四,如下所示:Struts1所支持的表现层技术比较単一 , Sln1ts1与servletAPI耦合严重,难于测试, Struts1属于入侵式设计, Struts1的Action中包含了大量的StrutslAPl,这种入侵式的设计影响了代码重用, 一旦系统需要
21、重构,这种入侵式的设计将会带来很多间题· 由于 Stmts1存在诸多问題缺陷,而WebWork框架具有优秀的设计理念,于是基于 Struts1和 WebWork 的Struts2就诞生了。 Struts2 的关键技术突出表现在它的组件功能作用上。 Struts2的 MVC组件分为三个部分:控制器组件(核心控制器、业务控制器)模型组件、视图组件。拦截器: 拦截器(1aterceptolr)是动态的Action调用,类似于Slevlet中的过港器,在执行Action的execute()方法之前,Struts2会首先执行在struts.xml 中引用的拦截器·拦裁器可以说是Str
22、uts2中的一个非常重要的组件.由于拦截器的存在, 才使得 Struts2的框架变得非常简単.类型转换:在web应用程序中,用户在视图层输入的数据都是字符串,业务控制层在处理时,必须对从视图层传递过来的字符串进行类型转换。 Struts2 作为一个完善的、优秀的Mvc框架,提供了简单易用的数据类型转换机制。Struts2框架提供了丰富的数据类型转换功能,它本身内部的类型转换器可以自动完成数据类型转换,开发者一般不需要实现自定义的类型转换器。Struts2提供如下类型转换。(1)简単类型例如int、 boolean和double类型等,即 Struts2可以把客户端的字符串数据自动转换成int、
23、 boolean 和 double等数据格式.(2)日期类型Struts2会采用当前区域(Locale)的短日期格式转换客户端字符串格式的日期数据。(3)集合类型例如 Co11egtion、 List和Set等, Struts2会将客户端的字符串使用request.getParameterValues()方法返回的字符串数据转换成集合类型 。信息校验:每一个项目开发都会遇到信息校验的问題.当 JSP页面被用户输入数据时, 一般不可能完全按照设计人员的意图来录入正确的数据信息,比如用户在向页面输入年龄、时间等信息时可能会输入汉字,这就需要我们验证用户输入形式是否是使用合法。信息校验通常采用 Ja
24、vascript 来形式来完成, Javascript是运行在客户端的程序,速度较快。OGNL: OGNL是 Object-Graph Navigation Language的缩写,这种表达式语言功能很强大(Expression Language,简称为EL)間,其语法表达式简单, 对象属性任意存取,对象的方法调用,字段类型转化实现等功能。标签库: Struts2的标签库使页面输出更加简单,并且支持更加复杂而丰富的功能, Strusts框架中的标签分类为三种;非用户界面标签、用户界面标签(UI标签) 和AJAx标签,其中 HTML 标签由用户界面标签生:逻辑控制和数据访问由非用户界面标签完成;
25、AJAx 技术来支持AJAX 标签等.文件的上传与下载:文件的上传与下载功能在很多WEB应用都会使用,Struts框架中内置了用于文件上传的组件, 使得实现文件上传下载功能相对方便 。 Struts2是通过 CommonsFileup1oad 文件上传。 HTTP 的数据由CommonsFileUp1oad 保存到临时文件夹,然后在Action的实例中, fileUp1oad拦截器进行文件绑定。从而,实现以本地文件方式的向浏览器上传文件操作。 2. 3 Spring技术架构的分析Springg 框架由 Rod Johnsan开发, 2003年发布了 Sring框架的第一个版本。 Spring
26、框架的核心是控制翻转1oC(Inversion of Coalro1) /依赖注入 DI(DependenceInjectionm)机制.Spring框架是为简化企业级系统开发而延生的。 Spring 是一个轻量级的Ioc 和AOP容器框架。 2.4 HIBERNATE技术架构的分析Hibernate是一个出色的“对象一关系”映射工具。在JavaEE应用程序中, 数据源采用二维表方式存储,是关系型数据库系统;同时采用面向对象编程,用对象描述实体.。 Hibernate的出现.解决了面向对象的应用程序和面向关系的数据库系统之同的“阻抗不匹配”问题,它作为一种映射工具把程序中的对象映射到数据库中的
27、二维表.Hibernate 支持所有主流关系型数据库系统,是一个优秀的、功能强大的开源 0-R Mapping工具。第二章中提出了软件3层分层体系(表示层、业务逻辑层、企业信息系统层), 但是在实际项目中, 往往会对三层体系结构做一些扩展来满足项目需要 。 对于实际 JavaEE项目一个最常用的扩展就是将三层体系扩展的分层体系, 即客户层、表示层、控制层、业务逻辑层、 DA0层、实体层和数据库层。其中 DA0 层与实体层使用了Hibernate 框架,对Hibernate框架的数据库访问又进行了封装,也就是一般所说的数据持久层.Hibernate框架中最核心的技术就是 0Rm,所谓 ORM,简
28、单地说就是将 Java, 中的对象与对象的关系,对应到关系型数据库中的表与表之间的关系,Hibernate提供了这个过程中自动对应转换的方案,相反地,也提供了关系型数据库中的表与表之问的关系,对应至 Java程序中的对象与对象的关系。Hibernate的 ORM从编程模型上看就是把一个普通Java对象POJO映射为关系数据庫中的表。映射是用一个xml文档定义的。 Hibernate的 ORM主要有两个方面:关系一对象映射与数据关联。在对象关系映射方面:实体映射技术为类与表之间进行连接,决定着在ORM 的实現 对Hibernate用户来说,映射关系主要是体现在配量文件中,类表映射有三个方面组成:
29、表名/类名映射、主键映射、属性/字段映射。在数握关联方面有: 一对一关联有两种类型:主键关联和唯一外键关联。一对多关联分为单向一对多关联和双向一对多关联。 多关联不同子一对一关联和一 対多关联,其需要借助于中问表完成多对多的映射信息保存。引入中间表使多对多关联的一次读取操作要经过多次反复査询,从而影响了其性能,因此在设计中多対多关联应尽量避免使用.而在多对多关系里,应根据实际情况,采用延迟加载机制可以選免多余的性能开销 。2.5 SSH2框架整合(1) Struts2 与 Spring整合增加所需的 jar 包,需要的 JAR 文件为: Spring 和 Struts2 框架本身需要的 jAR
30、文件以及他们所依赖的 JAR 文件,比如commons-logging.jar 等等,另外还需要Struts2发布包中的Struts2-sprine-plugin-x.xx.jar在 web.m1中增加 WebApplication Context 的相应配置以下两种配置方式本质是一样的Servlet2.3及以上版本可以使用, 相应配置如下:<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationCo
31、ntext.xml<param-value></context-param><1istener><listener-class>org.springframework.web.contextLoaderListener</1istener-class></1istener>如果spring配置文件被命名为 applicationContextt.xml,并且放在WEB-INF 目录下,则不需要配置<context-param>,因为 ContextLoaderLis1ener 默认在WEB_INF目录下寻找名为
32、applicationContext.xm1的文件.若存在多个Spring配置文件,则在<param-value>中依次列出,之问以退号隔开.如果spring配置文件被命名为pplicationContext.xm1,并且放在WEB-INF 目录下,则不需要配置<context-param>,因为ContextLoaderLis1ener默认在WEB-INF目录下寻找名为applioalionContextxm1的文件,或者是名字为ContextConfigLocation的 ServletContext参数所指定的文件.由于该 Servlet配置只是为了在容器启动时能
33、启动 ContexttLoaderServlet使其工作,而不需要引用该 Servlet,所以不需要配置<servlet-mapping>。在 web.xm1中完成加载 WebApplicationContext 之后,接下来就可以做到 Spring和Struts2的整合了。第 3 章 系统需求分析3. 1需求分析电子商务系统是一个供用户通过网络购买商品的地方, 本电子商务系统的用户角色分为普通用户与管理员 。 普通用户可以在前合进行査看产品与购买产品等操作,管理员可以在后台对产品进行管理,下面就通过实现随心淘购物商城系统, 研究 SSH2+Flex 开发模式。实现框架的整合方法。
34、随着生活水平的提高, 人们的消费方式也发生了很大的变化. 传统的购物,方式已不能满足日益增长的社会需求, 于是出現了土门推销、 电话订购等新的渠道。 其中网上购物已成为一种新的时尚并逐渐更多的人接受。 购物者不在需求夹杂在人来大往的街市里,不再需要在大小商城里仔细寻找,只需要做在算机前,就可以在各种购物网上方便地査询并购买自己想要购买的物品 。再上购物系统的一个很重要的功能就是的物车,因为用户需要购买的物品不止一个.如果用户每购买一个物品就需要提交一个订单(一般提交订単时都需要域写大量的信息。例如付款方式和邮寄方式等)那么用,户操作时会很琐碎.而量对售货方来讲也很不方便就像在超市购物有手推车的
35、购物篮,客户每购实一件或少量的商品就去收银台付款,可以想象一下客户有多累, 收银员有多累, 超市也会不堪甚乱。所以, 前网页需要实现购解功能,来方使用户的购买,同时也方便售方的管理,拿电子商务系统来说, 用户可已将想要的买的商品添加到购物车中,就可以在的车中修改商品购买数量, 或者购物车中删除不想购买的商品.最后提交购物车。统一订购车中的所有商品。本电子商务系统系统的用例图如图4-1所示, 功能模块图如图4-2所示。第 4 章 系统总体设计4.1功能度计根据前面对于电子商务系统的需求分析,电子商务系统操作主要分为普通用户操作和管理员操作,其中普通用户操作有:注册、登录、修改个人信息、修改書码、
36、査询商品信息、管理购物车和管理订单;管理员操作有:登录、査看用户信息、管理产品和管理订单。下面对这两个操作进行设计分析。4.1. 1用户操作普通用户可以通过注册获取用户名,在获取用户名后,用户可以通过用户名登录电子商务系统,然后就可以对自己的个人信息和密码进行修改,可以购买商 品、管理购物车和管理个人订单。(1)用户注册 用户可以在电子商务系统注册一个用户名,然后使用该用户名进行登陆。用户注册时,需要域写用户名、密码和邮箱。(2)用户登录 非登陆用户可以在电子商务系统査看商品信息、但不可以进行商品购买操作。用户要的买商品、首先要登陆电子商务系统.(3)修改个人信息用户登录后可以修改个人信息.个
37、人信息色括:昵称、性别、邮箱、电话、地址和个人备注(4)修改密码 修改密码时需要用户输入旧密站与新密码。 (5)査询商品 用户可以通过页面中相关整接获取相应商品信息,例如单击某品常可以获得该品停的所有产品, 也可以在商品查物栏中输入关键字进行査询。(6)管理购物车 管理购物率主要包括以下几种情况:像购物车中添加商品、在购物车中修改商品购买数量、 从购物车中删除商品和提交购物车.(7)管理订单 购物车提交成功后将生成一个订单。用户可以査看个人订单, 也可以删除订单。4.1.2管理员操作管理员可以使用数据表中存在的管理员用户名登录电子商务系统后台,管理员登陆后,可以在后台添加产品、管理产品和所有订
38、单。(1)管理员登陆 管理员登陆后才能进入后台页面,否则页面将始终跳转到管理员登录页面.(2)査看用户信息 管理员可以査看普通用户信息,通过用户信息来获取该用户的联系方式。(4)管理商品 管理商品主要分为以下几种情况:査询商品、添加商品、修改商品信息和删除商品 。(5)管理订単 订単管理主要分为以下几种情况:査询订单和处理订単(将未理订単修改为已处理订单)。4.2数据库设计前面对电子商务系统的需求进行了分析,也对系统功能进行了初步设计,接下来对系统数据库进行设计。数据库设计是系统实现的最关键环节,直接影响到系统功能的实现。本系统采用 MySQL数据库.在MySQL数据库中,为为电子商务系统创建
39、一个数据库pfoducts1ore。结合系统功能设计,经过数据库分折后,确定本电子商务系统需要有如下9个表:用户表user、管理员表manager、性别表sex、商品表product、商品类别表type 以及推荐商品表recommended、特价商品表bargain、订单表order和订单商品表ordersproduct,然后在productstore数据库系统所需要的9个数据表如下:4.3 本章小结本章对电子商务系统设计,模块图设计系统的功能。从技术、经济、安全和其他等方面进行了可行性分析,最后提出了系统的性能需求,以及数据库的建立。第 5 章 系统实现首先搭建 Struts2+Spring
40、十Hibernate 这3种框架相结合的项日环境,在这个环境中, Struts2负责完成数据处理以及 JSP页面的数据显示, Hibernate 负责操作数据库, 而 Spring 则负责管理Struts2和Hibernate。 5. 1搭建 Struts2+Spring+Hibemate环境首先对Struts2、 Spring 和Hibemate 这3种框架的进行配置,导入所需要的包, 这里不再细述。在Myliclip 开发工具中,创建一个 Web工程,命名为ProductStore的。 搭建好 Struts2+Spring+Hibernate 这三个框架结合的环境。在struts.xml
41、配置文件中,将struts2的管理委托给 Spring,字符编码格式定义为 gb2312并包含struts-dafault.xml 文件。<package>元素的name属性值为默认值dafault 属性值也为默认值 struts-dafault.配置web.xm1文件: 配置好struts.xml文件以及ApplicationCootext.xml 文件以后,还需要在web.xn1文件中添加相关配置。在 web.xm1 文件中,为 Struts2 框架加载核心控制器FilterDispatcher,配置核心 Fi1ter 以及 Filter 拦截的 URL范围等:为 Spring
42、 框架配置</listener><!-Struts相关配置-><filter> <filtre-name>struts2</filtre-name> <filtre-class>org.apache.struts2.dispatcher.FilterDispatcher </filtre-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>/*<
43、/url-pattern></filter-mapping><welcome-file-list><welcome-file> index.jsp</welcome-file></welcome-file-list></web-app>5. 2用户注册模块 在用户注册模块中,主要需要用户注册页面和用户注册处理 Action。用户在注册页面中填写注册信息,提交表単后, Action接收表単传速过来的值,并对数据进行处理,最后返回处理结果。(l)用户注册界面在 webRoot 文件夹下新建 JSP文件enroll.jsp
44、,在该文件中导入Struts2标签库, 然后使用 Struts2框架的表单标签<s:form>创建一个 form表单。 Enroll.jsp 文件的内容代码入下:<% page language =”java”pageEncoding=”gb2312”%><% taglib uri =”/struts-tags” prefix=”/s”%><!-省略-> <s:form action =”enrollAction”> <s:textfield label=”用户名” name=“username”> <s:passw
45、ord label=”密码” name=”userpassword”> <s:password label=”重复密码” name=“username”> <s:textfield label=”邮箱”name=”usermail”> <s:submit value=”注册”></s:submit> </s:form><!-省略->Struts2 在调用 Action中的execute0方法之前,会先调用 Aclion中的 validate0方法。所以,当 Struts2 调用EnrollAction中的 execu
46、te0方法时,会先调用其validate0方法对注册信息进行数据校验。在validate0方法中,用正则表达式对用户的注册信息加以约束检査,如果不符合,则添加相应错误信息。最后,还要对用户名是否已经存在进行判新。添加以上validate0方法后,还需要在struts.xm1 文件中进行配置,在enro11Action 所在的<action>元素下添加代码:<result name=input”>/enro11.jsp</result>检査用户名是否已存在的方法:当申请一个新用户名时,需要判断这个用户名是否已经存在,下面通过这个检查用户名是否存在的方法,使用g
47、etHibernateTemplate()方法中find0方法的用法检査用户名是否存在。使用Hibernate查询语句需要把参数数值直接连接到查询语句中,然后,调用getHibernateTemplate()方法中的find()方法来执行该查询语句5.3产品显示模块在使用Struts2框架设计时,需要在Action中获取数据信息,然后将信息传速到页面。在 Action文件中获取数据,并以某种形式保存气力啊,比如保存在request对象中, 然后在 JSp页面中访间该 Actioa 文件, 通过request对象获取这些信息。 这样,当访问 JSP页面时, JSP 页面会访同Actiom 文件并
48、获取数据信息,然后使用Struts2标签显示数据5.3.1获取畅销产品信息Action下面以本电子商务系统首页中显示的销量持行榜为例。 在这个销量排行榜中显示了销量大于 0且销量排行榜前10位的商品.在src/com,huizhi.action;文件夹下新建Action文件LeftAction.java代码如下:Package com.huizhi.action;Import Javax.servlet.help.HttpServletRequest;Public class LeftAction extends ActionSupport Private ProductManage prod
49、uctmanage; 在上述 Action文件中,首先使用setXXX()方法获取ProductManage类的实例化对象 productManage.XML文件的相关配置内容。然后, 同样在该 Action中实现excute0方法,在execute()的方法中,通过productManage对象调用bestSe11ingProduct0方法,来获取销量排名前十位的产品信息,保存在List集合中。获取request对象, 将该集合保存到request 对象中,由于这里不需要该 Action做任何跳转,所以让execute0方法返回 nu11 值.5.4 购物车模块在前面分析中已经介绍了购物车的
50、重要性,以及主要功能。很多网上购物系统的购物车都是采用Cookie实现的运用Cookie有其优点和缺点,其优点是:购物车有效期长,不受会话控制等。期缺点是: Cookie购物车的实现有局限性,原因是很多网页浏览器都不支持 Cookie,或者被用户自己设置成不支持 Cookie,而且Cookie保存数据本身就存在安全问题,先对 Cookie来讲, Session在安全方面有保障,但有效期短,而且受会话控制.上面所提到的两种实现放置各有优势,这里不做过多比较,本电子商务系统采用 session来实現购物车效果5.4.1 购物车Action用户选择将商品放入购物车时,页面将商品 ID传给购物车Act
51、ion。在Action 中获取商品ID所表示的商品实体对象,并存放到一个List集合中.最后将这个集合保存到session对象中.在 Action文件中, 首先获取request 对象, 在通过request 对象获取session对象,调用request对象的 getParameter方法获取员面中传过来的商品 ID创建一个商品List集合,判断是否已经创建购物车session对象,如果没有创建,则格新建的商晶 List 集合存放到购物车session种,如果已经创建,则将购物率session中保存的信息赋值给该 List,接着判断用户想要放入购物车的商品是否已经在购物车中,如果在,则直接跳
52、转回原界面,如果不在,通过productManage对象调用findProduct()方法来获取商品 iD所对画的商品对象,设置该商品对象的购买数量默认为1 (用户可以在购物车中修改器的买数量)。接下来判断该商品是否为特价,如果是,将商品价格设为特价价格,然后将商品对象放入List集合中,并修改购物车session信息。为了在页面中显示金额,在Action中另外创建一个名为totalMoney的session来保存购物车中商品总金额,最后跳转到原界面。5.4.2购物车页面在商品显示模块中已经介绍看如何在页面中获取并输出request对象中保存的信息。现在通过能车页面来介绍如何获取并输出sess
53、ion対象中保存的信息。在WebRoot文件夹下新建 JSP文件 shoppingCart.jsp在上述 JSP文件中, 同样用<s:iterator>标签来获取session对象中保存的List集合出shopping Bool, tes=”%#session.shoppingProduct.size()>0”来判断session对象中保存的shoppingProduct 集合的size 值是否大于0,如果大于 0(即购物事中有商品),才显示【确定购买】按組。 同时提供了 【修改】和【删除】按钮,使用户对购物车进行管理。5.4.3提交购物车Action用户单击【确定购买】按钮
54、,将调用JavaScript代码中的addOrer()函数,该方法的内容代码如下所示确定购买函数: assOrders()Function addorders() If(confirm(“你确定要购买吗?”) Location.href=”com.huizhi.action/ordersManageAction.action?updateType=add”;代码中的0rdersManageAction,他是在Struts.xml文件中为OrdersManageAction.java文件配置一个name值, XML 文件的相关的配置可参考前面的内容。而action则是 Action文件名的后缀。
55、因为在0rdersManageAaion.java 中,需要进行的订单操作不知是添加订单,所以在这里添加一个参数UpdateType, 并将其属性设置为add,通知0rdersManageAction.java文件要做的订单操作是添加新订单.获取updateType参数值,判断需要进行那种订单操作。如果参数值为add,则为添加订単,然后获取购物车中的商品合集、购物车总金额和登录用户。实例化一个0rders对象orders,为该ordefs对象设置为默认字符串0,即未处理,其totalMoney值为购物车总金额,最后为订単生成一个编号,生成编号的方式再去的是时向字符串加随机数的形式。通过orde
56、rsMmage对象调用 addOrders0方法,向数据库中添加该订单后,返回该订单ID,进行下一步操作,也就是向订单商品表中添加数据。最后要清除购物车session和总金额session,返回逻辑视图字符串 SUCCESS。 5.5购物拦截器有些购物网站在用户将物品放入购物车时,会提示用户需要先登录:也有很多购物网站时在用户提交购物车准各订购时提示用户需要先登录的。 这两种情况没有很大的区别,本网上书店选取前一种方式。当用户想要将商品放入购物车时,判断用户是否已登录,如果投有登录,网页跳转到登陆员面。实现这种效果的方式很多, 比如在ShoppingCartAction.java中进行判断处理
57、.这里选择使用拦裁起来实现这种效果,在实現过程中介绍整截器的使用方法回。上述文件中, UserLoginCheck类继承了抽象控制器类 AbstractInterceptor,并实现了该类的ntercept()方法。在intercept()方法中,先获取MAP 类型的 HttPSessioa 对象session,通过名为1oginUser 的Session来获取用户登录信息.如果已经登陆, 则调用ActionInvocation,的invoke0方法,格控制权交给下一个拦截器,或者交给Action中的execute()方法,实际上也就是说本次拦截通过,程序正常进行。反正则返回逻辑视图字符串login,该字符串对应逻辑视图为 Iogin.jsp的页面,这需要在struts.xml 文件中进行配置,再返回逻辑视图字符串login,也可以采用. 另一种形式return ActioLOGIN两种写法的效果一样.response对象,然后通过requset 对象来获取session对象例。通过session对象来检査是否有管理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 闲置码垛机转让合同范本
- 网签三方协议如何签合同
- 游戏合作合同协议书范本
- 来料加工合同协议书模板
- 消防维保解除合同协议书
- 移门订货协议书合同范本
- 煤炭应急保供协议书模板
- 矿山水库出租合同协议书
- 湛江钢结构施工合同范本
- 自动售货机拍卖合同范本
- 食堂食品安全应急处置方案
- 退出中华人民共和国国籍申请表
- 西方经济学(第二版)完整整套课件(马工程)
- 检验科安全管理制度汇总
- (完整word版)中医学题库
- 英语音标拼读方法讲解
- MT 113-1995煤矿井下用聚合物制品阻燃抗静电性通用试验方法和判定规则
- GB/T 27775-2011病媒生物综合管理技术规范城镇
- GB/T 16841-2008能量为300 keV~25 MeV电子束辐射加工装置剂量学导则
- GB/T 11264-2012热轧轻轨
- 眼镜镜架知识汇总课件
评论
0/150
提交评论