已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业作业(设计)基于JSP+mysql的网上书店设计与实现摘 要 摘要 随着网络的迅速发展,网上购物系统作为B2B,B2C,C2C电子商务的前端商务平台在其商务活动过程中起着举足轻重的作业。网上书店系统能在网络上建立一个虚拟的购物平台,改变传统的购物流程,是购物变得轻松、快捷、安全、方便。JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,同时也会应用相关的Struts框架,并完成一个基于这种技术的网上书店系统。本系统采用JSP、Servlet、JavaBean和JDBC等一些JAVA Web相关技术实现了一个简单的网上购书系统,MVC开发模式可以分离数据访问和数据表现,让开发人员可以开发一个可伸缩性强的、便于扩展的控制器,来维护整个流程。本文正是抓住了这一热点,利用MVC设计模式在JAVA Web上的应用,开发了一个小型的网上购书系统,系统虽然小,但是严格按照MVC设计模式来开发,本系统通用性强,经过简单的修改就可以应用于更广泛的网上购物系统,具有一定的推广价值。 关键词 JAVA Struts Servlet Hibernate JSP 网络编程 电子商务 网上书店AbstractAbstract With the rapid development of Internet, online shopping system as B2B, B2C, C2C e-commerce platform in its front-end business process plays an important operation. Online bookstore system on the network to create a virtual shopping platform, change the traditional shopping process, the shopping becomes easy, fast, safe and convenient. At present JAVA is the hottest programming language for WEB development, This text described the characteristics of JAVA and JSP technology and the state of operating on Internet, It introduced the relationship between them and the important programming method of the double technology, And also show the Struts technology, And work out an online bookstore system base on this kind of technology.In this paper, JSP, Servlet, JavaBean, and JDBC and some other JAVA Web-related technology to achieve a simple online textbook system that versatility, MVC development model can be separated from data access and data performance, so developers can develop a strong scalability, scalable controller, to maintain the entire process.through a simple modification can be applied to a wider range of online shopping system, with a certain extension purchase. Keywords JAVA Struts Servlet Hibernate JSP Web program internet Bookshop目 录第一章 绪论11.1引言11.2 网上书店的历史11.3 网上书店的市场现状1第二章 需求分析12.1需求分析的原因12.2可行性分析1第三章 相关技术介绍13.1开发环境简介13.1.1 MyEclipse简介13.1.2 Tomcat服务器简介13.1.3 MySQL数据库简介13.2其他技术13.3 分层架构核心思想1第四章 概要设计14.1编写目的14.2定义14.3系统结构功能图14.4登录模块设计说明14.5程序描述14.6功能14.7输人、输出项1第五章 详细设计15.1、目的15.2基本设计概念和处理流程15.3整体结构图1第六章 系统功能演示16.1系统功能演示16.2小结1总结1致谢1参考文献1第一章 绪论1.1引言网上购书系统,是一个立足于网络、以书为商品的专业性网上购物网站。系统同时具有买、卖书等功能,为书的流通提供了一个有效的交易平台。本论文中介绍了本系统开发时所用到的环境、工具及技术,网站的需求分析、数据库设计等。最后是系统演示。本系统前台功能主要有登陆、注册、书浏览、购物车、书查询、特价书、购书、订单查询、新书上架等。后台功能主要有用户管理、书管理、书分类管理、图书货源地管理等。1.2 网上书店的历史网上书店又名电子书店,都是利用信息技术、虚拟技术、数字技术、网络技术在互联网或因特网上进行图书贸易的一种新型书店,是 图书出版发行的另一个新型市场。网上书店诞生早,规模大。1969年因特网出现不久就有了线上购书。经过20多年的发展,1997年全世界图书销售中,每5本书就有1本是通过网上书店销售的,占全世界图书销 售总量的20%以上。它已成为网上贸易主力军之一。随着Inter的发展,网上书店的规模不断在拓展,功能也在不断完善。它不仅改变了传统的图书销售方式,也正在改变图书馆文献采访的传统模式与规则及其理论。国外的Web商务系统应用起步较早,所以应用的相对而言领域比较广,网络销售已经在人们生活消费中占有一定比例,Web商务系统比较成熟。人们可以通过网络这个媒体,足不出户就可以搜索自己想要的信息、购买自己需要的商品。电子商务概念首次引入中国是在1993年,第一笔网上交易发生在1996年。1.3 网上书店的市场现状网上书店,或称电子书店,是通过网络技术来完成图书交易的一种电子商务类型。从商务层面这方来面来看,网上书店是由供货渠道、支付系统、物流系统、售后服务系统及配置套的经营管理机制构成的书业企业;从技术层面这方面来看,网上书店是由服务器、商务软件、数据库和计算机技术人员组成的网络企业。网上书店利用信息技术,将出版者、供应商、作者及其他相关环节如银行、运输等连接在一起,改变了传统图书运作流程与交易模式,刷新了市场空间,丰富了服务内涵,降低了运营成本,带来了书业界的流通革命。其业务将逐步侵透到选题开发、网络出版、版权贸易等等方面,进而推动整个出版业的变革。目前我国网上书店的主要类型有:由国有新华书店投资建设的网上书店。一些有实力的传统书店,都会建立自己的网站,利用网络促销,争取更多的市场份额。它们主要依托传统的图书大厦的图书储存进行网络售书,属于新华书店上网或上网的书店。由出版社建立的网上书店。因为网络出版的缘故,出版社是最早接触网络的,我国500多家出版社中,现已建立网站的有349家,占比例的62%。比较好的出版社营销网站建设的特点是:以出版社本社出版物为网站核心,突出特色,访问速度快捷,信息及时更新,内容的合理编排以及完善的检索能力,具有较强的交互能力。外贸出版公司投资建设的网上书店。这一类网上书店立足公司主营业务,主要对海外进行图书销售,销售量逐渐增加。非出版业资本投资建设的网上书店。如卓越网。就目前情况而言,上述几类的网络书店可以分为两大类。一类是没有实体书店的网上书店,以卓越网为代表,还有一类是以实体书店为支撑的。第二章 需求分析2.1需求分析的原因针对于现在社会上对网络书店的需求,为了开发出真正满足用户需求的产品网络书城,首先必须要知道客户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能满足用户需求的程序只会给客户带来失望,给开发带来麻烦。虽然在可行性研究阶段已经粗略了解用户的需求,甚至还提出了一些可行的方案,但是,可行性研究的基本目的使用较小的成本在较短时间内确定是否存在可行的解法,因此,在需求分析阶段要确定系统必须完成哪些工作,也就是对系统提出完整、准确、清晰、具体的要求。 网上购书系统,是一个立足于网络、以书为商品的专业性网上购物网站。系统同时具有买卖书等功能,为书的流通提供了一个高效的交易平台。从经济上考虑,投资少,回收快,而且无所谓存货,所以特别适合小商店和个人在网上创业。从启动资金来看,传统的地面开店,门面租金加装修费,还有首批进货资金,少说也需要几万元的启动资金。而网上开店所需的启动资金却少得多。从技术上考虑,Struts为Web 应用提供了一个通用的框架,使得开发人员可以把精力集中在如何解决实际业务问题上。此外, Struts 框架提供了许多供扩展和定制的地方,应用程序可以方便的扩展框架,来更好的适应用户的实际需求。除此以外,Struts对新技术的兼容性也很好,可以根据实际需要进行系统升级。另外,网上书店销售时间不受限制,无需专人看守,却可时时刻刻营业;销售地点不受限制,小商店也可做成大生意。2.2可行性分析开发任何一个基于计算机的系统都会受到时间和资源的限制。因此在开发软件项目之前,必须根据可利用的时间和资源等条件进行可行性研究。可行性研究工作的主要任务不是研究如何解决问题,而是要用最小的代价在最短的时间内确定该项目是否具有开发的可行性。1. 技术可行性:本网站采用JSP、Servlet、JavaBean和JDBC等一些JAVA Web相关技术实现。Java语言是一种优秀的编程语言。它最大的优点就是平台无关性,在Windows 、Linux以及其它平台上,都可以使用相同的代码。“一次编写,到处运行”的特点,使其在互联网上广泛采用。JSP+JavaBeans几乎可以在所有平台上通行无阻,从一个平台移植到另外一个平台,JSP和JavaBeans甚至不用重新编译。除此之外Java语言还提供了一些有用的新特性,使得使用Java语言比C+语言更容易写出“无错代码”。2. 经济可行性:选择图书做本购物系统的主打商品,因为图书属于折扣大利润丰厚的商品,而且网上书店不需要门面等成本开销,故大大降低其价格。加之传递方便、耐存储,故网上卖书具有比传统书店更大的成本优势。有较大的客户群。3. 系统需求分析现在Internet上随处可见网上商城、网上书店等电子商务网站,让消费者足不出户就可购买到想买的商品,不仅方便了消费者,也让拥有电子商务网站的企业能及时向广大客户推销产品、构建企业形象、赢得利润。电子商务系统与传统的面对面的营销方式相比,具有不可比拟的优势,如销售成本与物流大大降低、信息传输及时等。第三章 相关技术介绍3.1开发环境简介 在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统?以目前常用的开发语言来讲有C/C+、.NET技术,JAVA、 Visual Basic几种。还有Eclipse,、Borland JBuilder等,这些并不是程序语言,而是程序语言在建构程序时的“集成开发工具”,不过它们在开发设计的过程中也占有相当重要的角色,因为选用正确的集成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决定性的影响。基于以下几点,选择JAVA语言开发技术。1、就执行平台而言,必须考虑的问题之一是用户可能使用的操作系统。用户可能使用的是Windows Linux。JAVA语言具有平台无关性,可以不需要任何修改就可以运行在支持JAVA的任何计算机上。2、JAVA的Swing 组件开发技术可以开发丰富的图形界面,并且Swing API类提供了丰富的外部接口和方法,可以方便实现系统功能。3、就项目开发而言,纯粹的面向对象,加上数量巨大的类所提供的方法(函数)库的支持,使得利用Java开发各种应用程序,可以说是易如反掌。此外,在程序除错、修改、升级和增加新功能等方面,因其面向对象的特性,使得这些维护也变得非常容易。4、异常处理,为了使Java程式更稳定、更安全,Java引入了异常处理机制。能够在程序中产生异常情况的地方,执行相对应的处理,不至于因突发或意外的错误造成执行中断或是死机。通过这种异常处理,不仅能够清晰地掌握整个程序执行的流程,也使得程序的设计更为严谨。5、高性能,Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C+的性能没什么区别。6、网络功能,Java可以说是借助因特网而重获新生的,自然具备编写网络功能的程序。不论是一般因特网局域网的程序,如Socket、Email、基于Web服务器的Servlet、JSP程序,甚至连分布式网络程序,如CORBA、RMI等的支持也是非常丰富的,使用起来也很方便。7、源回收处理,GarbageCollection是由JVM对内存实行动态管理的。程序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些烦琐且危险的操作全部交由JVM去管理。让我们能够更专心地编写程序,而不需要担心内存的问题。内存的统一管理,对于跨平台也有相当大的帮助。本网站用到的开发环境是MyEclipse平台、Tomcat服务器、MySQL数据库。3.1.1 MyEclipse简介MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。 在结构上,MyEclipse的特征可以被分为7类:JavaEE模型、WEB开发工具、EJB开发工具、应用程序服务器的连接器、JavaEE项目部署服务、数据库服务、MyEclipse整合帮助 ,对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。3.1.2 Tomcat服务器简介Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat最初是由Sun的软件构架师詹姆斯邓肯戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目OReilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而OReilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)1的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。 Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的管理 工具,并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现,当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数,user、group、role的多种数据库管理等。在后续的版本中,这些功能将得 到很大的扩展,但现有的功能已经非常实用了。3.1.3 MySQL数据库简介MySQL是一个真正的多用户、多线程SQL数据库服务器,它是一个客户机/服务器结构的实现。MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL 主要目标是快速、健壮和易用。关键的是它是免费的,可以在Internet上免费下载到,并可免费使用。MySQL 对于一般中小型,甚至大型应用都能够胜任。数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。 数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。 物理数据层。它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。 概念数据层。它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。 逻辑数据层。它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。 数据库不同层次之间的联系是通过映射进行转换的。数据库具有以下主要特点: 实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。 减少数据的冗余度。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。 数据的独立性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。 数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。 3.2其他技术3.2.1Java语言简介Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java平台由Java虚拟机(Java Virrtual Machine)和Java应用编程接口(Application Programming Interface、简称API构成)。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台应经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(Java Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。Java程序可以获取网络上结点的图象、声音、HTML文档及文本等资源,并可以对获得的资源进行处理。例如Java程序可以每隔一定时间读取某结点提供的最新数据,并以图表的形式显示出来。在编程处理上,一般先生成一个URL类型的对象,然后用 Java中相应的方法(method)获取该对象所代表的资源。3.2.2 Structs 简介简单的来说,Structs是一个基于SUNJ2EE平台MVC框架,很好的实现了MVC模式Structs。通过一个配置文件,就可以把整个系统的各个部分联系起来。随着JSP与Servlet技术大量应用于Web为基础的应用程序,Java开发人员群体认为应该以较佳之模式以提升Web应用程序之可维护性与重新实用型。早期JSP规格书中曾例举两种可行之JSP应用架构,分别为Model1与Model2。在Model1架构中,JSP直接处理Web浏览器送来之请求,并辅以JavaBean处理应用相关逻辑。Model1架构单纯编写比较容易,但在Model1中JSP可以同时肩负View与Controller角色,两类程序代码有可能混杂而不易维护。而Model2中将Servlet纳入架构中扮演前端Controller角色,将Web浏览器送出之前请求集中送至Servlet。Servlet可集中管理使用者登入,权限控制,多国语言转型等前置处理,再视需求转向给对应之JSP处理。Model2中采用了较佳之MVC模式,但增加编写复杂度。Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。 关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。3.2.3 Servlet技术简介Servlet是使用Java Servlet 应用程序设计接口编写的Java程序。它源于请求/响应模式,如它可以接受来自客户端浏览器的Http请求,并产生一个响应,然后将这个响应发送到客户端。Servlets有不少的优点: 效率:使用传统的CGI编程,对于每个HTTP请求都会打开一个新的进程,这样将会带来性能和扩展性的问题。使用Servlets,由于Java VM(Java虚拟机)是一直运行的,因此开始一个Servlet只会创建一个新的Java线程而不是一个系统进程功能强大-相对于传统的CGI,由于有着广泛的Java API支持,Servlets可做到传统CGI很困难甚至不能做的事。Servlets可轻松做到共享数据、维护信息、跟踪session等。安全-Servlets通过Servlet引擎在一个受到限制的环境下运行,与Web浏览器对applet的限制相似。这可以避免恶意Servlets的破坏。花费-对于个人或者流量不大的站点来说,有不少“免费”或者低价的web服务器可供选择。如果你已经有一个web服务器,你可以很容易加入Servlet技术的支持,而且价格很便宜。可移值性-Sevlet API得益于Java平台,这是一个相当简单的API,几乎被所有的Web浏览器支持,因此Servlets可以轻松地在平台间移植,而且通常都无需作任何的修改。Servlet通过创建一个框架来扩展服务器的能力,以提供Web上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。装入后,Servlet继续运行直到其它客户机发出请求。Servlet的功能涉及范围很广。3.2.4 Struts优缺点优点有: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.2. 有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。4. 提供Exception处理机制 .5. 数据库链接池管理6. 支持I18N缺点: 一、 转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。二、 Struts 的Action必需是threadsafe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。三、测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。四、 类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。五、 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。六、 前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。七、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。八、 对Action 执行前和后的处理. Struts处理Action的时候是基于class的hierarchies,很难在action处理前和后进行操作。九、 对事件支持不够. 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。 3.2.5 Struts的工作流程下图是Struts的工作流程,所有的请求都提交给ActionServlet来处理。图3-2-5-1ActionServlet是一个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的包装,对应于一个url ActionForm使用了ViewHelper模式,是对HTML中form的一个封装。其中包含有validate方法,用于验证form数据的有效性。ActionForm是一个符合JavaBean规范的类,所有的属性都应满足get和set对应。对于一些复杂的系统,还可以采用DynaActionForm来构造动态的Form,即通过预制参数来生成Form。这样可以更灵活的扩展程序。 ActionErrors是对错误信息的包装,一旦在执行action或者form.validate中出现异常,即可产生一个ActionError并最终加入到ActionErrors。在Form验证的过程中,如果有Error发生,则会将页面重新导向至输入页,并提示错误。 Action是用于执行业务逻辑的RequsestHandler。每个Action都只建立一个instance。Action不是线程安全的,所以不应该在Action中访问特定资源。一般来说,应改使用 Business Delegate 模式来对Business tier进行访问以解除耦合。Struts提供了多种Action供选择使用。普通的Action只能通过调用execute执行一项任务,而DispatchAction可以根据配置参数执行,而不是仅进入execute()函数,这样可以执行多种任务。如insert,update等。LookupDispatchAction可以根据提交表单按钮的名称来执行函数。3.2.6 Hibernate简介随着计算机应用软件的发展,应用程序逐渐由单层体系结构发展为多层体系结构。其中,三层结构是目前典型的一种应用软件结构,如图1左。图1表述层:提供与用户交互的界面,如GUI(图形用户界面),web页面等;业务逻辑层:负责各种业务逻辑,直接访问数据库,提供对业务数据的保存、更新、删除和查询操作;数据库层:负责存放管理应用的持久性业务数据三层结构的特点是:所有下层向上层提供调用的接口,具体实现细节对上层透明。层与层之间存在自上而下的依赖关系,即上层会访问下层的API,但下层不依赖于上层。 Hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于Hibernate网上争论很多,有人说其为工具,有人说其为框架,我相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。Hibernate是采用ORM映射机制的持久层开发工具,它是JAVA应用和关系数据库之前的桥梁,负责JAVA对象和关系数据之间的映射。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API,在JAVA应用中使用到Hibernate包含如下步骤。1.创建Hibernate配置文件2.创建持久类3. 创建对象关系映射文件4.通过HibernateAPI编写访问数据库的代码如果想了解Hibernate或者是要学习它的人必须要首先了解两个比较重要的概念:POJO:在Hibernate中理解为数据库表所对应的Domain Object,如果从子面上理解就是无格式普通JAVA对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层面上看,POJO作为数据实体的对象化表现形式,也成为实体。 ORM:ORM可以理解成一种机制也可以理解成一种模式,对象关系映射,我个人觉得如果想理解它可以和MVC比较,模型视图控制。ORM是把对象和关系数据库映射到一起,而MVC是把视图和模型控制在一起。创建Hibernate的配置文件Hibernate从中读取和数据库连接的相关信息,这个配置文件应该位于应用的classpath中,主要有两种形式XML格式和.Properteis信息文件。创建持久化类就是指需要被Hibernate持久化到数据库中的类,持久化类通常都是模型中的实体类,符合JavaBean的规范,包含一些属性,以及与之对应的get、set方法。3.3 分层架构核心思想对于一个业务系统而言,系统研发的目标是为特定业务提供支持,业务逻辑往往是系统的核心,将业务逻辑与数据访问逻辑分离是很重要的。流行的MVC三层开发结构图:图3-1 MVC模型图分层的好处:1.可以屏蔽该层隐藏的复杂性,如业务逻辑层可以不必清楚如何与数据库建立连接,如何执行一个sql查询,只需调用数据访问层提供的接口就行。 2.底层实现变动的时候,尽量避免对上层结构产生影响3.分层的本质是分离职能3.3.1 数据库设计表3-3-1 管理员信息表(admin)表3-3-2 销售图书记录表(cart)表3-3-3 会员买书详细记录表(cartselectedmer)表3-3-4 图书类别表(category)表3-3-5 评论表(leaveword)表3-3-6 会员信息表(member)表3-3-7 会员类别表(memberlevel)表3-3-8 图书详细信息表(merchandise)表3-3-9 订单表(orders)3.3.2 控制器设计与实现在Structs中使用的控制器是Action,详细的实现如下:1对struts-config.xml文件的各个标签如何配置要绝对清楚,因为这是struts的关键文件,我遇到的相当多的错误都是这里的问题。2对于struts中的一些常用的类,象 Actionform、Validatorform、DynaActionform Action、DispatchAction、SwitchAction ActionMapping、ActionForward 要知道它们的功能及如何使用,唯一的办法就是多写程序。3对于struts的标签库,要知道是在服务器端执行的,虽然样子和html语言的元素很象,但决不是一回事。标签库内容很多,用不着都弄明白,但有些是必须要会用的: Html库基本都要掌握 Bean库:define、message、parameter、write Logic库:iterate,其他虽然不是必需的,但如果能灵活使用,也有不少好处 其它库我在实际中很少用,应该不是太重要4尽量熟悉struts的执行流程,ActionServlet都做了哪些工作,如果大家有兴趣的话,就研究源代码中ActionServlet类的init和process方法,搞懂这个之后,对struts的理解自不可同日而语。5目前还没看到中文的比较全面系统的资料,我一直看的是Programming Jakarta StrutsStruts In ActionMastering Jakarta Struts这三本书,入门时是比较费劲,习惯以后也就没什么了。6对于错误的调试是绝对让人头疼的问题,有的甚至只是显示一个白页。我通常用的办法是在代码中加一些System.out之类的语句,逐步确定错误的位置。其实关键还是要沉住气,有时一个错误花半天时间才解决,等错误处理多了,水平自然会提高。7在论坛中大家多多交流,干计算机这一行闭门造车是绝对不行的,相信这个道理大家都知道。当初我注册这个网站时,是绝对的菜鸟。 如果挨个往邮箱里发太麻烦了,按斑竹的意思我把内容贴了出来,内容不少,大家耐心看吧 ActionMapping类 将特定请求映射到特定Action的相关信息存储在ActionMapping中,ActionServelt将ActionMapping传送到Action类的execute()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null. ActionMapping的方法: public ExceptionConfig findException(Class type) ,查找异常对象 public ActionForward findForward(String name) 可在映射中动态添加ActionForward: public String findForwards()找到一个Action可以使用的actionForward列表 public ActionForward getInputForward() 得到本action的输入ActionForard. ActionMapping继承于org.apache.struts.config.ActionConfig Action类 Action类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后,ActionServlet会: 1.为这个请求选择适当的Action 2.如果需要,创建Action的一个实例 3.调用Action的execute()方法 如果ActionServlet不能找到有效的映射,它会调用默认的Action类(在配置文件中定义)。如果找到了ActionServlet将适当的ActionMapping类转发给Action,这个Action使用ActionMapping找到本地转发,然后获得并设置ActionMapping属性。根据servlet的环境和被覆盖的execute ()方法的签名,ActionServlet也会传送ServletRequest对象或HttpServletRequest对象。 所有Action类都扩展org.apache.struts.action.Action类,并且覆盖类中定义的某一个execute ()方法。有两个execute ()方法: 处理非HTTP(一般的)请求: public ActionForward execute (ActionMapping action, Acionform form, ServletRequest request, ServletResponse response) throws java.lang.Exception 处理HTTP请求: public ActionForward execute (ActionMapping action, Acionform form, HttpServletRequest request, HttpServletResponse response) throws java.lang.Exception Action类必须以”线程安全”的方式进行编程,因为控制器会令多个同时发生的请求共享同一个实例,相应的,在设计Action类时就需要注意以下几点: 不能使用实例或静态变量存储特定请求的状态信息,它们会在同一个操作中共享跨越请求的全局资源 如果要访问的资源(如JavaBeans和会话变量)在并行访问时需要进行保护,那么访问就要进行同步 Act
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《行政管理学》历年考研真题
- 广东省7月自学考试5现代公司管理试题答案
- 2023白云区社区工作者考试真题解析
- -2工业企业管理复习题
- 2025年吉林公务员行测考试真题及答案-甲级
- 健康疾病与安全用药试题2
- 山西水利职业技术学院教师招聘考试历年真题库
- 2025年大学生网络安全知识竞赛题库及答案(十一)
- 2025年安全员B证考试试卷附答案详解【黄金题型】
- 公务员行测资料分析基础题库及答案
- 施工现场各工种安全技术操作规程
- 2025年全国高校辅导员职业技能大赛笔试测试卷及参考答案(国赛版)(共3套)
- 2025年河北美术学院行政科员、辅导员招聘16人考试笔试参考题库附答案解析
- 北京离婚协议书模板
- 2025年浙江省采购合同范本
- 香港雇佣劳务合同(标准版)
- 全国大学生职业规划大赛《飞机电子设备维修》专业生涯发展展示【高职(专科)】
- 2025全国交管12123学法减分必考题库和答案(完整版)
- 2025年中国未改性液态环氧树脂行业市场分析及投资价值评估前景预测报告
- 2025-2030京津冀区域氢能源产业发展规划与政策导向分析报告
- 临时施工占道施工方案
评论
0/150
提交评论