基于JAVA的宠物网站的设计与实现

本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在SpringStruts2框架之上,前台使用JSP作为开发语言,后台使用MySQL数据库管理系统对数据进行管理,开发环境选用MyEclipse,应用服务器采用Tomcat

宠物网站系统为广大用户实现便捷的购买宠物的功能,实现宠物商店的网络化管理。网站前台系统主要负责与用户打交道,实现用户的注册、登录、宠物预览、提交订单等功能。网站后台系统主要实现管理员登录、会员中心、新闻动态、完成订单、系统维护等功能。结果表明,本系统能够实现所需的功能,并且运行状况良好。

本文分为六个部分。在绪论里首先分析了课题的研究背景与研究现状;第二章介绍了本系统开发采用的技术;第三章根据软件开发流程,对系统进行可行性分析和需求分析;第四章为系统概要设计,本章提出系统总体功能模块的设计,并对数据库的结构进行设计;第五章着重介绍各个功能模块的实现方案;最后,第六章介绍系统单元测试和性能测试的设计,以及对测试结果的分析。

宠物商店网站系统;JSP;Mysql数据库;SpringStruts2框架

目    录

摘 要..................................................................................................................... i

ABSTRACT........................................................................................................... ii

1绪论.................................................................................................................... 1

1.1研究的背景和意义..................................................................................... 1

1.2国内外研究现状......................................................................................... 2

1.3研究内容和步骤......................................................................................... 4

2基本技术方案...................................................................................................... 5

2.1系统采用的技术......................................................................................... 5

2.1.1JSP技术.......................................................................................... 5

2.1.2 JavaScript技术............................................................................ 5

2.1.3Servlet技术................................................................................... 6

2.2基于B/S的WEB应用体系结构................................................................. 7

2.3MyEclipse简介........................................................................................... 9

2.4Tomcat简介.............................................................................................. 11

2.5Struts 2框架.............................................................................................. 11

2.6 Spring框架.............................................................................................. 14

3.系统需求分析.................................................................................................... 21

3.1功能需求分析.......................................................................................... 21

3.2系统设计规则.......................................................................................... 22

3.3系统的可行性分析................................................................................... 22

3.3.1技术可行性.................................................................................... 22

3.3.2经济可行性.................................................................................... 22

3.3.3操作可行性.................................................................................... 22

3.3.4 技术可行性分析............................................................................ 23

3.3.5 运行可行性分析............................................................................ 23

3.3.6 经济可行性分析............................................................................ 23

3.4运行环境................................................................................................. 23

4.宠物网站系统概要设计...................................................................................... 24

4.1系统功能结构图....................................................................................... 24

4.2系统交互图.............................................................................................. 25

4.3数据库设计.............................................................................................. 26

4.4系统概要设计.......................................................................................... 29

4.4.1系统的前台.................................................................................... 29

4.4.2系统的后台.................................................................................... 33

5.系统的详细设计与功能实现............................................................................... 35

5.1应用层配置.............................................................................................. 35

5.2登录功能的实现....................................................................................... 36

5.3注册功能的实现....................................................................................... 37

5.4商品管理功能的实现................................................................................ 38

5.5订单管理模块的实现................................................................................ 40

5.6会员管理模块的实现................................................................................ 40

6.测试与性能分析................................................................................................ 41

6.1系统测试目的与意义................................................................................ 41

6.2测试环境................................................................................................. 42

6.3测试过程................................................................................................. 42

6.4测试的主要内容及结果............................................................................ 43

总结与展望.......................................................................................................... 45

参考文献.............................................................................................................. 46

致谢..................................................................................................................... 47

附录:英文翻译................................................................................................... 49

1.英文原文........................................................................................................... 49

2.中文翻译........................................................................................................... 54

1绪论

1.1研究的背景和意义

随着社会的进步,人民生活水平的提高,特别是近些年来,宠物以突飞猛进的速度进入到百姓家里,成为人们生活中重要娱乐内容之一。以前宠物只是贵族人的娱乐项目,迄今,我国已经把宠物作为一种生活的方式已得到普遍认可,伴随着人民精神文明的提高,越来越多的宠物已经和我们成为了好朋友。但是,我们该怎么和他们去相处,该怎么样去呵护他们,毕竟他们和人类还有很大的区别,我们应该给他们用什么样的东西?我们应该给他们吃些什么好呢?大多数人都不知道,他们只是简单的知道应该像照顾孩子一样去照顾他们,但是他们并不会说话,甚至有些人并不会把他们当作孩子来呵护!由此可见宠物商品的相关信息已经成为重要的话题。

宠物作为我们人类的友好的朋友动物是我们人类获得快乐幸福与健康的一个重要来源,而且饲养宠物可以让人们的生活的更丰富多彩,更加幸福充实,同时陪着宠物运动对身体有很大好处能够有效的降低身体里血压和血脂,在当前越发竞争激烈的社会中可以提供良好的精神支持特别当我们遇到挫折时,我们可以通过与宠物的交流,调节我们的心情有助于我们的心理健康管理,缓解我们生活中遇到的各种压力从而提高工作上的效率。另一方面养可爱的宠物可以培养我们后代的责任心和爱心以及社会社交能力。当我们的孩子与狗狗愉快的玩耍时,狗狗可以传递许多正能量。而且最关键的是养宠物可以保护我们的家庭财产安全,可以起到家庭防止被盗窃保护作用使我们整个家庭有一种安全放心感。宠物也可以给我们以及后代带来无限的欢乐乐趣成为幸福和快乐的源泉,并能够帮助人们积极出去促进进行体育锻炼,给我们提供了许多人与他人相互沟通交流的机会。目前养宠物的人数增加的非常迅速,越来越多的宠物信息的网站应运而生。将传统宣传与日益成熟的网络宣传结合在一起,打造一个兼具传统和电子商务特色的宠物销售网站,极具意义。

随着电子商务的发展趋势日趋成熟伴随着社会发展的必然如何面对电子商务方式、以及如何适应数字化生存并积极参与电子商务时代的国际竞争中取得良好的机会。这是关系到每一个公民、每个公司企业和部门及国家发展与生存的重要的战略问题,而且也是我们国家管理部门现在应该规划、并鼓励其大力发展的关键问题。

目前随着我们的科学技术的不断的发展提高,我们的计算机科学水平日益发展成熟,它给我们带来的好处已被我们深刻了解,而且它已经在我们人类生活社会的各个领域范围内发挥着越来越关键的作用。这主要归功与因为计算机商品信息具有着多人工管理所不具备的优势,比如:检索迅速、查找方便、可靠性高、存储量大、保密性良好等。这些优势极大的提高了信息管理的速度,这也正是将来公司企业的科学化、正规化管理,和世界接轨的至关重要的条件。所以,我们急需研制出开发一套宠物商品网站系统对有效管理相关信息是非常必要的

1.2国内外研究现状

目前社会由于随着人们的生活水平的日益提高改善以及城市化速度的快速向前发展以及城市家庭规模的缩小,宠物慢慢的成为我们生活中的关键部分。根据一些资料显示,而今中国都市拥有宠物数目已经超过1亿只,并且其数量增加速度越来越快,如日中天的宠物市场行业热吸引了越来越多的人的关注!接下来我们将大概的阐述我国目前宠物行业的发展现状。由此带来的问题和建议以及发展前景。

最近这些年计算机和互联网建设获得了高速的发展。在中国,互联网已经是广大人民生活的一部分。现在中国社会提倡互联网加,互联网与传统行业结合,以提供效益和竞争力。使用计算机和互联网对线上销售平台进行管理,它有着很大的价值。同时有着特有的功能比如:检索快速、查看方便快捷、效率高、成本低、存储数据量大、使用寿命长、并且沟通成本低等,这些优点能为商品销售提供极大的便利。而且只要销售网站设计合理,就可以为手机厂商添加新的销售渠道,减少手机产品的库存,利用网络的共享、互动的优点,结合实体销售的优点,借助数据库管理技术实现手机产品网上销售规范化、个性化、人性化。宠物主要是以狗、猫为主。我们以狗为例,现在为什么社会越来越多的人喜欢它而且愿意养它呢?狗起源于狼,目前已经得到了共识,但围绕着具体的发源地和时间则是众说纷纭。到目前为止,最早的狗化石证据是来自于德国14000年前的一个下颌骨化石,另外一个是来源于中东大约12000年前的一个小型犬科动物骨架化石。这不过养宠物对我们人类来说有诸多的好处,比如说以下几个方面

1日常生活中我们可以和狗狗玩耍,增加许多生活中的乐趣

当我们工作或学习一天后,带着浑身疲惫的回到家中,看见绕膝承欢的小狗后,一切烦恼忧愁不愉快都抛到到脑后。目前有很多老人,很多家里只有一个儿女,而且儿女长期在外地工作不在身边,养一个狗或猫,能够给老年人带来很大的精神寄托,减少他们孤独的感觉,重新帮助他们对生活的信心。

宠物也可以帮助小的孩子一颗积极纯洁向上的心,而且根据有关资料显示,狗狗也对治疗儿童痴呆症和自闭症等疾病都有莫大的帮助,每年都有很多的志愿者,带着他们的自己的狗狗到孤儿院或儿童心理疾病治疗中心去帮助那里的孩子,给哪里的孩子带来了许多快乐。甚至连一些患有高血压或者心脏病的病人靠和狗狗和猫咪的交流玩耍可以降低血压和减少心脏病的复发。

2:宠物在救援社会活动中也扮演着至关重要的角色

  狗狗在我们社会中扮演者原来越重要的角色,狗因为天生具有良好的嗅觉,它的嗅觉极其发达和灵敏,利用此特性可以发掘猎物,枪支,弹药等。有专门的警犬用于帮助警察破案,而且发挥着至关重要的作用。

这些年来,由于数据仓库技术,网络信息技术,电子商务信息技术的飞速发展,可视化技术已经涉及到人们生活的各个部分,人们提出进一步定义数据可视化概念,特别注重在可视化大型数据库或数据仓库中的可视化。这是在非空间数据领域中应用可视化技术,使人们不需要束缚于通过关系数据表来研究和理解数据,而且在一个比较直观的方式下查询数据和相关结构之间的关系。在当今社会随着互联网的高速普及,电子商务成为热点,由于淘宝和京东的存在,商家传统的销售渠道受到了极大的挑战,利润降低并且销量下降,传统的模式的商家情况不容乐观。而在线网络销售网站比实体店铺具有更高的优势,只需要很少的人工和互联网环境就可以实现在线购物,用户可以直接从网上查看购买所需要的网络产品,同时网络销售网站提供了广泛和快捷的搜索途径,方便用户查找,分类精确,购物良好、风险小,完善了消费体验。所以手机销售网站受到传统模式企业的关注,并且纷纷开通在线手机销售网站。消费者在网站注册后可以浏览网站信息、按需要搜索网络产品、找到想购买的产拼后通过下定单实现用户的在线购买,使交易更加迅速、准确;管理员登录后可以管理用户、信息和定单等实现系统的更新维护。

图1-1     到2015年为止中国市场宠物产业规模现状

1.3研究内容和步骤

本文主要分为六个章节,第一部分为前言,主要介绍了课题背景、研究意义、国内外研究现状、课题的研究方法、技术路线以及本文研究的主要内容等。

第二部分为相关技术简介,主要介绍了JSP技术、MyEclipse、Tomcat、以及Oracle数据库等。

第三部分为系统分析,主要介绍了可行性分析、包括技术可行性、经济可行性、操作可行性等。

第四部分为需求分析,主要进行了系统的功能需求分析和非功能需求分析等。

第五部分为系统概要设计,主要介绍了系统设计过程。

第六部分为系统详细设计,对系统详细设计实现进行了介绍。

第七部分为测试,主要对系统功能进行了测试。

2基本技术方案

2.1系统采用的技术

2.1.1JSP技术

Jsp技术sun倡导并联合其它公司创建的动态生成HTML,xml或其他文档的技术规范,JSP是一门技术规范,也是一门脚本语言,在Jsp中我们可以使用特定语言即Java语言编写html,xml,以及其他文档的编写规范。

图2.1.1 项目中Jsp部分的代码

(1)Jsp拥有java语言的所有特性,列入面向对象,健壮,安全,可移植,高性能,多线程等。

(2)Jsp运行与jsp的容器之中,比较典型的有tomcat

(3)在开发项目过程中,jsp文件会转换成servlet文件,servlet会在转换成相应的class文件。

(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下

(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外。

2.1.2 JavaScript技术

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了JavaScript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

2.1.3Servlet技术

Servlet是servlet加applet的缩写,applet是运行Java客户端中的小程序,java诞生的时候也就是因为applet而闻名于世,不过现在applet现在很少有人使用了,而servlet在不断的发展和更新之中,现在已经成为很多技术的基础比如spring和strutes2等等。Servlet本质上也就是JAVA类,所以在编写时要尊崇java规则,不过servlet与普通的java类也有所不同,比如说,它没有main方法,他是靠服务器所运行的,它的创建和销毁都是由它自己的容器说产生的。这里说的容器我们这的是类似于tormat服务器。有自己的servlet规则,因此他有一些普通java类所不具有的特性。Servlet与http是紧密联系的,所以使用servlet可以处理所有与HTTP相关的类容,这也是servlet广泛应用的原因之一。

图2—1 项目中servlet 的代码

我的项目中几乎每一个JAVA文件都要用到servlet,其中我们使用到的最主要的方法为service(httpServlet Request,httpServletResponse)方法。

图2—2 项目中service 的代码

通过request与response的来实现前台与后台之间的数据传输。我们可以在xml文件中配置servlet属性,其中servlet用来注册个servlet,而它有两个主要元素一个是servalet—name和servlet-class,前者用来定义servlet的名称,后者用来确定servlet的完全限定名,还有映射servlet-mapping标签。下面是servlet的主要流程图

图2 servlet的主要流程图

Servlet的生命周期主要有service,init,destroy等。

使用Servlet的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。Servlet是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2002年3月成为ASF的顶级项目。它通过采用Java ServletJSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。它的优点在于:

(1),Servlet基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程;

(2),使用OGNL进行参数传递;

(3),强大的拦截器;

(4),易于测试;

(5),易于扩展的插件机制;

全局结果与声明式异常。

2.2基于B/S的WEB应用体系结构

Web,全称为World Wide Web,缩写为WWW。Web有许多译名,诸如环球网、万维网、全球信息网等。简单地说,Web是一种体系结构,通过它可以访问分布于Internet主机上的超文本页面。这一说法包含以下两层含义:第一, Web是Internet提供的一种服务。 第二,Web是存储在全世界Internet计算机中、数量巨大的文档的集合,或者可以说,Web是世界上最大的电子信息仓库[7] [8]

Web上的海量信息是由彼此关联的文档组成的,这些文档称为主页或页面,它是一种超文本信息,使其联接在一起的是超链接。

Web的内容保存在Web站点中,用户可以通过浏览器访问Web站点。因此,Web是一种典型的基于B/S的体系结构。

工作过程:如下图2-1所示描述了Web的工作原理。

图2-1 Web的工作原理

客户端浏览器的主要作用是向Web服务器发出请求,当接到Web服务器传送回来的数据以后,对这些数据进行解释和显示[14]。浏览器以URL为统一的定位格式,使用超文本传输协议HTTP接收采用HTML语言编写的页面,其基本结构如下图2-2所示:

图2-2 使用超文本传输协议HTTP接收采用HTML语言编写的过程

用户通过键盘或鼠标发出请求,该请求由浏览器中的控制器接收、检查并分析用户输入,根据用户请求执行相应动作。如果用户请求可以在本机解决,例如浏览已存在本机的页面,则输出到HTTP解释器或其他解释器,解释后通过驱动程序送入显示器显示。如果用户请求不能在本机解决,则通过HTTP客户机或其他客户机及网络界面与远程服务器通信,由远程服务器解决用户请求,将用户需要的HTML文档送回,然后通过HTTP解释器或其他解释器,解释后通过驱动程序送入显示器显示。

目前两大主流浏览器是Netscape公司的Netscape Communication(简称NC)和Microsoft公司的Microsoft Internet Explorer(简称IE)。在使用这两种浏览器运行HTML文档时,只需在地址栏中输人文件的URL即可。NC和IE这两大浏览器可执行的程序并不完全相同

2.3MyEclipse简介

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括完备的编码、调试、测试和发布功能,支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate[1]。

在结构上,MyEclipse的特征可以被分为7类:

1. J2EE模型

2. WEB开发工具

3. EJB开发工具

4. 应用程序服务器的连接器

5. J2EE项目部署服务

6. 数据库服务

7. MyEclipse整合帮助

MyEclipse是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。根据官方最新消息,MyEclipse 2013已经正式发布!MyEclipse 2013支持HTML5、JQuery和主流的Javascript 库。随着MyEclipse 2013支持Html5,你可以添加音频、视频和API元素到你的项目,从而为移动设备创建复杂的Web应用程序。你甚至还可以通过HTML5 可视化设计器设计令人难以置信的用户界面。同时,随着MyEclipse 2013支持JQuery,你可以通过插件提升性能,并添加动画效果到设计中。myeclipse 10.0系列 主要 有以下 改进:首先 在eclipse 3.7.2(Indigo)基础上构建最大的特色是 :  完全支持 Java EE 6With MyEclipse 10, you can now take advantage of Java EE 6features, such as:·        Servlet 3.0·JSF2.0·JPA2.0·EJB3.1·        JAX-RS 1.1其他的改进:1. 支持maven3.02. 支持 64-bit Windows support3. WebSphere Portal Server 7 and WebSphere 84. JRebel for MyEclipse5.EJBDeployment Descriptor Editor6. Extended DB2 Support7. Extended ApplicationClientProject Support8. Instant Deployment (Experimental)9.EJBDeploy10.J2EE Connector Architecture (JCA)

2.4Tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

  诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC1 (alpha) Released。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

2.5Struts 2框架

Struts 2是由出色稳定的struts1和webwork框架整合而来,吸取了两大框架的优点,提高了开发效率和规范性,减少了非常多的冗余代码,更好的实现了mvc架构,层与层之间的关系更加明确直接,解除了与servlet的强耦合性,无需启动服务器便可以进行单元测试,功能测试,极大的节约了我们的时间。是在 struts 1和WebWork的技术基础上进行了合并的全新的Sruts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Struts2的意义

  1. 自动封装表单提交数据:属性驱动,模型驱动。提高了开发效率和简洁性。
  2. 便捷的实现上传文件:fileUpload.
  3. 使网站通用于国内化:国际化
  4. 通过配置完成表单验证:校验器
  5. 强大的标签库:struts2标签库,OGNl标签库

更科学的管理:

使用xml文件管理程序文件对应的关系,使我们的维护更加的简洁更加的安全和更加的迅速。

更安全的操作:

1.安全的线程机制:每个action都是独立的,在我们使用JSP和servlet开发的时候,由于servlet是单列模式,导致线程是不安全的,在编程的时候应多加注意,才能避免线程混乱的情况。而strut2的action对于每一个请求就会生成对应的一个实例,所以线程是安全的,简化了开发,安全性也提高了不少。

2.防止数据重复提交:token令牌机制,该机制可以有效的防止用户因网速或者电脑卡等因素导致的统一表单数据被重复提交了两次甚至更多遍的问题,比如说注册界面,用户在填写完信息后点击提交按钮,由于网络阻塞而导致的电脑卡顿现象,用户不耐烦有反复的点击提交按钮,导致重复提交的现象。

  1. 异常处理机制:通过配置来完成,更便于管理

先进的编程思路

面向切面编程:拦截器(相当于过滤器的一种,不编写重复的代码,减少代码的冗余

使用filter作为控制器的MVC应用实战

流程概念分析

图2-3 servlet的主要流程图

图2-4 struts2的主要流程图

可以看出在struts2中用filter代替了servlet的作用,这是struts2的核心思想

本项目中到struts2的核心程序段为:

在web.xml中配置filter

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

Struts.xml的代码

!--该标签用于Struts默认行为标签 -->

<!-- 开发模式下使用,这样可以打印出更加详细的错误信息 -->

<constant name="struts.devMode" value="true" />

<!-- 默认我们struts2的请求后缀是action,如果我们不配置该元素,我们至拦截action文件,如果我们配置了,可以拦截action/dowenjian -->

<constant name="struts.action.extension" value="do, action"/>

<constant name="struts.multipart.saveDir" value="d:/test"></constant>

<constant name="struts.configuration.xml.reload" value="true"/>

<!-- 该标签为包标签,用于区分不同的请求文件标签 -->

<package name="admin" extends="struts-default" namespace="/admin">

<action name="usersmanager"  class="com.daowen.action.UsersAction">

</action>

图2-4-1 struts2的核心程序段

对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。其次,Struts1与Servlet API的严重耦合,使应用难于测试。最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架。

图2-5 Http请求流转流程图

从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、Tapestry和SpringMVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。这些框架的出现也促进了Struts的发展。目前,Struts已经分化成了两个框架:第一个是在传统的Struts1的基础上,融合了另外的一个优秀的Web框架WebWork的Struts2。Struts2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts2为传统的Struts1注入了WebWork的先进的设计理念,统一了Struts1和WebWork两个框架。Struts1分化出来的另外一个框架是Shale。这个框架远远超出了Struts1原有的设计思想,与原有的Struts1关联很少,使用了全新的设计思想。Shale更像一个新的框架而不是Struts1的升级。

2.6 Spring框架

Spring就是为了解决企业的复杂性而创建的,它的特性之一就是基于分层架构,分成架构可以让我们决定使用哪个组件而开发的,同时也为我们J2EE的开发创建了条件。Spring是一个轻量级级控制反转(ioc)和面向切面(aop)的容器框架,他主要是为了解决企业应用开发的复杂性而诞生的:它的目的就是为了解决企业开发的复杂性,它的主要功能为使用基本的JAVABEAN来代替EJB,并且他提供了更多的企业级应用功能,它的适用范围是JAVA的任何应用,spring不简单单的是服务器端的开发,从简单性,可测试性,低耦合性的角度而言,任何的java应用都可以从spring中受益,sping的核心是面向切面和控制反转,spring存在有它得天都后的优势:

1:它定位的领域是许多framework而没有的,spring致力于一个统一的方法来管理你的业务对象

2:spring是全面的和模块化的,sping是分层结构的,这意味着你可以使用孤立与它的任何一个成分,它的框架依然是内在的和稳定的。

3:它的设计是从底部帮助你易于测试的代码。Spring是测试驱动的理想的framework。

  1. spring是潜在的一站式解决服务,定位与典型应用的大部分基础结构,当然它也设计到了其他framework所考虑到的内容。

Spring有以下优点:

1:低侵入式设计,代码污染率极低

2:write once,Run anywhere

3:DI有效的降低了耦合度

4:aop提供了通用任务的管理

5:ORM和DAO简化了数据库的访问

6:高度的开放性,并不强制,它的这种优点贯穿与表现层,业务层,逻辑层,在实际的开发过程中,并不强制依赖spring。作为开发者你可选择使用spring一部分框架或者全部框架来进行你的全部开发。

正因为SPRING有上述优点和好处,可以给我们带来很多的好处,例如:可以有效的解决组织中间层对象,还可以减少许多对单列模式的使用。可以使用统一的配置文件,易于单元测试以及促进良好的编程习惯,减少编程代价。

spring特点:

  1. 方便解耦,简化开发。
  2. Aop编程的支持,通过aop的支持。我们很容易使用面向切面的过程。
  3. 声明式事务支持,通过spring框架中我们可以从单调烦闷的事务中解救出来,痛过生命是方式灵活的进行事务管理,从而提高开发效率和开发的质量。
  4. 方便程序测试,可以进行非依赖容器的方法进行所有的测试工作,再spring框架中车上不再时昂贵的操作,而是一个随手可作的事情。
  5. 方便集成各种优秀的框架,在spring中不排除各种框架的使用,而是降低各种框架的使用难度。

Spring的核心模块:

  1. 核心容器(spring core)
  2. 应用上下文(spring context)
  3. Aop模块(spring aop)
  4. Jdbc和DAO模块(spring DAo)
  5. 对象实体映射(spring orm)
  6. Web模块(spring web)
  7. Mvc模块(spring web mvc)

2-6 Mvc模块核心图

1.软件应用分层架构

标准三层架构:

1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。具体的讲主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

3:表示层:主要表示WEB方式,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

  1. IOC(inversion of control) 是spring的核心,贯始至终。所谓IOC

,对于spring框架来说,就是由spring来负责生命周期和对象间的关系。

传统开发模式:对象之间相互依赖。

IOC开发模式:ioc容器安排对象之间的依赖。

Ioc的另外的名字叫做依赖注入(DepenDency Injection),所谓的依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。所以,依赖注入和控制反转(IOC)是从不同的角度的描述的同一件事情。就是只通过引入ioc容器,利用依赖关系注入的方式,实现对象之间的解耦。

Ioc在对象过程中不会对业务对象构成很强的侵入性,使用ioc之后,对象之间具有更好的可实现性,可重用性和可扩展性:

降低对象之间的耦合度

提高开发效率和产品质量

统一标准,提高产品的复用性

模块具有热插拔特性。

  1. aop专门用于处理系统中分布与各个模块中交叉关注点的问题,在JAVAEE的应用中,常常通过AOp来处理一些具有横切性质的系统级服务,如事务管理,安全检查,缓存,对象池管理等,aop已经成为一种非常常用的解决方案。

2-7 普通处理方法

2-8 spring处理方法

  1. spring核心开发包

Spring core(包含spring基本工具类,其它组件都会使用到这个包里的类,是其它组件的核心)

Java bean(是所有都需要用到的,它包含了访问配置文件,创建和管理bean,以及控制反转和依赖注入操作)

Spring aop(包含了使用aop特性时所使用到的类)

Spring context(为spring的核心提供了大量的扩展,能够找到使用application context的全部类)。

优点:

1:开发人员可以只关注整个结构中的其中某一层;

2:可以很容易的用新的实现来替换原有层次的实现;

3:可以降低层与层之间的依赖;

4:有利于标准化;

5:利于各层逻辑的复用。

6:结构更加的明确

7:在后期维护的时候,极大地降低了维护成本和维护时间

缺点:

1:降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2:有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3:增加了开发成本。

2 Spring相关概念

1:轻量级的容器:

spring容器帮我们管理业务逻辑层,里边有很多业务逻辑对象,有对象就有对象的生命周期的管理(创建,销毁).

轻量级:容器给予的业务逻辑对象多少种服务?spring给用户提供的服务完全由用户自己决定,spring想用什么服务自己开启使用。但是重量级的都是只要你用就把所有的服务都给你,不能自己定制。

spring容器从来不能独立运行,一定借助于其他容器启动,或者借助web容器启动,或者ejb容器启动。

特点:

应用模块之间耦合度小,组件都是可重用的,都是各自打包的

2:why spring

1)动态解藕,方便开发,面向接口设计

通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用

2)方便程序的测试TDD(Test-Driven Development)

可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

3)降低Java EE API的使用难度

Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个简单的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

4)方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

  1. AOP编程的支持

Aop(aspect-oriented programming )面向方面的程序设计,是一种比较新颖的编程思想,aop将程序分为两个部分,核心业务逻辑以及横向的业务逻辑。在spring中提供了丰富的业务支持,允许通过分离业务的业务逻辑和系统级的服务,进行类聚性的开发Aop是对oop的一种延续,也是对oop的一种补充,oop是一种静态的过程,而aop是一种动态的过程,aop的主要功能为系统级别的功能,列入:系统日志,性能统计,安全控制,事务处理,异常处理等等这些主要功能,将实现上述功能的代码从业务逻辑层中划分出来,将它们独立到非业务指导性的代码当中,处理这些代码的时候不影响其它代码的处理。使用切面代码我们可以将面向切面的代码植入程序,可以有效防止代码的混乱。Aop专门用于处理系统中分布于各个模块中交叉关注点的问题,在JAVAEE应用中,常常通过aop来处理一些具有横切性质的系统级服务,如事务管理,安全检查,缓存,对象池管理等等,aop已经成为一种非常常用的解决方案。

Aop代理其实是由aop动态生成的一个对象,该对象可作为目标对象使用,aop代理所包含的方法与目标对象方法如下图所示

2-10 aop代理所包含的方法与目标对象方法

6)声明式事务的支持

在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

7)对异常的处理方式,所有的都转换成Unchecked的。

8)它不是一个一体化的解决方案。

9)良好的设计,容易扩展,很多可重用的组件

3.Spring核心组件(我们主要学习的是IOC和AOP模块)

(1)、Spring Core(IOC) 核心容器,提供组件的创建、装备、销毁

(2)、Spring Context Spring上下文,是一个接口ApplicationContext(继承自BeanFactory接口)的实现

(3)、Spring Web容器,web应用上下文,是webApplicationContext接口的实现

(4)、Spring DAO容器,是SpringDAO 支持模块,是为了简化DAO的使用

(5)、Spring ORM

(6)、Spring AOP ,对AOP编程支持的模块 [面向切面编程,扩展功能不是修改源代码实现]

(7)、Spring MVC,类似于Spring表示层的一个框架

4.spring ioc(must):

IOC:Inversion of Control 控制反转

一种说法:对象之间的依赖关系,由容器在运行时依据配置文件动态的建立

另一种说法:对象的控制器转移了,转到外部容器了,避免了代码的纠缠,代码更容易被维护,模板之间的耦合性降低,容易测试

比如:有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,

创建类对象的过程,需要new出来对象。

ioc是把对象的创建不是通过new方式实现,而是交给spring配置创建类对象

IoC 控制反转意味着将你设计好的类交给容器去控制,而不是在类的内部进行控制,即控制权由应用代码中转到了外部容器

IoC:包括两部分内容

DI:Dependency Injection依赖注入,组件不做定位查询,只提供相应方法,由容器创建对象,并调用相应方法设置所需对象需要的组件

(不要求)DL:Dependency Loopup依赖查找,容器创建对象并提供回调接口和上下文环境给组件,需要时通过接口从容器中查找对象

依赖查找,现在使用不太多。(EJB使用的更多,将对象创建好后,放到容器中。)

IOC解决:对象谁来创建的问题

DI解决:对象间的关系如何建立的问题。

org.springframework.beans及org.springframework.context包是IOC容器的基础。

3.系统需求分析

3.1功能需求分析

当我们对已有系统进行分析时,通过分析系统的功能和实现去确定系统的即将要达成的目的。因此,我们要收集足够的信息去验证我们的分析结果,在该次毕设中,我们获取的信息大多都是从网上,书库中了解到的。在任何的实践中获取的信息其实才是最可靠,最具有说服力的信息,所以,我们找到其他的宠物用品店,然后注册成为会员来获得有用信息。

  1. 从用户角度来看:

用户同时使用网站的注册登录功能,进入系统后可以获得一部分功能。在处理消息时,可以进行对宠物资料的浏览,进行购买宠物用品然后对订单进行单个购买或者取消,同时也可以清空购物车中的所有订单,或者全部进行结账等功能。

2.从网站的角度看:

(1)网站应该包含宠物搜索功能。

(2)订单处理功能,确认订单方式:

a). 电话通知方式

b).  E-mail方式

(3)管理员管理:

其任务是查看用户订单,查看用户信息,并在根据查看了用户的信息和用户订单之后,将商品的发送到购买者的身边。

(4)宠物浏览

a). 宠物名  b).宠物类型

c). 价格  d). 订购号

通过分析,系统主要分为前台和后台两大模块,前台主要由用户体验使用,实现了用户登录、注册、查找商品、商品类别等功能导航;后台主要由系统管理员操作使用,用来维护系统,管理员主要实现了订单管理、商品管理、公告管理、会员管理、用户管理、个人信息维护等主要功能。

图4-1 功能需求分析图

3.2系统设计规则

无论哪个网站都要有它自己的设计规则。该系统也一样,它的主要设计规则有:

简单性:在实现系统的功能的同时,尽量让系统操作简单易懂,这对于一个系统来说是非常重要的。

针对性:该系统设计是宠物商店网站系统及后台管理的定向开发设计,所以具有专业突出和很强的针对性。

实用性:系统接受来自系统管理员的请求,管理员可以对商品信息以及用户信息进行增、删、改、查等操作,具有良好的实用性。

3.3系统的可行性分析

3.3.1技术可行性

1)硬件可行性分析

系统的硬件要求方面不存在特殊的要求,只需要在普通的硬件配置就能够轻松的实现,只是需要确保系统的正常工作即可,以及拥有较高的效率。如果有特别低的硬件,它可以导致系统的低性能以及效率低,从而导致整个系统的运行不顺畅。以目前普遍的个人计算机的配置而言,这是十分容易实现的 。因此,本系统的开发在硬件方面是可行的。

2)软件可行性分析

Java语言提供了一个共同的机制类似的借口动态模型,设计更集中。另外,在使用Java语言可以很容易实现模块化和存储信息。此外,代码复用,也可以很好的体现。因此,考虑到系统的实际情况,选择JAVA作为本系统开发语言的时候。通过上述分析,该系统的设计实现在软件方面是可行的。

3.3.2经济可行性

如今是信息化时代,信息化管理可以使宠物商品管理工作更加系统化、快速化、全面化。这样可以为企业带来较高的工作效益和经济效益,在提高工作效率的基础上,可以考虑减少工作人员的数量,本系统对计算机配置的要求不高,企业机房更换下来的低配置电脑都可以完全满足需要,再者,企业在管理工作上的高效率和便捷性远远超过了开发本系统的成本,所以在经济上具有完全的可行性。

3.3.3操作可行性

系统的登录界面简单和友好,采用常见的界面窗口的登录界面,而系统的开发则采用的是较为常用的JSP技术。这些策使得用户不需要很长的时间就能够快速熟悉系统,并掌握系统的操作方法。此外,为了方便系统管理维护人员,用户登录系统后会给出了一些提示,使得整个系统更加人性化,用户操作更简单方便

3.3.4 技术可行性分析

本次宠物用品店系统的开发采用了java,jsp作为语言,采用了servlet,javaBeans技术,sqlserver2008作为数据库,Web服务器的选择是tomcat7.0。这次的开发对于一个即将毕业的我来说是一项复杂的系统工程。但是上述所用到的语言,我们在大学期间都有所接触过,在杰普基地实习的时候也都有所接触,所以很容易着手进行开发,但是为了保证系统开发的成功,我们只能采用工程化的系统开发方法,并且可以适当的研究有些符合标准的开发方法,并研究出一些符合工程化标准的开发方法。新研究出来的开发方法是为了加快系统开发的速度,在保证质量的同时尽可能的去降低开发的成本。对于任何一个物件来说,在质量有所保证的情况下,所消耗的资源越少越好。

3.3.5 运行可行性分析

现在的生活中计算机已经普遍到每个家庭的生活当中,自然也就越来越多的人掌握了使用计算机的基本使用方法和技能。因此,在这个信息时代中,必定会有越来越多的人利用网络足不出户就可以享受购物的便捷性,让人们可以更快的了解到自己的需求。

3.3.6 经济可行性分析

宠物食品店系统给人们带来了方便,成为一种全新的商务模式。因此,不用出门就可以在家购买宠物食品的新时尚已经到来,构建一个宠物食品店系统在经济上是完全可行的。就本系统而言,随着宽带网络进入校园,为宠物主在网络上进行购物提供有利的条件。商家可以从中获得利润,两全其美。通过以上的分析,开发宠物商品店系统是完全可行的。

3.4运行环境

本系统是一个web版的应用程序,需要在服务器上部署中间件TomcatOracle数据库,其他的客户端通过网络进行访问该服务器即可。

1)开发硬件平台:

CPU:酷睿双核 3.2GHZ

内存:4G以上

硬盘:320GB

2)服务器端硬件平台:

Web服务器参考配置:Intel  Xeon  Quad Core  E5530 80W 2.40GHz/5.8GT/8MB Cache, 2x2GB DDR3-1066MHz, 2.5in HS 146GB SAS,HS  675W PSU, ServeRAID MR10i(RAID 5), 2*Giga Ethernet,Light Path, CD-RW/DVD Combo, 1U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22

数据库服务器参考配置:Intel  Xeon  Quad Core  E5504 80W 2.00GHz/4.8GT/4MB Cache, 2x2GB DDR3-800MHz, 2.5in HS 146GB SAS, 670W PSU, ServeRAID BR10i(RAID 0,1), 2*Giga Ethernet,  DVD ROM,5U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22

(3) 开发软件平台:

操作系统:Windows7以上均可

数据库:mysql

4.宠物网站系统概要设计

4.1系统功能结构图

系统主要分为前台和后台两大模块,前台主要由用户体验使用,实现了用户登录、注册、查找商品、商品类别等功能导航;后台主要由系统管理员操作使用,用来维护系统,管理员主要实现了订单管理、商品管理、公告管理、会员管理、用户管理、个人信息维护等主要功能。系统功能图如下图5-1所示。

4-1系统功能结构图

4.2系统交互图

系统架构类的工作流程:

1、当用户在jsp页面输入了相应的信息后,对象会根据用户的请求向请求业务处理类处理数据。

2、当业务处理类收到相应的请求后,会向相应的权限管理类对象发送验证请求。

3、通过权限管理类验证过后会把相应的验证权限结果返回给相应的业务代理类。

4、业务对象会根据接受到不同的验证权限结果进行两部不同的处理操作:若权限不符,这返回到相应的JSP用户界面,若权限相符,则进行到相应的业务逻辑类。

5、业务逻辑类的业务对象进行相应的业务处理。在业务处理中的数据持久化操作,靠访问数据库访问类进行操作,可以进行读取,写入等操作,期间若发生任何的异常,交给异常处理类来完成。

6、业务代理对象类最后将最终结果返回给jsp用户界面。

系统交互图如下图5-2所示:

4-2 系统交互图

4.3数据库设计

在概念设计中,通常用下面的四种方法:

自顶向下:第一,把全局概念结构的框架定义好,之后再慢慢细化;自底向上:第一,把各局部应用的概念结构定义好,之后把他们再集合起来,最后得到全局的概念结构;逐步扩张: 首先把概念结构里最核心的地方定义好,之后再向外面扩充,最后直到总体概念结构;混合策略: 把自顶向下和自底向上两种相结合,设计一个全局概念,使用自顶向下的策略。结构的框架, 设计的各局部概念结构,以它为骨架集成,使用自底向上的策略。

在物理结构设计阶段,首先应该分两步走:

一是,在关系数据库中,确定数据库的物理结构,主要是指存取方法和存储结构。时间和空间效率是对物理结构的评价。.

二是要选取存取方法,并且是正确的关系模式,存取索引方法、聚簇存取、HASH存取方法等都是常用的方法数据库的概念设计整体属性E-R图如下图5-3所示:

4-3宠物商品网站系统E-R模型图

3数据库设计

宠物商店网站系统ER模型中的实体转换为物理表,得到物理表结构部分如下:

1、宠物信息表book:表中显示了关于宠物的所有详细信息,对于字段的属性也有详细的描述。可以很明显的看出表中的内容显示的是哪方面的信息。

图4-1 宠物信息表booK

2、管理员表admin:表中显示了管理员的属性信息。表中的字段就是管理员所拥有的详细信息。

图4-2 管理员表admin

3、宠物类型表booktypes:

图4-4 宠物类型表types

4、用户注册表users

图4-5 用户注册表users

5、定单详细信息表orderbook

图4-6 订单详情信息表

6、定单表num

图4-7 订单表

4.4系统概要设计

4.4.1系统的前台

系统的界面按照常规的WEB界面进行设计,设计的原则是界面友好,易于操作,容易上手,尽可能的贴切用户实际。系统主页界面如下图5-4所示。

图a 狗狗商城

图b   热卖商品推荐                  图c 精品推荐

图4-4  系统主界面图

所有的用户都可以进入该首页,想要使用购买商品等功能,需要进行登录操作,登录时需要输入用户名、密码进行验证,通过之后才能使用这些功能。系统登录功能界面如图4-5所示:

图4-5  系统登录界面图

图4-6  系统注册界面图

图4-7  购买界面图

图4-8  订单信息图

4.4.2系统的后台

图4-9  系统后台登录界面图

图4-10  会员管理界面图

图4-11  网站后台管理菜单

图4-12  商品管理界面图

5.系统的详细设计与功能实现

5.1应用层配置

系统采用目前流行的Struts2框架进行开发。先来看看Struts2框架是如何配置到应用程序中的。

在WEB-INF/web.xml文件的配置代码如下:

< <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"

name="myRequestParser" class="com.daowen.util.RequestParseWrapper"

scope="default" optional="true" />

<package name="admin" extends="struts-default" namespace="/admin">

<action name="usersmanager"  class="com.daowen.action.UsersAction">

</action>

<action name="friendlinkmanager" class="com.daowen.action.FriendlinkAction">

</action>

<action name="jiaodiantumanager" class="com.daowen.action.JiaodiantuAction">

</action>

</action>

<action name="sysconfigmanager" class="com.daowen.action.SysconfigAction">

</action>

5.2登录功能的实现

图5-1 登录信息

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

try {

response.setContentType("application/x-www-form-urlencoded; charset=UTF-8");

List userlist=null;

Session  s=HibernateSessionFactory.getSession();

Transaction t=s.beginTransaction();

String username=request.getParameter("username");

String password=request.getParameter("password");

String action=request.getParameter("action");

System.out.println("action="+action+"username="+username+"password="+password);

SQLQuery query=s.createSQLQuery("select * from [users] where username='"+username+"'");

userlist=query.list();

String s1="";

if(!userlist.isEmpty())

s1="res=true";

else

s1="res=false";

System.out.println("json="+s1);

response.getWriter().write(s1);

}

5.3注册功能的实现

图5-3 注册功能

<script  src="<%=SystemParam.getSiteRoot()%>/webui/jquery/jquery-1.5.2.min.js"

type="text/javascript"></script>

<script  type="text/javascript" src="<%=SystemParam.getSiteRoot() %>/webui/jquery/jquery.validate.min.js"></script>

<script type="text/javascript"  src="<%=SystemParam.getSiteRoot() %>/webui/jquery/jquery.metadata.js" ></script>

<script type="text/javascript"  src="<%=SystemParam.getSiteRoot() %>/webui/jquery/messages_cn.js" ></script>

<script type="text/javascript">

$(function(){

$.metadata.setType("attr","validate");

$("#form1").validate();

})

5.4商品管理功能的实现

图5-4 商品管理模块

<tr>

<td align="right">商品编号:</td>

<td><input name="spno"

validate="{required:true,messages:{required:'请输入商品编号'}}"

value="${requestScope.shangpin.spno}" class="input-txt" type="text"

id="spno" />

</td>

</tr>

<tr>

<td align="right">商品类别:</td>

<td><input type="hidden" name="sptype" /> <input type="hidden"

name="sptypeid" /> <web:dropdownlist id="sptype"  cssclass="dropdown"

value="${requestScope.shangpin.sptypeid}"

datasource="${sptype_datasource}" textfieldname="mingcheng"

valuefieldname="id">

</web:dropdownlist></td>

</tr>

</div>

5.5订单管理模块的实现

订单管理模块主要实现管理员对进行中的订单、历史订单信息的查询,进行退款、拒绝、介绍并发货等操作。订单管理模块如图6-2所示。

图5-5 订单管理模块

<link href="<%=SystemParam.getSiteRoot() %>/webui/treetable/skin/jquery.treetable.theme.default.css" rel="stylesheet"

type="text/css" />

<script src="<%=SystemParam.getSiteRoot() %>/webui/treetable/js/jquery.treetable.js" type="text/javascript"></script>

<script src="<%=SystemParam.getSiteRoot() %>/webui/combo/combo.js" type="text/javascript"></script>

<script type="text/javascript">

$(function() {

$(".ui-record-table").recordTable();

$("#btnDelete").click(function(){

if($(".check:checked").length<1)

{

$.dialog.alert("请选择需要删除的记录");

return;

}

5.6会员管理模块的实现

图5-6 会员管理模块

<head>

<title>会员信息</title>

<link href="<%=SystemParam.getSiteRoot()%>/admin/css/common.css"

rel="stylesheet" type="text/css" />

<link href="<%=SystemParam.getSiteRoot()%>/admin/css/web2table.css"

rel="stylesheet" type="text/css" />

<script type="text/javascript"

src="<%=SystemParam.getSiteRoot()%>/webui/jquery/jquery-1.9.0.js"></script>

<link

href="<%=SystemParam.getSiteRoot()%>/webui/artDialog/skins/default.css"

rel="stylesheet" type="text/css" />

<script

src="<%=SystemParam.getSiteRoot()%>/webui/artDialog/jquery.artDialog.source.js"

type="text/javascript"></script>

<script

src="<%=SystemParam.getSiteRoot()%>/webui/artDialog/iframeTools.source.js"

type="text/javascript"></script>

6.测试与性能分析

6.1系统测试目的与意义

(1)测试的重要性

不管是什么技术,以及如何使用的方法,但该软件,该软件将仍然是放错了地方。减少引入的错误,您可以使用新的语言,先进的开发方法,改进开发过程,但这是不可能完全消除软件错误,由于需要进行测试,以找出引入的错误,你必须通过测试误差估计密度在软件中。对于可行性研究而言,其任务就是用最低的代价在最短的时间内做出一个判断当前系统实现后的价值。为了避免在花费了大量的资源之后才发现该功能的实现完成不了或者完成了之后也没有多少实用性的价值。从而造成更多的浪费。

所有工程学科的基本单元是一个测试,这是软件发展的一个非常重要的组成部分。测试陪同,从编程本身的日子。统计显示,在一个典型的软件开发项目,往往占总工作量的测试软件的软件开发工作量的40%以上。但成本为这个测试是30%至50%的软件开发总成本的。如果考虑把维护阶段包含在内,在讨论整个软件的生存期时,有所降低的也许是测试的成本比例,但维护工作,实际上是相当于第二次的开发,甚至是多次开发,许多测试工作也一定包含在其中。这次的开发对于一个即将毕业的我来说是一项复杂的系统工程。但是上述所用到的语言,我们在大学期间都有所接触过,在杰普基地实习的时候也都有所接触,所以很容易着手进行开发,但是为了保证系统开发的成功,我们只能采用工程化的系统开发方法,并且可以适当的研究有些符合标准的开发方法,并研究出一些符合工程化标准的开发方法。新研究出来的开发方法是为了加快系统开发的速度,在保证质量的同时尽可能的去降低开发的成本。对于任何一个物件来说,在质量有所保证的情况下,所消耗的资源越少越好。

在实践中,因为还有一个感知测试这是不正确的和错误的态度,难以在软件测试往往过高或敷衍,现在的生活中计算机已经普遍到每个家庭的生活当中,自然也就越来越多的人掌握了使用计算机的基本使用方法和技能。因此,在这个信息时代中,必定会有越来越多的人利用网络足不出户就可以享受购物的便捷性,让人们可以更快的了解到自己的需求。

包括:

假设测试,也很难带来成就试验人员从某种意义上说,作为设计和编码一样容易取得进展:

那个戒指是不是建立在自然破裂,找到软件错误作为测试的目标,他们负责的负面测试工作中发现错位;

测试可以不感兴趣,沉闷;

测试工作是困难的,艰苦的工作;

准备他们的信心盲目的过程,发现错误后,所表达的意见对他们的发展能力的担忧。

软件测试,这种观点是不赚钱,提高软件产品的质量,必须澄清认识,态度。

(2)测试的目的

如果你说,要找出尽可能测试的目的是错误的,那么测试应直接向软件的一部分,是更复杂或更错误之前。

该过程发现错误和软件测试的执行情况;

该测试是为了证明其中的一个节目,而不是没有错误的认证程序;

这就是它没有被发现的错误,这是一个很好的例子

发现一个测试没有找到一个成功的测试。

为了测试错误,因为这个视图的中心可以提醒人们,而不是正常运作的演示软件。但可能会非常棘手,真的只是给这纯粹是为软件测试是为了发现错误,找不到错误的测试,其实不是这样的。

首先,测试,而不是目的只是为了找到错误。但是,因误差分析和分配可以帮助项目经理更好的软件过程发现现在是在一个残疾的存在使用,以方便日后的改进。在同一时间,根据该分析还可以帮助我们设计的目标检测方法,以提高测试的效率。其次,没有在测试中发现的错误也是有价值的评估试验的质量的方式来完成测试

6.2测试环境

WIN7 64位,FireFoxTOMCAT6JDK1.6

6.3测试过程

在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。

测试的每个步骤在逻辑上与前一个步骤都有关联。准确来说是上一个步骤的继续。每个模块写的是不同的功能,多个模块,就相对于多个功能组成了一个系统,而多个小的系统组成了一个大型的系统,所以,大型的软件系统的测试是分布进行的,就类似如下所述:

(1)模块测试:该测试中发现的一般是编码和详细设计的错误。

(2)系统测试:该测试中发现的一般是软件设计中的错误,也可能发现需求说明中的错误。

(3)验收测试:该测试中发现的一般是系统需求说明书中的错误。

这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。

6.4测试的主要内容及结果

(1)单元测试

单元测试是检查每个软件中单位最小的,通过检测去发现原来定义该模块的功能说明和本身所需要实现的实际的功能是不符合要求的状况,或者检测出模块的错误。

身份认证时候要保证在以下输入情况时候系统能够健康运行:

(2)集成测试

(3)确认测试

(4)系统测试

测试结果:注册测试:输入的错误信息符合要求如图

图7-1 注册失败情

图7-2 注册成功情况

图7-2 登录失败情况

模块名称

测试用例

预期结果

实际结果

是否通过

登录模块

用户名:null   密码:null

弹出错误提示,请输入用户名

登录失败,提示请输入用户名

通过

登录模块

用户名:m1

密码:null

弹出错误提示,请输入密码

失败,提示输入密码

通过

登录模块

用户名:m1

密码:1

弹出错误提示,用户名或者密码错误

登录失败,提示用户名或者密码错误

通过

商品管理模块

添加商品信息后提交

添加成功

录入成功

通过

用户密码修改

随意一个用户登录,修改密码

修改成功,退出后用新密码登录,并登录成功

修改成功

通过

总结与展望

本文主要阐述了如何利用JSP技术的Struts2框架开发一个性能优化、可扩展性强和安全可靠的宠物商店管理系统。系统主要分为前台和后台两大模块,前台主要实现了用户登录、注册、查找商品、商品类别等功能导航;后台主要实现了订单管理、商品管理、公告管理、会员管理、用户管理、个人信息维护等主要功能。然后根据这些功能进行分析设计,对所有到的技术Struts2框架就行简要的介绍。接着进行需求分析的描述。接着是概要设计和详细设计。描述这个系统的部分功能的实现方案及过程。

本设计所实现的是一个宠物商品系统,主要介绍了JSP,Struts2技术。系统按照总体设计、数据库设计、各个模块设计和代码分析,宠物商品系统的基本功能已得到实现。由于时间及本人所学有限,该系统还有许多地方需要改进,并且还有许多自己未起到的功能,本人会在以后的学习过程中进一步加强和完善。

本系统具有以下优点:

1、该系统可以运行在多个操作系统平台(Windows 7和Windows 8),数据库采用mysql,开发语言选择Java,可移植性好。

2、系统的用户权限进行划分,分为会员用户和管理员,不同的用户具有不同的操作权限。这不仅方便了用户,也保证了系统的安全性。

3、该系统界面简单,操作方便,容易使用。

但也存在以下缺点:

1、界面跳转复杂,接口不能被刷新,可以改进。

2、功能比较简单,没有进一步提高一些选修的程序等,不能更好的为用户提供服务。

3、数据库设计有冗余,需要进一步优化。

参考文献

[1] 刘志诚.JSP程序设计实例教程.北京:人民邮电出版社,2009.5

[2 ]孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发.北京:电子工业出版社,2004.11

[3] 李刚.整合Struts+hibernate+Spring应用开发详解.北京:清华大学出版.

[4] 张桂元、贾燕枫.Struts开发入门与项目实践.北京:人民邮电出版社,2005.12

[5]孙卫琴.Tomcat与Java Web开发技术详解.北京:电子工业出版社,2003.11

[6] 吴其庆.Java模块设计实例经典.北京:冶金工业出版社2004.6

[7] 刘斌.《精通Java Web整合开发》,电子工业出版社,2007.11

[8] [美]Rogers Cadenhead. Java编程入门经典.梅兴文译.第4版.北京:人民邮电出版社,2007

[9] 赵文靖.Java程序设计基础与上机指导.北京:清华大学出版社,2006

[10] 赵毅.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,2006

[11] 王路群.Java高级程序设计.北京:中国水利水电出版社,2006

[12]雍俊海.Java程序设计习题集.北京:清华大学出版社,2006

[13] 朱福喜.Java语言习题与解析.北京:清华大学出版社,2006

[14] 吴其庆.Java程序设计实例教程.北京:冶金工业出版社,2006

1.1 servlet的功用

Servlet是运行在Web服务器或应用服务器上的Java程序,它是一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。

  1. 读取客户发送的显示数据。
  2. 读取由浏览器发送的隐式请求数据
  3. 生成结果
  4. 向客户发送显示数据
  5. 发送一个隐式的HTTP响应数据

1.2 动态构建网页的原因

· 网页基于客户发送的数据

例如,搜索引擎生成的页面,以及在线商店的订单确认页面,都要针对特定的用户请求而产生。在没有读取到用户提交的数据之前,我们不知道显示什么,要记住,用户提交两种类型的数据:显示(即HTML表单的数据)和隐式(即HTTP请求的报头)。两种输入都可用来构建输出页面。基于cookie值针对具体用户构建页面的情况尤其普遍。

· 网页由频繁改变的数据导出

如果页面需要根据每个具体的请求做出相应的更改,当然需要在请求发生时构建响应。但是,如果页面周期性地改变,我们可以用两种方式来处理它:周期性地在服务器上构建新的网页(和客户请求无关),或者仅仅在用户请求该页面时再构建。具体应该采取哪种方式要依具体情况而定,但后一种方式常常更为方便,因为它只需简单地等待用户的请求。例如,天气预报或新闻网站可能会动态地构建页面,也可能会返回之前构建的页面(如果它还是最新的话)。

· 网页中使用了来自公司数据库或其他服务器端数据源的信息

如果数据存储在数据库中,那么,即使客户端使用动态Web内容,比如applet,我们依旧需要执行服务器端处理。想象下,如果一个搜索引擎网站完全使用applet,那么用户将会看到:“正在下载50TB的applet,请等待!”。显然,者很愚蠢:这种情况下,我们需要与数据库(二层结构)更灵活,也更安全,而性能上的损失很少甚至没有。毕竟数据库调用通常是对速度影响最大的步骤,因为经过Web服务器不会带来性能上的明显降低。实际上,三层结构常常更快,因为中间层可以执行高缓存和连接共享。

理论上讲,servlet并非只用于处理HTTP请求的Web服务器或应用服务器,它同样可以用于其他类型的服务器。例如,servlet能够嵌入到FTP或邮件服务器中,扩展它们的功能。而且,用于会话启动协议服务器的servlet API最近已经被标准化(参见http://jcp.org/en/jsr/detail?Id=116)。但在实践中,servlet的这种用法尚不流行,在此,我们只论述了HTTP servlet。

  1. 服务器的安装和配置

2.1 下载和安装Java软件开发工具包

您可能早已安装了Java平台,如果尚未安装,那么第一步就是安装Java平台,当前版本的servlet和JSP API需要Java 2平台(标准版,J2EE,或企业版,J2EE)。如果不准备使用J2EE的特性,如Enterprise JavaBeans(EJB)或Java消息服务(Java messaging service,JMS),我们建议使用标准版。服务器会提供向Java 2标准版加入servlet和JSP支持所需的类。

但我们需要Java的哪个版本呢?这要使用哪种servlet/JSP API,以及使用的是与J2EE完全兼容的应用服务器(例如:WebSphere,WebLogic或JBoss),还是独立的servlet/JSP容器(例如Tomcat,JRun或Resin)而定。如果从零做起,我们推荐使用Java的最新版本(1.4);这样可以得到最佳的性能,并保证与奖励的版本兼容。但是,如果您希望了解最低的支持版本,下面是一个简略的汇总。

·servlet 2.3和JSP(独立服务器)。Java 1.2或更新的版本。

·J2EE 1.3(包括servlet和JSP 1.2)。Java 1.3或更新的版本。

·servlet 2.4 和JSP 2.0(独立服务器)。Java 1.3或更新版本。

·J2EE 1.4(包括servlet 2.4和JSP 2.0)。Java 1.4或更新版本。

本书以Java 1.4为例进行介绍。

对于Solaris,Windows和Linux,可以到http://java.sun.com/j2se/1.4/获取Java 1.4,http://java.sun.com/j2se/1.3/获取Java 1.3.要确保下载的是SDK(软件开发工具包),而非仅仅是JRE(Java runtime environment,Java运行环境)JRE只执行已经编译好的Java类文件,不提供编译器。对于其他平台,首先检查这些平台是预装了Java 2的实现,请到http://java.sun.com/cgi-bin/java-ports.cgi查询Sun提供的第三方Java实现饿清单。

您使用的Java实现应该拥有完整的配置操作指南,但关键是设置环境变量PATH(不是CLASSPATH),使之指出包括Java和Javac的目录,一般是java_install_dir/bin。例如,如果您使用windows操作系统,并将SDK安装在C:\j2sdk1.4.1_01中,您可能需要将下面的行加入到C:\autexec.bat文件。切记,autoexec.bat只在系统启动时执行。

Set PATH=C:\j2sdk1.4_01\bin;%PATH%

如果您想下载已经配置好的autoexec.bat文件,包含PATH设定以及本章论述的其他设置,可以到http://www.eoreservlets.com/,转到相应的源代码档案文件后,选择第2章。

在windows NT/2000/XP中,您还可以在My Computer上右击鼠标,选择Properties.然后选择Advanced,再选择Environment variables【我的电脑】|【属性】|【高级】|【环境变量】。更新PATH的值,然后单击OK按钮。

在UNIX中,如果SDK安装在/usr/j2sdk1.4.1_01中,并且您使用C外壳。您需要将下面的内容放入到.cshrc文件中。

Setenv PATH/usr/j2sdk1.4.1_01

重启后(视窗;没有必要的,如果你以交互方式设置的变量)或注销并重新登录的(UNIX),验证Java的设置是通过打开一个DOS窗口(Windows)或shell(UNIX)并键入java的版本正确, javac的互助。你应该看到一个真实的结果两次,不是一个未知的命令的错误消息。另外,如果您使用的集成开发环境(IDE),如Borland公司的JBuilder,Eclipse中,IntelliJ IDEA的,或Sun ONE Studio中编译和运行一个简单的程序,以确认该IDE知道您安装Java。

基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)相关推荐

  1. 基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...

  2. 基于java的出租车计价器系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 出租车计价器设计与实现 在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生.但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进.台湾是计价 ...

  3. 基于java的俄罗斯方块游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    基于Java的俄罗斯方块游戏的设计与实现 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛 ...

  4. 基于java的校园二手平台系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    以下是一个基于Java的校园二手平台系统的毕业设计建议: 1. 系统概述: 校园二手平台系统是一个用于学生之间进行二手物品交易的应用程序.通过该系统,学生可以方便地发布和浏览二手物品的信息,并进行交流 ...

  5. 基于jsp的项目管理平台系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 基于Java EE平台项目管理系统的设计与实现 随着社会信息化的发展,很多的社会管理问题也一并出现了根本性变化,项目公司的报表及文件管理也发生了变化,以前的管理是一个分布式的信息,然后围绕中 ...

  6. 基于jsp的农产品销售管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 基于WEB的农产品销售管理系统 本文论述了基于JAVA.Web的农产品销售管理系统开发的目的及意义,目的是为了农产品资源的合理利用和物资的充分交流,有些地方富余而卖不出去,有些地方却吃不上. ...

  7. 基于java的新闻发布及管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目说明报告 题  目:新闻发布及管理系统的设计与实现 本课题来源及研究现状:  课题来源 21世纪是信息的时代,是网络的时代,进入信息社会高速发展的时代,数字化革命给所有领域带来新的改变.信息技术的 ...

  8. 基于jsp的网上招标系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    说明书报告 从本世纪初,互联网开始加速发展,各种创新型应用和互联网新概念不断出现,例如搜索引擎.电子商务.博客.维基百科.RSS.3G.web2.0.长尾理论等.这些应用和概念与知识管理都有着或多或少 ...

  9. 基于jsp的高校固定资产管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    摘本文基于Java语言,设计与实现了一个高校固定资产管理系统.该系统提供了资产信息管理.资产入库.资产领用.资产报废等功能,旨在帮助高校高效管理和维护固定资产.本文详细介绍了系统的需求分析与设计.数据 ...

最新文章

  1. ISA Server中基于L2TP实现远程拨入***
  2. Promise 化回调式函数
  3. 成功解决FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `ar
  4. STM32开发 -- base64详解
  5. [vue] vue自定义事件中父组件怎么接收子组件的多个参数?
  6. java三个线程 顺序执行_如何确保三个线程顺序执行
  7. 服务器虚拟化 远程,服务器虚拟化 远程
  8. 帝国php使用系统变量,帝国cms常用变量汇总
  9. 【广度优先搜索】一个实例+两张动图彻底理解 BFS | 思路+代码详解 | 用 DFS 自动控制我们的小游戏
  10. 【NOIP2015】【Luogu2670】扫雷游戏(搜索,字符串输入输出)
  11. 【优化算法】社会群体优化算法(SGO)【含Matlab源码 1449期】
  12. ssh配置config文件
  13. java 宿舍管理系统教学,java学校宿舍管理系统
  14. svn忽略不需要同步的文件夹_配置管理-SVN使用指南 - wuli潇潇
  15. 万字综述:如何打造自动驾驶的数据闭环?
  16. 计算机考试没有输入法怎么办,输入法没有了怎么办呢 解决方法有哪些
  17. 图像修复实例解析(二)
  18. logstash 数据重复问题
  19. java 个人博客开发_Java实现个人博客系统
  20. 【LoadingDialog】标准款待加载对话框

热门文章

  1. python测试驱动开发_使用Python进行测试驱动开发的简单介绍
  2. vue开发规范(单文件组件)
  3. 服务器虚拟化专用ovf模板,科学网—开放虚拟化格式规范2.0.0——OVF package - 唐宏伟的博文...
  4. 台式计算机强制关机,台式电脑强制关机按什么键
  5. Python学习培训方法
  6. Unity Shader graph 毒液
  7. 【日常开发必备】1.5W+字的 MySQL 速查手册
  8. 在Centos8上部署Django环境(Nginx+mysql+uwsgi)
  9. C# - 音乐小闹钟_BetaV1.0
  10. CSS使用小操作(隐藏滚动,实现三角行等...)