基于SSH的婴幼儿产品销售系统的开发与设计毕业设计论文

源码下载  http://www.byamd.xyz/hui-zong-1/

摘要

科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,网上购物也以方便、快捷、费用低的优点正慢慢地进入人们的生活,本系统的题目基于ssh的婴幼儿产品销售系统的设计与实现,通过这个平台,消费者足不出户就可以了解很多的商品信息,给消费者带来了极大的方便。

本系统采用了Browser/Server体系结构,JSP(Java Server
Page)作为前台开发工具,MySQL作为后台数据库进行开发。最终系统实现的系统将分为管理员和会员两个角色,系统管理员部分的主要功能包括修改登录密码、会员信息管理、商品类别管理、商品信息管理以及订单信息管理,会员部分的功能主要有在线注册与登录、浏览商品信息、商品查询以及在线订购这个功能模块。

关键词:B/S;JSP;MySQL

Abstract

The progress of science and technology change rapidly, make human life has
undergone tremendous changes, the rapid development of computer technology, the
industries have been popularized and used widely in the aspects of computer
technology application. The advent of the information age has become an
irresistible trend, the human civilization is entering a new era. Therefore,
online shopping is convenient, fast, with advantages of low cost is slowly into
people’s lives, the system design and development based on the topic of mobile
phone sales system JSP, through this platform, consumers remain within doors can
understand a lot of commodity information, brought to consumer convenience.

The system uses the Browser/Server architecture, JSP (Java Server Page) as a
development tool, MySQL as the backstage database development. System to achieve
the final system will be divided into administrator and member of the two roles,
the system administrator of its main functions include changing the password,
member information management, category management, product information
management, order information management, member with the main function of the
online registration and login, browse commodity information, commodity inquiry,
online ordering this function module.

  1. 引言

当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,计算机被广泛应用于B/S系统环境。计算机的好处在于它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了安全性。

对于复杂的信息管理,计算机能够充分发挥它的优越性[1]。计算机与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了婴幼儿用品商家对婴幼儿用品的网上销售管理而设计的。

  1. 课题研究意义及背景

随着国民经济的迅速发展以及科学技术的全面进步,计算机行业也是迅速发展,以计算机以及通信及时的为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的提高,人们对生活的质量以及工作的环境要求也是越来越高。现在企业或商家的信息管理[2],大部分都采用人工管理模式,这相对于规模比较小的公司来说,是可以应付日常的管理需要的。但是,随着各行各业竞争日益的激烈,商家必须提高信息管理的工作效率,而解决这些问题的途径之一,就是将信息管理系统引入到管理机制中来。

现今属于计算机的时代,任何信息都可以通过计算机来进行管理,计算机处理信息的高效性和准确性可以极大的提高人员办公的效率,同时还可以降低出错率,让诸多复杂繁琐的工作都由计算机来辅助完成。然而要想使用计算机来对婴幼儿用品管理就必须使用相应的婴幼儿用品管理系统[3],因此,开发这样的婴幼儿用品商城成为了很有必要的事情。本论文所介绍的便是一个婴幼儿用品商城的设计开发过程,以方便实现婴幼儿用品商家对销售信息管理的系统化,规范化以及自动化,从而达到提高婴幼儿用品管理效率的目的。

  1. 论文的目的及设计要求

婴幼儿用品商城主要目的是对婴幼儿用品商家所有的销售信息进行管理,并且合理管理好管理员发布新的商品信息、对商品信息进行维护、会员浏览查询商品以及完成订购的管理流程。提高婴幼儿用品管理的工作效率,降低管理的成本。其开发主要包括后台数据库的建立和维护,以及前端应用程序的开发。前者要求建立起数据一致性各完整性强、数据安全性好的数据库。而后者则要求应用程序具有功能完备、易用等特点。因此本婴幼儿用品商城采用JSP技术和MySQL数据库进行系统的开发。

系统的设计将分为系统管理员和会员两个角色,系统管理员可以管理会员信息、商品类别信息、商品信息以及订单信息,会员可以在线查看所有的商品信息、根据商品名称和价格查询商品以及在线订购[4]。在实现这些功能的同时,还对本婴幼儿用品商城的操作界面进行了很好的设计,极力为用户提供一个友好的操作环境。我们主要从以下的三方面着手:可交互性、信息显示以及数据的输入。

开发工具及技术

开发工具

此次设计主要采用MyEclipse加Tomcat后台服务器进行,数据存储使用Oracle数据库进行管理,下面对MyEclipse、Tomcat及Oracle数据库进行简要介绍。

(1)MyEclipse

MyEclipse,是一个十分优秀的用于开发Java,
J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse
Enterprise Workbench ,简称MyEclipse)是对Eclipse
IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,
Struts, Spring,Hibernate,JSP, CSS, Javascript, SQL。

(2)Tomcat

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

(3) Oracle

Oracle数据库系统是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。能在所有主流平台上运行(包括windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

JSP

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java
Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

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

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

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

JavaScript

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

SSH

SSH 在J2EE项目中表示了3种框架,即 Spring + Struts
+Hibernate。Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod
Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。它的优点有:

(1)SSH把底层进行了很好的封装,开发人员可以更专注于业务处理,开发效率高,层次清晰,易于维护及扩展。

(2)SSH把数据库,实体,配置都进行了整合,封装了层次的结构,在框架的融合,代码的耦合有很好的优势,便于编程的持续化,扩展化,维护化。

(3)实现MVC模式。结构清晰,使开发者只关注业务逻辑的实现。可以使用丰富的tag、Struts的标记库(Taglib),能大大提高开发效率。另外提供Exception处理机制;数据库链接池管理等。

下面简单介绍一下SSH中各框架的含义。

(1)Struts

Struts框架结构如图1.1所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3yRywqAs-1617337997258)(media/19f69c111b8b2629aaf539eda26a6fa5.png)]

图1.1 Struts框架结构图

Struts对Model,View和Controller都提供了对应的组件。

在上图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。

Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。

Model部分由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。

JavaBean则封装了底层的业务逻辑,包括数据库访问等。

View部分采用JSP实现。

Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

(2)Spring

Spring的出现是为了解决企业应用开发的复杂性,它使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,适用于任何Java应用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Spring从大小与开销两方面而言都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。Spring还提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计和事务管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑。它们并不负责其它的系统级关注点,例如日志或事务支持。

同时Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,可以配置你的每个bean如何被创建基于一个可配置原型,bean可以创建一个单独的实例或者每次需要时都生成一个新的实例,以及,它们是如何相互关联的。Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等)。所有Spring的这些特征保证更干净、更可管理、并且更易于测试的代码的编写。它们也为Spring中的各种模块提供了基础支持。

(3)Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

软硬件需求

(1)硬件需求:

CPU:Pentium以上计算机

内存: 512M以上

(2)软件需求:

操作系统版本:Windows XP /vista/Win7

开发工具:MyEclipse 8.5

后台服务器:Apache Tomcat 6.0

开发语言:Java

浏览器:IE、猎豹、Google Chrome浏览器

可行性分析

开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。

技术可行性

本系统开发工具是MyEclipse和Oracle数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,本系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。

经济可行性

本系统所用的软件都是开源的,为开发软件节省了大量的金钱和时间,达到降低成本,提高开发效率的目的,本系统对计算机配置的要求不高,开发过程中使用个人笔记本电脑完全可以满足要求,在经济上具有绝对的可行性。

操作可行性

本系统操作简单,输入信息页面大多数都是采用文本框形式,只需根据自己的语言习惯将内容风格保持一致即可,无其他条件;在很多页面还采取了下拉框的选择形式,某些地方信息甚至可以自动生成,无需输入;时间的输入也是用的日历控件,操作简便;文件上传也是通用易懂的操作形式,对操作人员的要求很低。对WINDOWS操作熟练的人员只需对本系统的操作稍加培训即可工作,而且本系统可视性非常好,在技术上基本无难度。

法律可行性

本婴幼儿产品销售系统是自行开发的网上购物系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,系统实现上使用的网络上一些开源的代码块,在使用到的部分都会注明出处,不存在侵权等问题,即法律上是可行的。

  1. 研究现状及设计目标

    1. 购物商城的现状

一直以来一般的婴幼儿用品商家都是使用传统的人工方式管理婴幼儿用品的日常工作,在计算机尚未在信息管理中广泛使用之前,销售信息的管理[5]主要依靠手工,手工过程的不足之处显而易见,因此管理起来效率比较低并且容易出现错误。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力,方便对所有销售信息进行精准的管理。

  1. 购物商城优缺点分析

1.优点

(1) 采用易于维护的B/S模式。

(2) 采用高性能的关系型数据库来存储信息资源。

(3) 信息更新及时,界面方便用户操作。

2.缺点

(1) 软件稳定性有待提高

现在很多的网站或者系统都是基于B/S模式,由于B/S模式存在并发性操作,不健全的设计和代码会大大影响软件的稳定性。并且软件提供商为了满足会员的需求,对软件进行多次修改,易造成系统的不稳定,为后期的维护工作带来了巨大的困难。

(2) 存在安全隐患

B/S模式系统是基于浏览器实现会员端操作的,由于浏览器常采用脚本模式,而脚本语言本身并不是十分安全完善的,所以存在一些安全隐患。

  1. 现行研究存在的问题及解决方法

    1. 现行研究存在的问题

1.数据库选择问题

选择一个功能强大,移植性强的关系型数据库可以有效的与其它数据库结合,减少程序对特定数据库的依赖,增加系统的移植性[6]。

2.可扩展性

为了满足会员需求的不断增多,程序难免会经常修改和升级,因此要求程序应具备良好的可扩展性。

3.开发平台和语言

好的平台和语言能够减少开发成本,延长软件的生命周期。

  1. 解决办法

鉴于目前婴幼儿用品商城的需求与实际情况,解决上述问题应具备以下几方面的要求:

1.选用MySQL数据库[7],可以更为持久的存放数据,当存储设备改变时,不用重写程序代码便能很好的移植到其它数据库系统。

2.系统采用MVC模式,程序的实现过程采用模块化,把业务信息按照应用功能模块拆分开:业务逻辑与数据库服务器分开,用户界面与业务逻辑分开,任一方的改变都不会过多影响对方。

3.在开发平台和语言上,使用My
Eclipse开发平台[8],并使用JSP语言作为主要的开发语言,JSP语言一次编写随处运行以及强大的可伸缩性等优点更方便系统的开发以及维护。

  1. 本课题要达到的设计目标

本课题采用B/S模式,面向婴幼儿用品商家而开发的婴幼儿用品商城[9],系统将可以分为系统管理员和会员两种用户登录,登录时需要对身份进行验证,登录以后每个权限用户只能使用自己权限范围内的功能,其各角色功能如下:

1.系统管理员:

a、具有会员管理功能,实现了对所有会员的管理操作,已经设置添加的会员才可以使用自己的账号密码登录系统进行相关的商品信息浏览、查询及订购等功能。

b、具有商品类别管理功能,对所有类别信息进行增删改查的管理操作。

c、具有商品信息管理功能,对所有商品信息进行增删改查的管理操作。

d、具有订单信息管理功能,对所有订单信息进行查看、受理和删除的管理操作。

2.会员

a、具有浏览商品功能,可以浏览系统中所有商品信息。

b、具有查询商品功能,根据商品名称和价格进行查询,返回相关商品信息。

c、具有订购商品功能,可以选择需要的商品进行订购。

d、具有查看订单功能,可以查看自己已经有的订单信息。

  1. 经济效益分析

本校婴幼儿用品商城是针对婴幼儿用品商家而开发的,一方面系统中友好的人机界面和更强劲的功能支持,会让使用本系统的人员的工作效率进一步提高,从而节省人力、物力,进而提高经济效益;另一方面系统开发成本低,现有PC机即可提供该系统开发工作需要的所有硬件设备环境,对于开发的成本要求也比较低。

  1. 关键问题及分析

婴幼儿用品商城在设计与实现过程中,对系统安全性和稳定性要求较高,系统采用前台显示和后台数据处理分离的方式来解决这一问题。考虑系统管理员和会员进入系统后功能需求的不同,需要对各用户类型的不同功能做详细分析。

  1. 研究设计中要解决的问题

在研究设计中,还存在着诸多有待解决的问题与困难,会用到许多以前未学过的难点去学习与攻破。现将研究设计中要解决的问题总结如下:

  1. 数据表间联系

婴幼儿用品商城所涉及的数据信息复杂,更具有复杂的业务逻辑关系,设计的表与表之间需要通过外键联系起来。外键的联系保证在婴幼儿用品管理过程中业务操作稳定的关键。数据库设计的好坏将直接影响到前台页面的稳定运行[10~12]。

由于婴幼儿用品商城涉及到了具体的管理员发布商品、会员查看商品以及订购商品的功能操作,数据库中的数据不能随意删除,以防出现商品或订单信息丢失的问题。若表间的联系建立的不够完善,当程序实际运行时就会出现很多问题和漏洞,结果造成的损失将无法弥补,程序也不便于维护。

  1. 系统安全性

由于本婴幼儿用品商城是基于Web的,所有用户都可以通过浏览器来登录本系统,因此要对用户的身份进行严格的验证以确保整个系统信息的安全。在系统设计过程中,用户登录时只有输入正确的用户名以及密码才可以成功的登录到系统中,并且根据不同的用户角色分配不同的功能权限。同时在每个页面中都要添加用户登录状态以及权限的验证,即每次进入指定的功能页面,都需要验证用户是否正常的登录系统,并且验证用户是否有权限进入这个功能页面,这样可以防止用户通过非法途径进入到系统中。

  1. 具体实现中采用的关键技术

一个程序的开发采用什么样的关键性技术是至关重要的。技术的好坏将直接影响着系统的运行速度,兼容性,稳定性等。本婴幼儿用品商城将主要采用JSP技术,在开发过程中采用分层开发的方法,其具体描述如下:

  1. J2EE技术

文献[14]介绍了J2EE 技术,这种开发技术是属于SUN公司的,并且它是在Java
2的平台基础上进行发展完善,并且它具有Java语言所具有的多个优点,包括:语言方便,可移植性高等等,还能够对多种技术提供支持帮助,包括:EJB,JSP、API等技术,从这几方面来使得应用系统的开发变得简单易行,复杂度在一定程度上有所降低,还能够为现在的应用系统体系提供帮助。

J2EE技术一般分为四个层级。如下图2-1所示。

图2-1 J2EE层次结构图

文献[15]介绍了J2EE优势:

1.跨平台性。Java在使用的时候,对平台没有特别要求,在多种操作平台上都能够使用,包括Windows、Linux等等平台。

2.稳定性。基于J2EE技术而开发的应用系统都拥有一定的稳定可靠性,一般能够满足用户的全年24小时式的不间断使用条件,避免应用系统的崩盘死机。

  1. JDBC技术

文献[16]介绍了JDBC是一种较为常见的数据库链接
,通过该链接可以让程序更快更好的访问到所需要访问的数据库 。他是广大程序员的结晶
,他的出现让开发人员能够编写数据库应用程序
,可以构建更高级的工具和接口 。

JDBC API是一个Java
API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接。

JDBC库中所包含的API任务通常与数据库使用:

1.连接到数据库

2.创建SQL或MySQL语句

3.在数据库中执行SQL或MySQL查询

4.查看和修改记录

Java是简洁明了,方便使用,易于编写数据库应用程序的杰出语言。

  1. MVC编程模式

在JAVAWEB程序的设计时,通常用适当的设计方法。好的设计方法是比开发和维护简单的多的。

文献[17]介绍了MVC技术就是一种比较科学合理的设计模式结构,其模型结构分为三个层次,包括:
模型层、视图层以及控制层,通过这三个层次能够对整个系统的各方面功能起到系统化的实现作用,并且将业务流程以及数据输入分别进行表述存储,降低了后续维护的难度。

(1) 视图层:在视图层可以对相关数据进行展示。
用户可以通过计算机显示端直观的开到运行的画面,称之为视图。通过视图用户可以查看到系统中的数据,并且可以向系统中输入数据,除此之外并无其他功能提供实现,只能做到信息共享的功能。视图层能够在整个系统中进行数据的搜索以及数据对应的信息进行实时描述,从而使得用户的界面能够不断进行数据的更新显示,具有时效性,但是不能对其整体模型构架进行更新改变。

(2)
模型层:该层次就是整个应用系统体系的主要组成成分,在系统中的数据发生实时更新之后,其将会告知系统业务层和视图层,这就是一对多的系统工作模型,可以提高系统的整体利用率,减少代码的多次重复编写,并且能够降低系统的后续维护复杂度。

(3)控制层:这一层次就是能够对数据进行计算分析处理,并且对视图层的数据进行相应的模式显示,并对模型层发出的一些请求进行相应的处理。简单点来说,就是当系统发送接收某种特定的请求时,控制层将这些请求按照要求发送到与请求对应的模型层次中去,以此来完成请求命令,最后显示返回用户需要的数据。

MVC模式具有非常多优秀的特点,文献[18]介绍了在创建展示性系统时其优点非常明显。

  • 该模式结构可用于多种条件要求的系统中,无论是维护方面还是系统扩展方面都能够加以完成,比如电子商务应用系统、ERP应用系统等等;

  • 该模式能够很方便地以视图的方式展示多方面的数据,以此来使得系统能够较简单的对其他客户端提供支持。

  • 该模式能够很好地对用户与系统的交互模式进行表达,方面模式构建。

从设计者的方面来说,文献[19]介绍了MVC模式就是将逻辑计算控制和数据独立开来,从而使得整个开发过程简明易懂,让开发者能够各自负责对应的模块,比如:前台就是对视图层进行关注维护,而后台就是要对系统内部的逻辑运算进行维护,通过这中分类维护的方式,能够大大提高系统开发与维护的效率。

  1. 需求分析

设计的基本思想

设计思想遵循以下几点:

(1)
采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页搜索方式的用户。

(2)
采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。

(3)采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。

(4)简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。

(5)速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。

(6)设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。

功能模块需求分析

本系统最大的特点是使用操作简单、友好的提示信息。

本系统将实现以下基本功能:

(1)系统具有简洁大方的页面,使用简便。

(2)管理员用户具有商品类别管理、商品信息管理、商品信息更新管理、订单管理、会员信息管理、系统管理功能。

(3)普通用户具有浏览商品、商品查询、购买商品、修改个人信息等功能

(4)具有较强的安全性,避免用户的恶意操作。

系统的功能分普通用户平台,管理员平台。系统的总体功能图如图3.1所示。

图3.1 系统的总体功能图

普通用户功能模块图说明:普通用户可以在线浏览商品,查询商品,如果要购买、下订单操作,首先需要注册一个个人账号,然后登陆到系统中,如功能图3.2所示。

图3.2 普通用户的用户功能模块图

管理员功能模块图说明:管理员是功能最多的一种用户角色。

(1)商品类别信息管理模块:在该模块中完成对商品类别信息的管理,包括类别录入、查询、修改、增加和删除等功能操作。其中类别信息包括类别名称、类别介绍等信息。

(2)商品信息管理模块:在该模块中定义了商品信息的管理,其功能包括商品录入、查询、删除等操作。

(3)会员管理模块:该模块中包括浏览会员信息和删除会员信息2个功能。

(4)系统管理模块:在该模块中定义了系统日常维护的功能,包括公告信息的添加和查询,修改功能,以及系统用户管理和修改密码等功能。

管理员用户功能模块图如图3.3所示。

图3.3 管理员用户功能模块图

系统用户用例图

普通用户用例图

出于安全性的考虑,普通用户对商品的操作只有浏览商品和商品查询、商品购买等功能,其他的删除修改功能都没有设计,因为普通用户最主要关心的就是商品信息的更新和查询等功能。而对于网站会员而言,对自己信息具有修改的权利是必须的,所以添加了用户修改个人信息的功能。普通用户用例图如图3.4所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2ZdW9t7-1617337997277)(media/288a264d2139048a326eca3bd93b7f8c.emf)]

图3.4 普通用户用例图

管理员用例图

此次系统的实现里,没有设计商家自主添加商品的权限,而把添加商品的这些功能全部赋予了管理员,所以管理员是系统的核心用户。管理员涉及到六大功能模块,对系统的所有信息有着操作的权限,能够及时动态的更新系统的各项信息。管理员用户用例图如图3.5所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1BUWrpfx-1617337997280)(media/df5e945c6b39f69736539181641d2dc5.emf)]

图3.5 管理员用例图

性能需求

系统的安全性

本商品交易系统在管理权限上要严格进行控制,具体要求如下:

(1)要想管理本系统的商品信息,必须先要凭用户名和密码登陆到系统中,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。

(2)在具体实现中设定不同权限,不同权限用户登录到系统后,不能越级操作,管理员可以使使用所有模块;普通用户只能在线浏览信息,比如,查询商品信息、在线购买、下订单、修改个人信息的功能。

(3)使用线程的思想,登录用户超过一定时间未进行操作则自动退出。

数据库的安全性

(1)数据库表结构设计定义主键,长度,字段类型,各种约束,保证数据库中数据的安全与统一。

(2)使用JS校验页面录入数据,保证录入数据的安全性。

界面需求

界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。

  1. 输出设计

输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。

系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。

  1. 输入设计

输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。

输入设计的原则有如下几点:

(1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。

(2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。

(3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。

(4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误。

需求分析是软件开发过程中的重要阶段,其基本任务是回答“系统必须做什么及该怎样做”这个问题。随着市场经济的发展,信息管理系统已经逐渐走入了人们的生活,并在日常的信息统计管理中发挥着重要的作用,在这种形势的驱使下,为了满足婴幼儿用品商家的需求,婴幼儿用品商城被设计和开发。

  1. USE-CASE用例图

婴幼儿用品商城分为系统管理员和会员两类用户角色[20]。整个系统的用例功能包括修改登录密码、类别信息管理、会员信息管理、商品信息管理、订单信息管理、浏览商品、查询商品以及订购商品,如图4.1所示为本系统的整体用例图。

  1. 系统整体用例图

    1. 系统主要业务流程

若要开发一个良好的系统,就要先明确其系统的业务流程,婴幼儿用品商城主要的业务就是实现商品信息的在线发布、浏览以及订购的功能。首先管理员可以发布新的商品信息,会员登录系统之后可以对所有的商品信息进行浏览查看,也可以订购商品,生成订单之后需要管理员对订单进行受理。根据这个商品发布、浏览、订购以及订单审批的流程绘制出其业务流程如下:

  1. 婴幼儿用品管理流程图

    1. 功能需求

1、登录验证功能:为了保证婴幼儿用品商城信息的安全性,进入系统时需要对用户身份进行验证,如果验证无误可成功进入系统,如果用户名或者密码不正确将返回错误提示要求重新输入。

2、会员管理功能:该功能属系统管理员功能,实现了系统管理员对所有会员的管理操作,可以添加一个新的会员,也可以对已经添加的会员进行删除的操作。已经设置添加的会员才可以使用自己的账号密码登录系统进行相关的商品浏览、查询及订购等功能。

3、商品类别管理功能:该功能属系统管理员功能,其功能与会员管理功能类似,可以添加一个新的商品类别,也可以对已经添加的商品类别进行删除的操作。

4、商品信息管理功能:该功能属系统管理员功能,其功能与商品类别管理功能类似,可以添加一个新的商品信息,也可以对已经添加的商品信息进行删除的操作。

5、订单信息管理功能:该功能属系统管理员功能,可以对已经存在的订单信息进行查看、受理和删除的操作。

6、查询商品信息功能:该功能属于会员功能,会员可以根据商品名称和价格对商品信息进行查询。

7、商品订购功能:该功能属于会员功能,会员可以选择商品信息进行订购,生成订单。

  1. 开发环境

操作系统:Windows 7

开发语言:JSP、Java语言

数据库:MySQL

WEB服务器:Tomcat 6

开发工具:Dreamweaver、MyEclipse6 8.6

会员端浏览器:IE9

  1. 系统设计

婴幼儿用品商城设计的好坏将对系统的开发和维护起着至关重要的作用。系统的实现需要符合所有用户的要求,只有对用户的要求考虑的全面,才会开发出功能强大稳定的婴幼儿用品商城。

  1. 系统体系结构

本系统采用的是B/S的体系结构模式,系统界面完全通过浏览器实现,一部分事务逻辑在前端实现,但是系统的主要事务逻辑在服务器端实现。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。用户通过浏览器向WEB服务器发出请求,WEB服务器将请求发送给数据库。数据库接到请求后将结果再返回到WEB服务器中,最后由WEB服务器传给浏览器显示给用户。

在浏览器/服务器(B/S)框架结构中,使用者可以通过个人终端上的浏览器对网络体系中的大对数服务器发送数据请求,并获取服务器返回的数据信息。该系统服务框架能够降低客户计算机的数据发送以及接收的运行工作量,因为在这种服务框架之下,只需要在客户终端上安装客户端的运行系统软件就可以实现对服务器数据的请求发送以及数据返回,在这个过程中将大量的工作量都让服务器去进行完成,包括:应用程序的运行操作以及对数据库中数据的调用及访问。

因为浏览器/服务器框架结构的不断完善,其在WWW技术支持下,使用较多类型的脚本语言,在浏览器中就可以完成以前需要特定软件才能完成的特定功能,这样既降低了计算机的工作量也降低了软件的开发成本。基于B/S架构软件的安装,修改,维修的需要在服务器端解决。使用该系统时,只需要一个浏览器用户可以运行所有的模块,从而实现了“零客户端”功能,很容易在运行时自动升级。B/S架构也提供了一个均质机,网上异构网络,异构应用服务的联机,统一的开放服务最现实的基础。

  1. 系统功能结构

根据需求调研结果确定本婴幼儿用品商城的功能结构,系统管理员功能主要包括修改登录密码、会员信息管理、商品类别管理、商品信息管理以及订单信息管理,会员功能有个人信息管理、商品信息浏览、商品信息查询、商品订购以及会员查看订单这几个功能,如图5.1所示为本婴幼儿用品商城的功能结构图。

功能1

  1. 系统功能结构图

数据库的分析与设计

计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。

数据库的设计需要经过规划,一般分为需求分析、概念设计、逻辑设计、物理设计5个步骤。

数据库的概念结构设计

概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。

概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,

根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。

  1. 普通用户实体图,如图4.1所示。

图4.1 普通用户实体图

(2)商品类别实体图,如图4.2所示。

图4.2 商品类别信息实体图

(3)商品信息实体图,如图4.3所示

图4.3 商品信息实体图

(4)管理员信息实体图,如图4.4所示

图4.4 管理员信息实体图

(5)订单信息实体图,如图4.5所示

图4.5 订单信息实体图

数据库的逻辑结构设计

我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:

(1)每一个实体要转换成一个关系

(2)所有的主键必须定义非空(NOT NULL)

(3)对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。

根据对系统的主要功能的分析,婴幼儿用品商城的表有系统管理员表、会员信息表、商品类别表、商品信息表、订单信息表以及订单项信息表,各个表结构描述如下:

1、系统管理员表t_admin

系统管理员表里面存储了管理员信息。如表5.1:

  1. 管理员信息表
列名数据类型长度允许空是否主键说明
userIdint4编号
userNamevarchar50用户名
userPwvarchar50密码

2、会员信息表t_huiyuan

会员信息表里面存储了所有的会员信息。如表5.2:

  1. 会员信息表
列名数据类型长度允许空是否主键说明
idint4自动编号
loginnamevarchar50账号
loginpwvarchar50密码
xingmingvarchar50姓名
xingbievarchar50性别
nianlingint4年龄
dianhuavarchar20联系方式
addressvarchar20住址

3、商品类别表t_leibie

商品类别表是用于记录商品类别信息。如表5.3:

  1. 商品类别表
列名数据类型长度允许空是否主键说明
idint4类别ID
Mingchengvarchar50类别名称

4、商品信息表t_goods

商品信息表里面存储了所有的商品信息。如表5.4:

  1. 商品信息表
列名数据类型长度允许空是否主键说明
idInt4商品ID
leibieIdInt4类别ID
mingchengvarchar50名称
jieshaovarchar50介绍
fujianvarchar50商品图片
jiageint50商品价格

5、订单信息表t_order

订单信息表存储了所有的订单信息。如表5.5:

  1. 订单信息表
列名数据类型长度允许空是否主键说明
idint4自动编号
bianhaovarchar50订单编号
xiadanshivarchar50下单时间
ztvarchar4状态
songhuodizhivarchar50送货地址
fukuanfangshivarchar50付款方式
zongjiavarchar50总金额
huiyuanIdint4会员

5、订单项信息表t_mingxi

订单明细表存储了订单中所有的订单项信息。如表5.6所示:

  1. 订单明细表
列名数据类型长度允许空是否主键说明
idint4自动编号
orderIdint50订单ID
goodsIdint50商品ID
goodsShuliangint50数量

数据库的连接原理

采用Spring管理的下的Hibernate连接数据库的方式。

(1)首先在web.xml中配置spring的监听。

<!—配置Spring配置文件地址–>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext.xml</param-value>

</context-param>

<!—配置Spring监听–>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

(2)applationContext里配置映射驱动bean和映射文件地址

<!—配置Oracle数据库驱动–>

<bean id=“dataSource”

class=“org.apache.commons.dbcp.BasicDataSource”>

<property name=“driverClassName”

value=“oracle.jdbc.driver.OracleDriver”>

</property>

<!—配置数据库Url地址–>

<property name=“url”

value=“jdbc:oracle:thin:@localhost:1521:XE”>

</property>

<!—配置数据库用户名和密码–>

<property name=“username” value=“anne”></property>

<property name=“password” value=“anne”></property>

</bean>

<bean id=“sessionFactory”

class=“org.springframework.orm.hibernate3.LocalSessionFactoryBean”>

<property name=“dataSource”>

<ref bean=“dataSource” />

</property>

<!—配置数据库方言–>

<property name=“hibernateProperties”>

<props>

<prop key=“hibernate.dialect”>

org.hibernate.dialect.OracleDialect

</prop>

<!—显示sql语句–>

<prop key=“hibernate.show_sql”>true</prop>

<prop key=“hibernate.hbm2ddl.auto”>update</prop>

</props>

</property>

<!—配置表映射地址–>

<property name=“mappingResources”>

<list>

<value>com/model/TAdmin.hbm.xml</value>

<value>com/model/TUser.hbm.xml</value>

<value>com/model/TGoods.hbm.xml</value>

<value>com/model/TOrderItem.hbm.xml</value>

<value>com/model/TOrder.hbm.xml</value>

</list>

</property>

</bean>

  1. 系统实现及测试

在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上。在管理信息系统的生命周期中,经过需求分析、系统设计等阶段,开始系统实施阶段。系统实施阶段继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。

  1. 系统主要模块的实现

    1. 系统登录功能界面

进入系统之后首先要进入到系统的登录页面,在登录页面中将验证用户输入的用户名以及密码是否正确,输入正确的用户名及密码才可以成功的登录系统,如果用户名或者密码错误将返回错误提示,其实现页面如图6.1、6.2所示。

后台登录

  1. 系统管理员登录界面

关键代码:

<script type=‘text/javascript’
src=’/yytyp/dwr/interface/loginService.js’></script>

<script type=‘text/javascript’ src=’/yytyp/dwr/engine.js’></script>

<script type=‘text/javascript’ src=’/yytyp/dwr/util.js’></script>

<script language=“javascript”>

function ccc()

{

if(document.ThisForm.userName.value=="")

{

alert(“请输入用户名”);

document.ThisForm.userName.focus();

return false;

}

if(document.ThisForm.userPw.value=="")

{

alert(“请输入密码”);

document.ThisForm.userPw.focus();

return false;

}

loginService.login(document.ThisForm.userName.value,document.ThisForm.userPw.value,document.ThisForm.userType.value,callback);

}

function callback(data)

{

if(data==“no”)

{

alert(“用户名或密码错误”);

}

if(data==“yes”)

{

alert(“通过验证,系统登录成功”);

window.location.href="/yytyp/admin/index.jsp";

}

}

function qing()

{

document.ThisForm.userName.value="";

document.ThisForm.userPw.value="";

}

</script>

</head>

  1. 会员登录界面

  2. 修改登录密码功能界面

管理员成功登录系统之后,点击导航栏菜单“修改登录密码”,系统跳转到修改登录密码子界面,在这里需要输入正确的原密码和设置新密码,才能实现修改操作,其实现页面如图6.3所示。

  1. 修改登录密码界面

    1. 会员注册功能界面

用户在登录系统后点击导航栏的“注册会员”菜单,将跳转到会员注册页面。在这里需要填写会员帐号、密码以及姓名信息。游客访问该站点的时候,可以注册成为会员,管理员登陆后可以管理会员信息,点击左侧的“会员管理“,页面调转中后台的是java类userAction,在此类中,读取数据库中,提取会员的信息,绑定到request对象,再输出到相应的jsp显示页面页面。

其实现页面如图6.4所示。

  1. 会员注册界面

    1. 会员管理功能界面

在会员管理页面中可以列表显示出所有的会员信息,并可以选择指定的会员信息进行删除的操作。其实现页面如图6.5所示。

  1. 会员管理界面

会员管理关键代码:

//删除用户信息

public String userDel()

{

TUser user=userDAO.findById(userId);

user.setUserDel(“yes”);

userDAO.attachDirty(user);

this.setMessage(“删除成功”);

this.setPath(“userMana.action”);

return “succeed”;

}

//

public String userXinxi()

{

TUser user=userDAO.findById(userId);

Map request=(Map)ServletActionContext.getContext().get(“request”);

request.put(“user”, user);

return ActionSupport.SUCCESS;

}

public String userMana()

{

List userList=userDAO.findAll();

Map request=(Map)ServletActionContext.getContext().get(“request”);

request.put(“userList”, userList);

return ActionSupport.SUCCESS;

}

  1. 商品类别管理功能界面

在商品类别信息管理页面中可以列表显示出所有的类别信息,并可以选择指定的类别进行删除的操作。其实现页面如图6.6所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDbwWr0e-1617337997301)(E:%5C%E5%B7%A5%E4%BD%9C%E6%97%A5%E5%BF%97%5C0210%5C%E5%9F%BA%E4%BA%8ESSH%E7%9A%84%E5%A9%B4%E5%B9%BC%E5%84%BF%E4%BA%A7%E5%93%81%E9%94%80%E5%94%AE%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%BC%80%E5%8F%91%E4%B8%8E%E8%AE%BE%E8%AE%A1%5Cimages%5C66b608421ab1dae2f3bfa29517d08827.png)]

  1. 商品类别管理界面

如果需要添加类别信息,可以进入到类别添加页面,添加时系统会对必填项进行非空验证。其实现页面如图6.7所示。

  1. 商品类别添加界面

流程图如下图所示

图5.12 商品类别信息录入流程图

类别管理关键代码:

//查询出数据库中所有状态是为删除的商品

public String catelogMana()

{

String sql=“from TCatelog where catelogDel=‘no’”;

List cateLogList=catelogDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get(“request”);

request.put(“cateLogList”, cateLogList);

return ActionSupport.SUCCESS;

}

//添加新类别

public String catelogAdd()

{

TCatelog catelog=new TCatelog();

catelog.setCatelogName(catelogName);

catelog.setCatelogMiaoshu(catelogMiaoshu);

catelog.setCatelogDel(“no”);

catelogDAO.save(catelog);

this.setMessage(“操作成功”);

this.setPath(“catelogMana.action”);

return “succeed”;

}

//删除类别

public String catelogDel()

{

String sql=“from TGoods where goodsDel=‘no’ and goodsCatelogId=”+catelogId;

List goodsList=goodsDAO.getHibernateTemplate().find(sql);

if(goodsList.size()>0)//类别是商品表商品类别外键,需要验证

{

this.setMessage(“请先删除此类别下的商品”);

this.setPath(“catelogMana.action”);

}

else

{

TCatelog catelog=catelogDAO.findById(catelogId);

catelog.setCatelogDel(“yes”);//更改删除标记

catelogDAO.attachDirty(catelog);

this.setMessage(“操作成功”);

this.setPath(“catelogMana.action”);

}

return “succeed”;

}

  1. 商品信息管理功能界面

商品信息管理页面功能是展示当前已经添加到系统当中的所有商品信息列表,可以选择指定的商品信息进行删除操作。其实现页面如图6.8中所示。

  1. 商品信息管理界面

如果需要添加商品信息,可以进入到商品添加页面,添加时系统会对必填项进行非空验证,是否为空是通过form表单中的οnsubmit="return
checkForm()来检查,checkForm()函数中是各种的校验输入数据的方式。其实现页面如图6.9所示。

  1. 商品添加界面

在整个系统中所有涉及输入日期的地方都是采用的mydata97这个日历控件的方式来实现,要在工程中导入Calendar.js文件,在jsp页面开始引入

<script type=“text/javascript” src="…/js/calendar.js"
></script>该js文件,在文本框的属性定义中定义方法οnclick="new
Calendar().show(this);"即可。

上传功能使用com.util.upload方法,上传时调用即可。

文本框使用网上开源的fckeditor文本框,页面直接嵌入如下代码即可使用:

<FCK:editor instanceName=“goodsMiaoshu” basePath="/fckeditor" width=“500”
height=“200” value=“请输入内容” toolbarSet=“Basic”>

</FCK:editor>

商品管理关键代码:

//商品添加

public String goodsNoTejiaAdd()

{

TGoods goods=new TGoods();

goods.setGoodsCatelogId(goodsCatelogId);

goods.setGoodsName(goodsName);

goods.setGoodsYanse(goodsYanse);

goods.setGoodsMiaoshu(goodsMiaoshu);

goods.setGoodsPic(fujian);

goods.setGoodsShichangjia(goodsShichangjia);

goods.setGoodsDel(“no”);

goodsDAO.save(goods);

this.setMessage(“操作成功”);

this.setPath(“goodsManaNoTejia.action”);

return “succeed”;

}

//商品删除

public String goodsNoTejiaDel()

{

TGoods goods=goodsDAO.findById(goodsId);

goods.setGoodsDel(“yes”);

goodsDAO.attachDirty(goods);

this.setMessage(“操作成功”);

this.setPath(“goodsManaNoTejia.action”);

return “succeed”;

}

//商品删除后页面商品显示

public String goodsDetailHou()

{

Map request=(Map)ServletActionContext.getContext().get(“request”);

TGoods goods=goodsDAO.findById(goodsId);

request.put(“goods”, goods);

return ActionSupport.SUCCESS;

}

//页面初始状态商品信息

public String goodsDetail()

{

Map request=(Map)ServletActionContext.getContext().get(“request”);

TGoods goods=goodsDAO.findById(goodsId);

request.put(“goods”, goods);

return ActionSupport.SUCCESS;

}

  1. 订单信息管理功能界面

订单信息管理页面功能是展示系统当中的所有订单信息列表,包括订单编号、、下单时间、订单状态、送货地址、付款方式以及总金额,点击明细按钮可以查看订单明细信息,可以选择指定的订单信息进行删除操作,也可以点击受理按钮进行受理。其实现页面如图6.10中所示。

  1. 订单信息管理界面

  2. 浏览商品信息功能界面

会员登录系统之后可以在系统首页即可看到最新上家的商品信息,点击可查看详细内容。其实现页面如图6.11、6.12中所示。

网站主页2

  1. 浏览商品信息界面

  1. 商品详细内容界面

    1. 商品信息查询功能界面

会员登录系统之后可以按照商品名称和价格取件查询商品信息,在这里输入商品名称关键字和价格区间数字,将返回有关商品信息。

描述:普通用户点击导航栏的“查询”。调用后台的java类goodsAction的goodsSearch方法查询所有的类别信息,并绑定这些信息到request对象中,在显示层jsp展示出来,然后用户点击类别名称,即可显示该类别的信息。

其实现页面如图6.13所示。

  1. 商品信息查询界面

    1. 订购商品功能界面

描述:登录用户可以将选中物品添加至购物车,可以在购物车页面看到选中商品信息。用户添加商品至购物车的流程图如图5.5所示。

图5.5 用户添加商品到购物车流程图

会员在详细商品信息可以选择喜欢的商品进行订购,填好数量之后点击商品信息下的订购按钮,系统将跳转到购物车界面,在这里可以选择继续购物还是提交订单去收银台。其实现页面如图6.14、6.15、6.16所示。

  1. 购物车界面

  1. 提交订单界面

订单信息3

  1. 订单提交成功提示界面

  2. 订单信息查看功能界面

会员登录之后点击右上角我的订单可以查看自己所有的订单信息,在订单信息列表中点击明细可以查看订单明细内容。其实现页面如图6.17所示。

订单信息3

  1. 订单信息列表界面

  2. 系统测试概述

1、软件测试

系统操作不止是对系统的结果进行判断分析是否正确,还要对系统内部的每一个模块进行细致化分析,确保每一个模块都能够有效的进行预订操作。在测试之前,要根据系统的结构层次,以及系统的类别制定科学有效的测试计划,并严格执行。为了最为真实的反应系统在真实环境下的使用情况,需要我们做到对环境进行现实的虚拟化,然后再对系统的相应时间,运行速度等等方面进行测试,然后根据测试结果再对系统进行进一步优化完善。

2、 软件工具

软件测试工具就是在降低人工的工作量的同时,对软件进行科学有效的功能测试的各个工具。

该方法能够提高在软件测试方面的工作效率,一般采用以下几种工具来对软件进行测试。

用户使用软件典型的测试工具分别为:

[开源测试工具]:

开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis

自动化功能操作测试工具开源:Watir、Selenium、MaxQ、WebInject

开源自动化测试工具的性能:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application
Load Simulator

[TestDirector]:测试工具所在的公司,是初次审判管理系统程序基于javaWeb产业的公司。

[质量中心]:对于Web网页进行测试管理的软件工具,能够科学的对各个测试阶段进行有效的管理,

[QuickTest Professional]:主要用来构建功能的运行以及数据的回归式检测。

[LoadRunner],预测系统和负载测试工具性能的行为。

[其他工具与自动化测试框架]:Rational Functional Tester、Borland
Silk系列工具、WinRunner、Robot等。

3、 功能测试

从用户的角度来看,功能测试就是对系统提供的各种功能进行测试,主要是黑盒测试。它是将系统作为一个黑盒子,系统的内部结构不考虑P
[ 3 ]
P的具体方法和系统通过逐项检查系统的各种功能是否完善,输入正确的数据能够得到所期望的输出,以及输入错误信息时,系统也能够进行处理。

4、 性能测试

性能测试就是对各个功能运行时的峰值负载条件进行模拟化测试。并且负载测试以及压力测试都属于性能测试的一部分,这二者能够进行互补式的结合运用。使用负载测试能够检测在不同环境下的系统工作能力,主要目的就是判断系统在不同的荷载之下的工作运行情况。而压力测试则是通过系统的条件边界进行测试系统,这样是为了模拟出系统在环境条件下能够正常运行的最高边界限制。

  1. 测试环境与测试条件

测试环境是在Windows7系统下,WEB服务器采用Tomcat6.0版本,开发语言采用JSP、Java语言,数据库应用的是MySQL,开发工具采用MyEclipse8.6,会员端浏览器要求在IE6.0及以上版本。

测试条件是程序环境配置好,正常运行MyEclipse和MySQL数据库正常运行的条件下测试的。

  1. 实例测试表格

对主要模块进行黑盒测试,测试结果如下表6.1所示:

表6.1系统测试表

测试项验证过程预期结果实际结果结论
系统管理员 登录系统管理员登录时输入 账号:admin密码:admin进入系统管理主界面进入系统管理主界面通过
会员 登录会员登录时输入 账号:liusan密码:000000进入系统首页进入系统首页通过
会员查看进入会员管理页面成功显示所有会员列表成功显示所有会员列表通过
会员删除进入会员管理页面,点击删除按钮删除成功,出现删除成功的提示删除成功,出现删除成功的提示通过
商品类别查看进入商品类别管理页面成功显示所有商品类别列表成功显示所有商品类别列表通过
新商品类别添加进入商品类别添加页面输入 名称:名称1添加成功,出现添加成功的提示添加成功,出现添加成功的提示通过
商品类别删除进入商品类别管理页面,点击删除按钮删除成功,出现删除成功的提示删除成功,出现删除成功的提示通过
商品查看进入商品管理页面成功显示所有商品列表成功显示所有商品列表通过
新商品添加进入商品添加页面 选择类别:类别1 输入编号:001 输入名称:名称1 输入介绍:介绍1 输入价格:10 上传图片添加成功,出现添加成功的提示添加成功,出现添加成功的提示通过
商品删除进入商品管理页面,点击删除按钮删除成功,出现删除成功的提示删除成功,出现删除成功的提示通过
订单查看进入订单管理页面成功显示所有订单列表成功显示所有订单列表通过
订单删除进入订单管理页面,点击删除按钮删除成功,出现删除成功的提示删除成功,出现删除成功的提示通过
订单受理进入订单管理页面,点击受理按钮受理成功,出现受理成功的提示受理成功,出现受理成功的提示通过
在线注册会员进入会员注册页面,按提示输入会员信息注册成功,出现注册成功的提示注册成功,出现注册成功的提示通过
  1. 结论

到这一阶段,本篇论文所讲的项目结构就已经叙述完毕了,虽然整个项目的设计实施的时间很短,但是对本篇论文的资料收集,以及大体框架设计都耗费了较大的精力以及时间,在此过程中还要对实际的开发技术进行深入的学习理解。在学习的技术的同时,我也逐渐发现自身存在的不足与问题。相对于一些控制类的编写操作我能够正常的理解学习,通过对一些过程的深入探讨都能够进行理解学习,在这一方面我还是觉得挺简单的。在这个系统的完成过程中,对于系统的分析和框架设计中需要使用到的数据调查,足足经历了好几个月的时间,虽然在这几个月的努力下,我也是将本文系统进行了较完整的实现,但是本文提到的系统还不够完善,仍然需要进一步的将遇到的问题进行解决。而在设计完成的过程过,我也遇到了很多的困难,我都是从专业的网站论坛进行搜索学习,对碰到的困难加以解决,可以说这些专业论坛对我的帮助也是巨大的。

而且本系统存在着很多的不完善的地方,仅仅是完成了系统的基础功能部分,一些其他的需要使用的功能方面,设计完成的还不够科学系统,并且界面的设计我自认为也不是特别优美,但是这是我独自完成的一个项目,并且它能够进行稳定的运行,这是我觉得骄傲的地方。

致 谢

我的论文设计在紧张与忙碌的学习节奏下也顺利结束了,有时候看着自己的系统运行出来,我真的从内心感到特别的高兴。对与在论文完成的过程中,所有帮助过我,给我无私帮助的同学们,我想谢谢他们。

最先要感谢的自然是我的老师们,因为他们的理论指导以及在毕业设计上的重要指导意见,我才能得以完成设计。在此特别感谢我的指导老师曹棣讲师以及软件工程师任青青老师对我这次设计和论文的支持与帮助。

并且这个设计也让我学到了很多,计算机方面的知识用浩瀚一词来形容绝对不过分,并且利用计算机来对生活中繁琐的事务进行解决真的是一项不错的选择。我在学习计算机基础理论知识的时候,也对测试环节的计划进行了细致的了解,建立了一个完善科学的设计及测试整体计划。但是这毕竟是我第一次完成设计项目,所以在完成的过程中碰到了各种各样的问题,但是也相应的提高了解决问题的能力,使得我在学习的过程中提高了自己的实践能力。这一次的毕业设计的完成以及设计过程,都会对我以后的工作起到了极大的推动作用。

参考文献

  1. 唐友国,湛洪波.JSP网站开发详解,北京:电子工业出版社,2008

  2. 冯艳奎,赵德奎.JSP实用案例教程,清华大学出版社,2004

  3. 姜 仲,李绪成.Java语言程序设计,东北大学出版社,2007

  4. 史嘉权.数据库系统概论,清华大学出版社,2006

  5. 许令波. 深入分析Java Web技术内幕 [M],北京:电子工业出版社,2012

  6. 张峋,杨三成
    关键技术 JSP与JDBC应用详解 [M],北京:中国铁道出版社,2010

  7. 林信良. JSP & Servlet学习笔记 [M],北京:清华大学出版社,2012

  8. Hector Garcia-Molina. Database System Implementation
    [M].北京:机械工业出版社.2010

  9. 沈镛. 软件开发中SSH框架技术研究与应用[J]. 福建电脑,2010(6)

  10. 刘哲. 基于SSH的电子产品企业网站的框架设计[A]. 天津工业大学,2011

  11. 胡宾,汪伟. 论电子商务网站的设计与管理[J]. 科技经济市场,2007(4)

  12. 周丽娟,王华. 软件工程实用教程[M]. 北京:清华大学出版社,2012

  13. 刘兰娟. 电子商务网站开发[M]. 上海:上海财经大学出版社,2011

  14. 曹静. 软件开发生命周期与统一建模语言UML[M]. 北京:中国水利水电出版社,2008

  15. 谭云杰. 大象:Thinking in UML[M]. 北京:中国水利水电出版社,2009

  16. 张永常. Java程序设计实用教程[M]. 北京:电子工业出版社,2010

  17. 易禹,廖年东. 软件测试简明教程[M]. 武汉:武汉大学出版社,2012[10]

  18. Li,Zhang,Weixi,Zhang.Design of tourism e-business system based on JavaEE

    multi-pattern[J]. Lecture Notes in Electrical Engineering,2012.417-424

  19. Oracle Forms Develops And Oracle Forms Server[OL].
    http://www.Oracle.com,2000

  20. Galina Bogdanova,Todor Todorov,Dimitar Blagoev. Use of dynamic
    technologies

    for web-enabled database management systems[J]. Computer systems and
    technologies,2003.202-207

附录A 外文原文结论

Defining methodologies for developing J2EE web-based information systems

Abstract

This paper describes the concepts behind the developed framework for Java-based
projects and describes how it can be used for IT projects. The developed
framework was created because many common design and development tasks are being
repeated in different ways, and are not always consistent with best practices.
We have identified common application concerns and delivered design patterns and
tools that represent effective solutions. The developed framework delivers: (1)
an application development stack starting from the user interface to data
integration; (2) an architecture, infrastructure and associated techniques for
enhancing and leveraging some other frameworks. The proposed architecture
defines a development methodology, which is designed to assist in custom
development projects.

1. Introduction

Software tools and packages for the nonlinear analysis of complex
spatial–dynamic systems increasingly use Web-based networking platforms for the
implementation of their user interface, scientific analysis, distribution of
simulation results, and information exchange among scientists. The real-time
Web-based access to nonlinear analysis simulation software becomes a critical
part of many applied systems. The intensive technological change in networking
hardware and software [1] provides more freedom of choices than in the past [2].
Therefore, the rational selection and development of the Web platform is of
increasing importance for the whole area of nonlinear analysis and its numerous
applications. The current stage of Web development is characterized by the
emergence of a significant number of open source frameworks.Frameworks shift the
focus of Web development to a higher level, allowing the reuse of basic
functionality and thus increasing the productivity of development.

In some cases, open source frameworks do not provide a solution to common
problems. For this reason, developers build their own development framework on
top of an open source framework. The aim of this paper is to describe a
developed Java-based framework that leverages open source frameworks and assists
in developing Web-based applications. By analyzing some existing open source
frameworks, this paper presents a new architecture, infrastructure and
associated techniques for enhancing and leveraging some other frameworks. The
proposed architecture defines its own development methodology, which is designed
to assist in custom development projects and integration projects.

There are common application design concerns which are often used across
projects. Even across unique functional requirements, there are commonly
occurring patterns of use cases, which lend themselves to design and development
reuse. This paper describes a “customized” framework, which had been developed
in an effort to identify such common application concerns and identify design
patterns that can be used by the developers. This framework, which we will refer
to as the developed XYZ framework, provides a set of patterns and tools that
were built on industry best practices, tailored to common application concerns.
It provides an application development stack, from presentation to integration
layers.

This paper articulates these application concerns and the patterns, tools and
industry best practices. The developed XYZ framework can be customized to
various projects’ needs. It was developed and configured based on various
frameworks and tools such as Struts, Spring, Hibernate and JUnit.

2. Major technologies of the developed framework

2.1. Layers and separation of code and configuration

Web applications have various design concerns such as presentation, business
logic, data access and security. A separation of design concerns into distinct
code layers has several advantages such as: ease of maintenance, the ability to
implement good design patterns, and the ability to select specialized tools and
techniques for specific concerns. Separating a project into layers can result in
dependencies between those layers. For example, a single-use case involving
simple data entry and inquiry usually must integrate presentation, business
logic and data access together to deliver required functionality [3]. Therefore,
there must be a well defined strategy to manage the dependency relationships.
The developed XYZ framework combines design patterns, reusable code and
configuration files to make this as easy as possible. This framework uses
Spring’s Inversion of Control to manage dependencies. The Spring Framework [4]
provides a way to tie together the objects that make up an application. It
accomplishes this goal with the Spring Application Context, which is a strategy
for managing dependencies between objects. Spring uses dependency injection and
method interception techniques described below.The code that we write is
dependent on the objects it uses. It is responsible for creating these objects.
This may result in tight coupling, but we would prefer that our code be loosely
coupled. Dependency injection is a technique which helps us to accomplish this.
Dependency injection is a form of Inversion of Control (IoC) [5]. When
applications use dependency injection, the code becomes much cleaner and easier
to follow. It is also loosely coupled, allowing for easier configuration and
testing. The XYZ framework uses several Spring application context files to
define dependencies between the layers. Method interception is a concept of
Aspect Oriented Programming (AOP) [6]. Spring AOP implements method interception
through JDK dynamic proxies. The XYZ framework uses Spring AOP to manage
concerns such as transaction management and performance monitoring.

The developed XYZ framework consists of two distinct parts: code and
configuration. Code resides in a particular application layer and focuses on a
particular piece of the application solution. This could be interacting with a
database, or presenting data to the screen. Configuration glues the various
layers of the application together. Separating configuration from code allows us
to manage configuration independently, giving us the flexibility of applying
different configurations to the same code base. For example, a Data Access
Objects (DAO) implementation knows that it is using JDBC to connect to a
database through a data source, but it does not know anything about the
implementation of that data source. It may come from a Java Naming and Directory
Interface (JNDI) context or be derived from a driver manager. It may point to
the remote database or a local database. Regardless of where the data source
comes from, the DAO implementation will operate on the data source in the same
manner. Likewise, a Service object may depend on a DAO, but it does not know
whether the DAO is implemented via Hibernate, straight JDBC, or a Web service.
The service object interacts with the DAO in the same manner, regardless of the
DAO’s implementation.

Spring gives us a way to manage our application’s entire configuration through a
Spring application context, defined by a set of XML files. We could define the
application context in one file. However, by defining it in groups of smaller
files, we can simplify configuration management. A logical set of such
application context files which forms a complete application configuration is
called a configuration set.

During the development of Java-based enterprise applications the standard
configuration is where a framework’s configuration set uses external resources
such as data sources and JNDI resources. This type of configuration sometimes
can create problems with: (1) An incomplete database that has not yet been
loaded. Developers may want to test the display of certain types of data, but if
the underlying database has not yet been completed, they will not be able to do
this. (2) Services or DAOs that may not have been developed yet. Integrating
with unfinished services or DAOs may halt development.

These issues decrease productivity. The developed XYZ framework has separated
its configuration from its code, we can use an alternate configuration set
targeted specifically towards development. This relieves us from worrying about
the availability of external systems, which are irrelevant to solving immediate
development needs.

The developed XYZ framework defines two configuration sets: default and
standalone. We can also customize our application by adding additional
configuration sets based on our project needs. The default configuration set
connects to the development database using the DataSource defined in JNDI. It
uses fully developed application services and DAOs.

The standalone configuration set is the most flexible environment for
development. This configuration set: (1) connects to either a locally installed
database or the development database using a DriverManagerDataSource; (2) uses
Spring’s DataSourceTransactionManager for local transaction management; (3) uses
fully developed application Services and DAOs; and (4) fully wired Spring
application contexts can be run and tested entirely outside of the application
server.

The developed XYZ framework is configured by its application context. The
application context may be defined in one or more XML files. A configuration set
is a set of XML files that define one application context. The configuration set
consists of two parts: service and Web. The service part defines services, DAOs,
and resources for the service and integration layers. The Web part defines
components for the presentation layer. A configuration set cannot be complete
without both of these Parts.

The developed XYZ framework configuration sets are grouped together by what
Spring calls a bean reference context defined in the files beanRefContext.xml
and applicationContextMapping.properties. The beanRefContext.xml file defines
the service part of all configuration sets. This file is located in the
src/config directory of the service project. Application context files shared
between configuration sets are also located in this directory. In addition, each
configuration set has its own subdirectory, which contains files specific to it.
Services and DAOs, for instance, are shared between configuration sets, while
supporting services (like data sources) belong in the subdirectories. XML files
define the Spring beans in this application by using the bean tag. A Spring bean
is a Java object created and initialized by the application context.

2.2. Classes and dependencies

Using the developed XYZ framework, the following code and configuration
artifacts will be typically required to develop a user interface screen: (a)
Action, ActionForm classes and validation.xml entries; (b) service interface and
implementation class; © DAO interface and implementation class; (d) dependency
management between all of the above. When starting development for a use case,
we must be aware of the need of all these classes and their dependencies
upfront.

2.3. Testing technology

Testing should be an integral part of the development process. For applications
built using the developed XYZ framework, unit testing means testing methods of a
single class in the service or integration layer. Presentation layer artifacts
(Action classes) are not taken up for unit testing. The purpose of this test is
to ensure that the behavior encapsulated by the class works as expected when
testing integration with other components. Unit tests in applications, developed
using the developed XYZ framework, are based on the JUnit framework [7]. Unlike
unit tests, integration tests do require code dependencies to be available. The
purpose of this test is to ensure that the integration between different classes
(developed by different developers) works as expected. During the Functional
Testing process, the focus is on testing functionality of the application by
using data to depict different scenarios. Functional testing typically involves
testing classes in the Service layer with different data. It can also be
performed by testing the user interface layer and by using real dependencies.

In order to perform different types of testing, the application being developed
must be testable. Let us list some of the basic characteristics of a testable
application. (1) Ease of developing unit and integration tests. We should be
able to unit test without necessarily using data sources, or queues. Also, we
should be able to mock dependencies of code under test. (2) Ease of simulating
various test scenarios for functional testing. (3) Ease of re-running all tests
repeatedly over the life cycle of the application. (4) Clean separation of
testing code from application code.

A well structured application that separates design concerns such as
presentation, services and data access is important for designing testable
applications. Application coding starts with getters, setters, variables etc.,
which are then integrated to provide the required solution. Unit tests are a
fundamental building block for any testing approach.

The developed XYZ framework’s design facilitates development of testable
applications by: providing testing template classes that help to create unit
tests; and also by enabling easy configuration of application to adapt to
testing needs. Unit tests can be run like any JUnit test. The specially
developed default ‘‘build script’’ provides a task to run unit tests. This task
can be called when generating an EAR file for deployment or can be run
separately.

2.4. Web presentation design

The developed XYZ framework uses the Struts framework concepts and JavaScript to
implement presentation concerns and provides additional features that can be
extended for use in projects. When using the Struts framework for development,
at first we set up the Action Servlet in web.xml; then we set up configuration,
action mappings, form beans and local forwards in the struts-config.xml; and
finally we set up validation rules in validation.xml.

This approach has been changed in applications that were built using the
developed XYZ framework, such that developers must not directly edit the
struts-config.xml or validation.xml. Instead we specify this information as
XDoclet annotations in the Action and ActionForm classes directly. This
information is then transferred into the struts-config.xml and validation.xml by
running the Ant script.

There are two types of validations that are required: data format validation and
business logic validation. Data format validations are best done in the
presentation layer, while business logic validations are best done in the
services layer. Business logic validation errors, which occur in the service
layer, should be handled by throwing custom exceptions.

The following are design goals for the presentation layer: (1) There is only one
Action class ascending one ActionForm per JSP. A single Web page must all be
handled in a single Action class. (2) Dependencies and validation rules are
specified using XDoclet annotations. (3) Developers should avoid or minimize the
use of session objects, because it hinders scalability.

The XYZ framework provides a default template Action class that contains a
solution to the above mentioned design goals for this layer. The following are
typical code artifacts required for developing a Web page: (1) Create a new JSP
with a default hidden field called ‘‘actionType’’ for use in handling user
actions that are expected to occur on the page. (2) Create a new Action class
that extends this template Action class. We must specify dependencies on
ActionForm specific methods that handle user actions represented by values in
hidden field ‘‘actionType’’. After that we can declare permissions that are
required in order to access this Action class. This is done in the Spring
configuration files. (3) Create a new ActionForm class and specify validation
rules as required using XDoclet annotations.

Once the JSP, Action and ActionForm are created, it is necessary to run the Ant
script to regenerate the ‘‘struts-config.xml’’ file.

2.5. Database access

Applications built with the developed XYZ framework support the use of direct
JDBC and Hibernate framework to persist in sending data to relational databases.
The application is configured with the necessary Spring context files. DAOs that
use direct JDBC must extend from Spring framework’s JdbcDaoSupport.java class.
Similarly, DAOs that use Hibernate must extend from Spring framework’s
HibernateDaoSupport.java class.

2.6. Configuration through annotation

The developed XYZ framework uses the Spring framework to maintain dependencies
between code artifacts in applications. Some of these dependencies (e.g. between
Action and ActionForm) are configured in ‘struts-config.xml’, while some others
(e.g. between Service and DAO) are configured in Spring application context
files (applicationContext.xml). In a team environment these configuration files
are shared by developers. That is why version conflicts on these configuration
files might occur. The developed XYZ framework provides a new efficient approach
that uses special annotations to specify all of these dependencies. By using
these annotations, configurations become simpler and conflicting changes to
configuration artifacts are avoided.

3. Services of the developed framework

The developed XYZ framework promotes the use of Plain-Old-Java-Objects (POJOs)
to implement business logic. Business logic must be declared as interfaces. All
service implementations must implement one or more business interfaces. It is
recommended that the service layer throws custom business exceptions when there
are business rule validation errors. The developed XYZ framework adopts a
declarative transaction management approach based on the Spring framework [8].
This is implemented using Aspect Oriented Programming (AOP).

The developed XYZ framework promotes a good practice of separating the
deployment interface (contract with service consumers) from the service
interface (contract representing application business logic). Deployment
interface is a Java interface that represents the service exposed in the WSDL.
The class that implements this interface always must delegate requests to the
class that implements the service interface. This ensures that all business
logic is maintained at one place in the correct layer. Service interface is a
Java interface that represents business logic. In most cases the deployment
interface will contain a subset of methods from the service interface.

Apache Axis 1.2.4 Web service framework is the current standard for Web
services. When developing Web services, there are two distinct approaches [9]:
contract first and contract last. The difference between contract first and
contract last approaches lies in whether the WSDL is created first or whether it
is generated from code. Contract first approach is a good practice for
developing Web services, when the service consumer and provider are external
vendors who might implement the Web service using different technologies from
each other (they may use.NET instead of Java) [10].

4. Middle layer integration

There are several techniques for integrating with the external resources such as
databases and Web service. The developed XYZ framework uses these techniques in
a logical layer called the ‘integration’ layer. The design goals for this layer
are: (1) Access to databases using JDBC or Hibernate should be encapsulated in
Data Access Objects (DAO). (2) Consuming Web services should be as simple as
possible. (3) All conversion of external data formats into application domain
objects should be restricted to this layer. (4) Unit testing classes in this
layer should be simple and easy to do.

The developed XYZ framework supports the use of Hibernate and direct JDBC calls
to access relational databases. It is recommended to use Spring framework’s
template classes: JdbcTemplate and HibernateTemplate. When using direct JDBC to
access relational databases, it is recommended that the application’s DAOs
extend from Spring framework’s JdbcDaoSupport. The JdbcTemplate class manages
resources used in accessing databases (for example PreparedStatement).

The developed XYZ framework inserts the data source into DAOs using application
configuration files. When using Hibernate to access relational databases, the
Hibernate SessionFactory is injected into the application DAOs through
application configuration files.

5 .Development life cycle

The developed XYZ framework’s emphasis on structure enables clear definition of
roles and their interactions in a development team. Three roles are described
below. An interaction between such roles is critical to the successful
completion of application development. (a) Front end developers are focused on
developing JSPs, Action/ActionForm classes and exposing Web services. (b)
Services developers are focused on developing application services and
integrating the different parts of the application used by these services. ©
Integration developers are focused on developing integration artifacts such as
DAOs, or consuming Web services.

One of the basic problems in development is how to develop and integrate code
when its dependent components are not ready or available. The developed XYZ
framework resolves this problem by providing a structure to declaratively inject
‘‘mock objects’’ and also replace ‘‘mock objects’’ with real objects as the
development life cycle progresses. This is possible due to the ability to
configure our application using different configuration sets. The framework
enables teams to make testing an integral part of the development process. This
is made possible by writing and running JUnit tests. The framework is focused on
testing application services and their dependencies. Applications are deployed
in a single Enterprise Archive (EAR) file. The developed Ant script generates
this EAR file and can be run manually or periodically through a scheduler. It is
recommended to run all the JUnit tests before creating the EAR for deployment.

6. Conclusion

In this paper, the author has provided an overview of the developed J2EE
framework. The author has addressed important architecture topics, technologies
and development steps that one should consider in a J2EE project. The
information is taken from real-world experiences, and is intended to help
developers build J2EE systems, and design their own custom

frameworks. This, however, is just the tip of the iceberg, as no short paper
could describe in detail J2EE’s potential impacton scientific and enterprise
applications and, especially, on Web-based simulation software for nonlinear
analysis.

附录B 外文资料翻译译文

定义开发基于J2EE的信息系统的方法

本文介绍了基于Java的项目开发框架背后的概念并说明它如何被用于IT项目。创建开发框架因为许多共同的设计和开发任务被反复以不同的方式,
而且并不总是与最佳实践相一致。我们已经确定了普遍的应用
代表有效的解决方案的关注和交付的设计模式和工具。该开发框架提供:(1)从用户的应用程序开发堆栈开始
接口,数据集成; (2)体系结构,基础设施和相关技术
加强和利用其他一些框架。所提出的架构定义了一个
开发方法,其目的是协助客户开发项目。

1、引言

软件工具和封装复杂的空间动态系统的非线性分析越来越多地使用网络平台去实现他们的用户界面,科研分析,模拟分布实现结果,甚至科学家之间的信息交流。基于Web访问的实时的非线性仿真分析软件已经成为许多应用系统的重要组成部分。网络硬件和软件[1]技术飞速发展提供了比过去更多更自由的选择[
2 ]
。因此,合理选择和网络平台的发展是提高非线性分析及其众多应用的整个区域一个很重要的指标。当前Web发展的一个显著的特点体现在开源框架的出现。框架的出现使Web应用开发的重点转移到了一个更高的水平,实现了其基本功能的重用,并且增加了产品的可发展性。在某些情况下,开源框架并没有对共性问题提出解决方案。基于这个原因,开发人员构建了他们自己的基于开源框架的可发展的框架。本文的目的是描述一个基于开源框架而搭建的比较成熟的一个Java基础框架,可以协助开发基于Web的应用程序。通过分析现有的一些开源框架,本文提出了一种新的体系结构,基础设施和相关技术去利用和加强其他一些框架。所提出的架构定义了自己的开发方法,其目的是协助客户开发项目和集成项目。

在经常使用的项目中会出现一些共同的应用程序设计问题。这些问题甚至跨越特有功能的要求,有经常出现的用例模式,可以将其作为设计和开发重用。本文介绍了一种’’
''定制框架,已被开发为试图查明这些共同申请涉及并标识设计模式,可用于由开发商。这个框架内,我们将参考作为发达XYZ框架,提供了一组模式和工具,建立在行业最佳实践,量身定制以常见的应用程序的关注。它提供了一个应用程序开发堆栈,从演示到集成层。

本文阐述这些应用问题和模式,工具和行业最佳实践。所开发的XYZ框架可以定制各种项目的需求。它是基于各种框架开发和配置而如Struts
, spring,hibernate的和JUnit工具。

2 已开发框架主要技术

2.1 层和代码和配置分离

Web应用程序有不同的设计问题,如演示文稿,业务逻辑,数据访问和安全性。一种分离设计问题纳入不同的代码层有几个优点,例如:易于维护,能够实现良好的设计模式,并选择专门的工具和技术,具体问题的能力。分离项目成的层可导致这些层之间的依赖关系。例如,单次使用的情况下,涉及简单的数据输入和查询通常必须整合表示,业务逻辑和数据访问在一起以提供所需的功能[
3 ]
。因此,必须有一个明确的战略来管理依赖关系。所开发的某某框架结合设计模式,可重复使用的代码和配置文件,以使尽可能尽可能容易。这个框架使用Spring的控制反转来管理依赖关系。
Spring框架[4]提供了一种方法的对象联系在一起组成一个应用程序。它实现这一目标的Spring应用上下文,这是一种战略管理对象间的依赖关系。
Spring使用如下所述的依赖注入和方法拦截技术。

我们写的代码依赖于它所使用的对象。它负责创建这些对象。这可能会导致紧耦合的,但我们更希望我们的代码是松耦合。依赖注入是一个技术,它有助于我们能够做到这一点。依赖注入是控制反转(IoC)的形式[
5 ]
。当应用程序使用的依赖注解时,代码变得更清洁,更容易遵循。这也是松散耦合,允许更容易配置和测试。该XYZ框架使用几个Spring应用程序上下文文件来定义层与层之间的依赖关系。方法拦截是面向方面编程(AOP)的概念[
6 ] 。 Spring AOP的实现方法拦截通过JDK动态代理。

该XYZ框架使用Spring
AOP的管理问题,如事务管理和性能监控。所开发的某某框架由两个截然不同的部分:代码和配置。代码驻留在一个特定的应用层,侧重于某项的应用解决方案。这可能与数据库进行交互,或提交数据到屏幕上。配置胶水的应用程序的各个层在一起。分离配置从代码可以让我们独立管理的配置,让我们应用不同的配置,以灵活性相同的代码库。例如,一个数据访问对象(DAO)实现知道它使用JDBC连接到一个数据库通过一个数据源,但是它不知道该数据源的执行任何东西。它可能会从Java命名和目录接口(JNDI)上下文或从驱动程序管理器导出。它可能指向遥控器数据库或本地数据库。无论在哪里,数据源来自中,
DAO实现将动手术数据源中的方式相同。同样地,一个服务对象可能依赖于一个DAO
,但它并不知道在DAO是否是通过Hibernate ,直接的JDBC
,或Web服务来实现。服务对象用相同的方式在DAO交互,不管DAO的实现。

Spring给了我们一种方法,通过应用程序上下文来管理我们的应用程序的整个配置,定义为一组XML文件。我们可以在一个文件中定义的应用程序上下文。然而,通过定义它的较小的文件组,我们可以简化配置管理。这样的应用程序上下文文件的逻辑集合,形成一个完整的应用程序配置被称为配置集。

在基于Java的企业应用开发的标准配置是其中一个框架的配置集中使用外部资源,如数据源和JNDI资源。这种类型的配置有时会创建的问题:(1)尚未加载的一个不完整的数据库。开发人员可能要测试的显示某些类型的数据,但如果底层数据库尚未完成时,它们将不能够做到这一点。(2)服务或DAO的可能没有被开发出来,然而。未完成的服务或DAO的整合可能会停止发展。

这些问题,降低工作效率。所开发的某某框架已经从代码中分离出来它的配置,我们可以使用专门以开发有针对性的备用配置集。这减轻了我们的担心可用性外部系统,这是不相关的解决眼前发展需要。

所开发的XYZ框架定义了两种配置集:默认和独立。我们还可以自定义我们应用程序通过将基于我们的项目需要额外的配置集。默认配置设置连接到使用在JNDI中定义的数据源的开发数据库。它采用完全开发的应用服务和DAO
。独立配置集是发展的最灵活的环境。此配置设置:(1)连接到任何一个本地安装的数据库或使用DriverManagerDataSource不同的开发数据库;(2)使用Spring的DataSourceTransactionManager本地事务管理;
(3)充分利用开发的应用服务和DAO
;及(4)全接线Spring应用程序上下文可以完全在应用服务器之外运行和测试。所开发的XYZ框架是由它的应用程序上下文配置。应用上下文可以在一个或定义多个XML文件。配置集是一组定义一个应用程序上下文XML文件。配置集由两部分构成:服务和Web
。服务部分定义了服务和集成层的服务,
DAO以及资源。Web部件定义了组件的表示层。配置集可以是不完整这两部分。

所开发的XYZ框架配置集是由什么Spring调用bean引用上下文组合在一起在文件beanRefContext.xml的和applicationContextMapping.properties限定。beanRefContext.xml的文件定义所有的配置集服务的一部分。此文件位于在服务项目的src
/
config目录。应用程序上下文配置集之间共享文件也位于此目录中。此外,各构成集合都有自己的子目录,其中包含特定于它的文件。服务和DAO
,例如,被配置集之间共享,而支持性服务(如数据源)所属的子目录。
XML文件所定义的Spring bean在此应用程序使用bean标签。一个Spring
bean的创建和初始化应用程序上下文中的Java对象。

2.2 类和依赖

使用XYZ开发框架,下面的代码和配置工件将通常需要开发用户界面屏幕:(a)行动的ActionForm类和validation.xml中的条目;(b)服务接口和实现类;(c)DAO接口和实现类;上述所有的(d)依赖管理。当启动开发一个用例,我们必须意识到所有这些类和它们的依赖前期的需要。

2.3 测试技术

测试应该是发展进程的一个组成部分。对于使用XYZ开发框架构建的应用程序,单元测试是指在服务或集成层的单个类的测试方法。表示层构件(行动班)未获认购的单元测试。该测试的目的是为了确保行为封装由一流的工程,与其他组件的集成测试时的预期。在应用程序中的单元测试,开发利用发达的XYZ框架,是基于JUnit框架[
7 ]
。不像单元测试,集成测试需要的代码依赖关系是可用的。该测试的目的是为了确保不同的类(的集成开发由不同的开发人员)按预期工作。在功能测试过程中,重点是测试功能用数据来描述不同的应用场景。功能测试通常涉及测试类中的服务层用不同的数据。它也可以通过测试在用户界面层,并通过使用真实的依赖关系进行的。

为了执行不同类型的测试,正在开发的应用程序必须是可测试的。让我们列出了一些一个可测试应用程序的基本特征。(1)易于显影单元和集成测试。我们应该能单位测试,而不必使用数据源,或队列。此外,我们应该能够在测试嘲笑的代码依赖关系。(2)缓解各种模拟测试场景进行功能测试。(3)便于重新运行所有测试过多次的生命周期的应用。测试代码(4)从应用程序代码中分离干净。

分开的设计问题,如演示文稿,服务和数据访问一个结构良好的应用是很重要的设计可测试的应用程序。申请编码开始的getter

setter方法,变量等,然后将它们集成以提供所需的解决方案。单元测试的基本构建块的任何测试方法。所开发的XYZ框架的设计方便了可测试的应用程序的开发方式:提供测试模板类来帮助创建单元测试;并且还通过实现应用程序的轻松配置,以适应测试需求。单元测试可以像任何的JUnit运行测试。专门开发的默认’‘构建脚本’'提供了一个任务来运行单元测试。这个任务可以产生时被调用部署或一个EAR文件可以单独运行。

2.4 Web演示文稿设计

所开发的某某框架使用Struts框架的概念和JavaScript来实现演示的关注并提供了一个可以在项目延长使用附加功能。当使用Struts框架开发,首先,我们成立了行动的Servlet在web.xml中;然后我们设置了配置,
action映射,表单bean和本地转发在struts
-config.xml中;最后我们在validation.xml中设置了验证规则。

这种方法已在过去使用的开发框架XYZ构建的应用程序被改变,使得开发者不能直接编辑在struts-config.xml或validation.xml中。相反,我们指定此信息XDoclet的注解中在Action和ActionForm类直接。然后将这些信息传送到在struts-config.xml和validation.xml中通过运行Ant脚本。

有两种类型的验证所必需的:数据格式验证和业务逻辑验证。数据格式验证是在表示层最好的做法,而业务逻辑验证是在服务层最好的做法。业务逻辑验证错误,发生在服务层,应通过抛出自定义异常处理。

以下是设计目标的表示层:(1)只有一个Action类上升1 ActionForm的每个JSP
。一个单一的网页都必须在一个Action类处理。(2)相关性和有效性规则规定使用XDoclet的注解。(3)开发人员应该避免或尽量减少使用会话对象,因为它阻碍了可扩展性。

XYZ表框架提供了一个包含了解决上述设计一个缺省模板操作类目标这一层。以下是需要开发一个Web页面代码的典型器物:(1)创建一个新的JSP默认在处理预期将在页面上出现用户操作使用隐藏域称为’’
‘’ actionType
。(2)创建扩展这个模板Action类一个新的Action类。我们必须指定ActionForm的具体方法依赖关系在隐藏字段’’
‘’
actionType值表示该句柄用户操作。之后,我们可以声明为权限为了访问这个Action类必需的。这是在Spring配置文件来完成。(3)创建一个新的ActionForm类并使用XDoclet的注解根据需要指定验证规则。一旦JSP
,Action和ActionForm的创建,就必须运行Ant脚本来重新生成’'的struts-config.xml
''文件中。

2.5 数据库访问

建有发达的XYZ框架的应用程序支持使用直接的JDBC和Hibernate框架,坚持在将数据发送到关系数据库。该应用程序被配置了必要的Spring上下文文件。
DAO的说直接使用JDBC必须继承自Spring框架的JdbcDaoSupport.java类。同样,使用Hibernate的DAO必须从Spring框架的HibernateDaoSupport.java类扩展。

2.6 通过注解配置

所开发的某某框架使用Spring框架来维护代码构件之间的依赖关系应用程序。其中一些依赖关系(如​​与Action和ActionForm
)被配置在’'的struts-config.xml ‘’
,而另一些人(例如,服务和DAO之间)被配置在Spring应用程序上下文文件(
applicationContext.xml中)
。在团队环境中这些配置文件是由开发人员共享。这是对这些配置为什么版本冲突可能发生的文件。所开发的某某框架提供了一个使用特殊的注解来指定所有新的有效的方法这些依赖关系。通过使用这些批注,配置变得更加简单和相互冲突的更改配置避免文物。

3 发达的框架服务

所开发的XYZ框架提倡使用纯老的Java对象(POJO
)来实现业务逻辑。业务逻辑必须声明为接口。所有的服务实现都必须实现一个或多个接口。这是建议在服务层抛出自定义业务异常时,有业务规则验证错误。该发达的某某框架采用了基于Spring框架的声明式事务管理的方法[
8 ] 。这使用面向方面编程(AOP )来实现。

所开发的XYZ框架促进了分离与服务的部署接口(合同的一个很好的做法消费者)的服务接口(占合同应用程序的业务逻辑)
。部署界面是一个Java接口表示在WSDL中公开的服务。实现这个接口总是这个类必须委托要求以实现服务接口的类。这确保了所有的业务逻辑被维持在一个地方正确的图层。服务接口是一个Java接口,它表示业务逻辑。在大多数情况下,部署界面将包含从服务接口方法的一个子集。

Apache Axis的1.2.4
Web服务架构是目前的标准Web服务。在开发Web服务,有两种截然不同的方法[ 9 ]
:第一合同及合同的最后。合同第一和最后合同的区别在WSDL中是否第一次被创建或者它是否是从代码生成方法的谎言。

合同第一种方法是开发Web服务,当服务消费者和提供者是一个很好的做法谁可能使用不同的技术从对方(他们可能use.NET实现Web服务的外部供应商而不是Java)
[ 10 ] 。

4,中间层集成

有几种方法可用于与外部资源,如数据库和Web服务的集成。该发达的某某框架使用这些技术被称为“一体化”层的逻辑层。的设计目标这一层主要有:(1)访问使用JDBC或Hibernate的数据库应该被封装在数据访问对象(DAO)。(2)消费Web服务应该尽可能简单。(3)所有转换的外部数据格式转换成应用程序域中的对象应仅限于该层。(4)在这一层单元测试类应该是简单易做。

所开发的XYZ框架支持使用Hibernate和直接JDBC调用来访问关系数据库。这是推荐使用Spring框架的模板类:
JdbcTemplate类和HibernateTemplate来。当直接使用JDBC来访问关系数据库时,建议该应用程序的DAO实现从Spring
Framework的JdbcDaoSupport扩展。

该JdbcTemplate类管理在访问数据库时(例如预处理)使用的资源。发达XYZ框架插入数据源到使用应用程序配置文件中的DAO
。当使用Hibernate访问关系型数据库,
Hibernate的SessionFactory是通过应用程序配置注入到应用程序的DAO文件。

5 开发生命周期

所开发的XYZ框架所强调的结构使角色及其相互关系的明确定义一个开发团队。三个作用描述如下。这种角色之间的互动是成功的关键应用程序开发完成。
(a)前端开发人员专注于开发的JSP ,动作/
ActionForm的类和公开Web服务。(b)服务的开发人员专注于开发应用服务和整合不同部位使用这些服务的应用程序。(c)集成开发人员专注于开发整合文物,如DAO的,或者使用Web服务。

一个在发展中的基本问题是如何开发和集成代码时,其依赖的组件没有准备好或可用。所开发的某某框架通过提供一个结构来声明注入解决这个问题’‘模仿对象’‘也’‘代替模拟对象’'与真实物体作为开发生命周期的进展。这是可能的由于使用不同的配置设置来配置我们的应用程序的能力。该框架使团队能够使测试开发过程中的一个组成部分。这是通过编写和运行JUnit测试成为可能。该框架专注于测试应用程序服务和它们的依赖关系。应用程序部署在一个单一的企业存档(
EAR)文件。所开发的Ant脚本生成此EAR文件,并且可以通过调度手动或定期运行。它建议创建EAR部署之前运行所有的JUnit测试。

结论

在本文中,笔者提供了开发J2EE框架的概述。笔者曾处理的重要建筑主题,技术和开发步骤,一个应该考虑的一个J2EE项目。资料从现实世界的经验采取,旨在帮助开发人员构建J2EE系统,并设计自己的定制框架。然而,这仅仅是冰山的一角,因为没有短纸能详细描述J2EE的潜在影响科学和企业应用,特别是基于Web的仿真软件进行非线性分析。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页