首页 网上服装店系统论文

网上服装店系统论文

举报
开通vip

网上服装店系统论文xxxx大学 (2011届) 本科毕业设计(论文) 网上服装店系统 学 院(部): 专 业: 学 生 姓 名: 班 级: 指导教师姓名: 最终评定成绩:     2011  年 4 月 摘  要 本论文着重论述了网上服装店系统开发时的主要设计思想及系统实现的详细过程及使用方法。介绍了网上服装店系统的主要功能。系统结构严谨、性能稳定、使用方便。它可以运行Win98/2000 / NT/XP/2003系统。本系统为全中文界面,功能全,易操作。系统的操作方式、...

网上服装店系统论文
xxxx大学 (2011届) 本科毕业设计(论文) 网上服装店系统 学 院(部): 专 业: 学 生 姓 名: 班 级: 指导教师姓名: 最终评定成绩:     2011  年 4 月 摘  要 本论文着重论述了网上服装店系统开发时的主要设计思想及系统实现的详细过程及使用方法。介绍了网上服装店系统的主要功能。系统结构严谨、性能稳定、使用方便。它可以运行Win98/2000 / NT/XP/2003系统。本系统为全中文界面,功能全,易操作。系统的操作方式、界面均为Win98风格。系统中具有强大的操作员权限、密码管理等功能模块,确保系统运行安全。强大的查询和报表功能,全面、及时地反映当前库存状况。 本论文采用了面向对象开发的设计方法。在WindowsXP操作系统环境下,应用MySql 数据库以及Java可视化程序设计软件所开发的网上服装店系统。 本系统为人们在网上购买服装提供方便,也给用户提供更为广阔的销售渠道。网上服装店系统从功能上划分成客户端和管理端两个子系统。客户端的功能包括:注册用户、注销用户、用户登录、用户浏览、服装查询。管理端的功能包括:用户管理,供应商管理,服装信息管理,查询,订单管理,服装展示。一般用户能浏览和查询;注册用户可以购买服装,查看和修改用户个人信息、兴趣范围、购物袋、储物柜和订单。 关键词:JSP,hibenater,struts,MySql,MVC ABSTRACT This paper focuses on the online store the main system development and design idea of system implementation detailed process and method of use. Introduces the main functions of the system online store. System structure rigorous, stable performance and easy to use. It can run NT/Win98/2000 / XP / 2003 system. This system for all Chinese interface, complete functions, easy to operate. System operation mode, interface are Win98 style. System has strong operator permissions, password management function module, ensure system safety of operation. Powerful query and statements function, comprehensive and timely reflects the current inventory status. This paper used the object-oriented development design method. In WindowsXP operating system environment, application SQL Server 2000 database and Java visual programming software development of online store system. This system for the people in the apparel online purchase for users provide convenient, also provide broader sales channels. Online store system from function is divided into the client and management end two subsystem. Client functions include: registered users, cancellation of user, login, users browse, clothing query. Management end functions include: the user management, supplier management, clothing information management, inquires the, order management, clothing show. General users can browse and query; Registered users can buy clothes, check and modify user's personal information, interested in shopping bags, scope, store content ark and order. Key words:  system of Shopping clothe on the Internet,database,Java 目  录 摘  要    II ABSTRACT    III 目  录    IV 第1章 概述    1 1.1课题背景介绍    1 1.1.1课题开发背景    1 1.1.2 课题开发意义    1 1.2课题开发目标    2 第2章 系统运行环境及系统开发技术    3 2.1 系统运行环境    3 2.1.1 硬件环境    3 2.1.2 软件开发环境    3 2.2 系统开发技术    4 2.2.1 JSP 简介    4 2.2.2 Hibernate简介    5 2.2.3 Struts    6 2.2.4 MySQL 数据库    10 第3章 系统分析与设计    11 3.1 系统可行性分析    11 3.1.1 经济可行性    11 3.1.2 操作可行性    11 3.1.3技术可行性    11 3.2 系统需求分析    12 3.3 总体功能设计    12 3.3.1 系统功能模块图    12 3.3.2 总体功能流程图    15 第4章 数据库设计    16 4.1 数据库设计思想    16 4.2 系统E-R图    17 4.3 数据库表设计    17 4.3.1    顾客信息表(UserData)    18 4.3.2 订单查询模块(OrderData)    19 4.3.3 留言模块(MassageModule)    20 4.3.4 购物车模块(ShoppingCar)    21 4.3.5 服装管理模块(ClotheManage)    21 4.3.6 会员管理模块(VIPManage)    23 第5章 系统详细设计与实现    24 5.1 系统主界面的设计    24 5.2 系统主要功能实现    25 5.2.1 会员注册    25 5.2.2 会员登录    26 5.2.3 购物车    28 5.2.4 商品详细信息    29 5.2.5 订单    30 5.2.6 管理员登陆    32 5.2.7 管理会员    33 5.2.8 管理服装信息    34 5.2.9 JDBC+Hibernate技术的数据库连接    36 第6章 系统关键代码    39 6.1 Web.xml    39 6.1.1 struts-config.xml    39 6.1.2 web.xml文件代码    39 6.2 关键实体的.hbm.xml文件    40 6.2.1 Hibenater.cfg.xml    40 6.2.2 其它关键hbm.xml    41 6.3 实体javabean    42 6.4 实体操作DAO    43 6.4.1 接口DAO    43 6.4.2 实现后DAO    44 6.5 Action类    46 6.5.1 LoginAction类    46 6.5.2 ShopCartAction类    47 6.5.3 ProductListAction类    48 6.6 FormBean 类    50 第7章 系统测试及结果分析    51 7.1 测试综述    51 7.1.1 软件测试综述    51 7.1.2 数据库测试    51 7.2 测试实例    53 结 论    54 致  谢    55 参考文献    56 附录 英文原著    57 附录 中文翻译    63 第1章 概述 1.1课题背景介绍 1.1.1课题开发背景 随着网络、通信和信息技术的突破性进展,Internet在全球爆炸性增长并迅速普及。在这一前提下,电子商务应运而生了。电子商务是基于互联网、以交易双方为主体、以银行电子支付和结算为手段、以客户数据为依托的全新的商务模式,它可以使商家与供应商更紧密地联系起来,更快地满足客户需求,也可以让商家在全球范围内选择最佳供应商,在全球市场上销售产品。 网络的诞生和发展,颠覆了传统的信息传播方式,冲破了存在于传统交流方式中时间和空间的种种壁垒,极大地改变了人类从物质到精神、从形式到内容、从生产到生活的各种活动,并且给人类带来了新的机遇和挑战。 1.1.2 课题开发意义 中国加入世界贸易组织,外国物流企业进一步进入中国物流市场,给中国带来了新的物流服务理念,管理模式,以及新的物流技术与装备,对中国物流的发展是一个巨大的推动。 随着Internet的迅速发展,社会竞争越来越激烈,在这个竞争和效率并存的社会,人们有很强的时间观念,信息社会的高科技,商品经济化的高效益,使网络的应用已普及到经济和社会生活的各个领域。基于B/S模式的网络销售系统克服了传统销售方式时所带来的人力、物力以及时间上的浪费,同时也保证了销售过程的科学化、高效化,使销售过程方便、准确、快捷。本课程设计(网上服装店)利用JSP,Hibernate,Struts和MySQL技术实现。为广大用户提供了一种高质量,更快捷,更方便的购物方式【2】。 1.2课题开发目标 设计和实现网上服装店系统,使网上交易的管理工作系统化、 规范化和自动化,从而达到提高管理效率的目的,提供高效实用的用户界面和用户交易模块。 在网上服装店购物,可以查到所买服装的更多信息,因为网上服装店并非实体点,能突破实体店空间的限制,能提供更多的服装款式及信息,且它有它独特的售卖方式和功能。如用户注册会员功能等,还有就是支付方式了,一般网店都有三种类型的支付方式:汇款类支付、在线支付、其他支付方式,其中在线支付只要到支付平台开户后,将所获开户信息填入即可。当在网店购物后,用户所购商品在网站上有记录,方便用户查询。 第2章 系统运行环境及系统开发技术 2.1 系统运行环境 系统的运行环境包括硬件和软件两方面。 2.1.1 硬件环境 本系统运行的硬件环境如下: ● CPU:1G以上。 ● 内存:512M以上。 2.1.2 软件开发环境 本系统软件开发环境如下: ● 操作系统:Windows XP/2003/2000。 ● 数据库:MySQL ● 数据库连接驱动:MySQL Driver for JDBC Service PABCck3。 ● JAVA虚拟机:j2sdk 1.4.2。 2.2 系统开发技术 本系统的开发主要是使用在Myeclipse 6.5平台下的JSP语言,并结合了MySQL数据库技术,使此系统具有强大的查询功能。 2.2.1 JSP 简介 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP与Java Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览【3】。 JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。 JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成【1】。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。 JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。 2.2.2 Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任【4】。 Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 (1)Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。 (2)Sessionfactory 接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 (3)Configuration 接口 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 (4)Transaction 接口 Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 (5)Query和Criteria接口 Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 2.2.3 Struts Struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。 综述 1. Model部分 2. View部分 3. Controller组件 Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。 早期Smalltalk 程序语言便采用了MVC(Model-View -Controller) 模式( Patterns ) 以增加程序代码弹性,MVC模式将程序代码整理切割为三部份,Model 部分是业务与应用领域( Business domain) 相关逻辑、管理状态之对象,Controller 部分接收来自View 所输入的资料并与Model 部分互动,是业务流程控制( Flow Control) 之处,View 部分则负责展现资料、接收使用者输入资料。在Java 应用中,JFC/Swing、AWT、JSP 皆是可用作View 之技术规格,而JavaBean 与Enterprise JavaBean 规格则可用于Model 程序代码,一旦应用程序以MVC 模式加以适当(的)分割,Model 部分程序代码可在不同使用者接口外观(的)应用程序中重复使用。 随着JSP 与Servlet 技术大量应用于以Web 为基础(的)应用程序,Java 开发人员群体认为应以较佳之模式以提升Web 应用程序之可维护性与重复使用性。早期JSP 规格书中曾列举两种可行之JSP 应用架构,分别为Model1 与Model 2。 在Model 1 架构中,JSP 直接处理Web 浏览器送来之请求( Request ),并辅以JavaBean 处理应用相关逻辑。Model 1 架构单纯编写比较容易,但在Model 1 中JSP 可能同时肩负View 与Controller 角色,两类程序代码有可能混杂而不易维护。而Model 2 中将Servlet 纳入架构中扮演前端Controller 角色,将Web 浏览器送出之请求集中送至Servlet ,Servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应之JSP 处理。Model 2 中采用了较佳之MVC 模式,但增加了编写复杂度。 Struts是Apache软件基金下Jakarta项目的一部分。除Struts之外,还有其他成功的开源产品,包括Tomcat, Ant 和Velocity。2000 年Craig R. McClanahan 先生贡献了他编写的JSP Model 2 架构之Application Framework 原始程序代码给Apache 基金会,成为Apache Jakarta 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 Struts Framework 前身。 开始的代码基础从2000年5月开始开发,直到2001年6月,1.0版本发布。有30 多个开发者参与进来,并有数千人参与到讨论组中。Struts 代码基础由一个志愿的Commnitter团队来管理。到2002年,Struts 小组共有9个志愿Commnitter。 Struts框架的主要架构设计和开发者是Craig R.McClanahan。Craig 也是Tomcat 4的主要架构师,以及Java Web Services Developer Pack的主要架构师和实现者。他现在是Sun的JavaServer Faces (JSR-127) 以及J2EE平台的Web层架构的规范领导。Craig R. McClanahan 先生是JCP ExpertGroup 成员之一,曾参与JSP 规格制定与Tomcat 4 之编写,因此Struts Framework 广受Java 开发人员群体所重视。Borland 自2002 年底开始于开发工具JBuilder 中支持Struts Framework。 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性 的控制层,基于如 Java Servlets,JavaBeans,ResourceBundles与XML等标准技术,以及 Jakarta Commons 的一些类库。Struts由一组相互协作的类(组件)、Servlet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是一个传统 MVC设计模式的一种变化类型。 Struts最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。 Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。 除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。 关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做, 使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。 流程 服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。 以登录为例:第一次进login.jsp会先实例化Form、把默认值(String默认为空字符串,整形默认为0)赋给表单元素。 输入用户名密码提交表单、提交到action属性的login.do,通过ActionServlet读struts-config.xml文件找到 action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方法【5】。 2.2.4 MySQL 数据库 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库【6】 1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 4.支持多线程,充分利用CPU资源 5.优化的SQL查询算法,有效地提高查询速度 6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径 8.提供用于管理、检查、优化数据库操作的管理工具 9.可以处理拥有上千万条记录的大型数据库【7】。 第3章 系统分析与设计 3.1 系统可行性分析 可行性分析研究的目的就是用最小的代价在尽可能短的时间里确定问题是否能解决,通过复杂系统的规模与目标,研究与此类似的系统后,我们具体从下面三方面考虑。 3.1.1 经济可行性 网上服装店系统是一个小型的网上交易系统, 在开发时需要软件开发人员花费一定的时间和精力,因此需要一定的资金。但它给企业和商家带来的利润是不可估量的,节省了许多人力,物力上的开支,使网上交易工作变繁为简,使网上交易更安全,使其更加合理化、规范化。工作效率的提高就意为着整体水平的提高,是非常值得投资的。 3.1.2 操作可行性 系统是在JDK 环境下基于Myeclipse6.5平台开发的,易于操作。而且系统还采用了可视化面向对象的工具开发,其窗口、界面简洁易懂,所以系统在操作上是可行的【8】。 3.1.3技术可行性 系统采用JSP语言作为开发工具。Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的动态的语言。它具有理论严密、使用方便、易学易用等特点,利用它设计的系统具有界面友好、工具丰富速度较快的特点。再结合MySQL数据库技术,编写SQL语言访问数据库,实现强大的查询、修改、添加、删除服装信息和会员信息等操作【9】 3.2 系统需求分析 通过需求分析,对商品库存进行有效的管理,使之形成完善的应用系统。数据库设计中要合理设置商品信息和库存信息等,用来实现商品信息的新增,修改、删除等功能,使得商家有较详细的数据统计与分析。 下面就介绍一些此商品库存管理系统的基本功能: 根据前面的设计思想进行分析,按照系统开发的基本观点对网站进行分解,从使用的对像上可对网站作如下划分: (1)客户端: ①会员模块: 通过用户注册、找回密码、会员中心这几部分来实现。 ②衣服信息模块:衣服查询、分类查询这几部分来实现。 ③留言模块:顾客留言这部分来实现。 ④订衣服模块:购物车和订单查询来实现。 (2)后台管理端: ①服装管理模块:通过添加服装、添加服装类别、管理服装、这几部分来实现。 ②用户管理:会员管理、修改密码,这两部分都来实现。 ③其它功能模块:留言管理、订单管理、添加城市、返回首页,这几部分来实现。 3.3 总体功能设计 本部分主要介绍系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有一个系统、全面、确切的认识。 3.3.1 系统功能模块图 根据前面的设计思想进行分析,按照系统开发的基本思想观点对网站进行分解,从使用的对象上可对网站作如下分析: 3.3.1.1 客户端: 1、 会员模块:通过用户注册、找回密码、会员中心。 2、 衣服信息模块:衣服查询、分类查询这几部分来实现。 3、 留言模块:顾客留言这部分来实现。 4、  订衣服模块:购物车和订单查询来实现。 客户端结构功能如图3.1所示 图3.1 客户端结构功能图 3.3.1.2 后台管理端: 1、 服装管理模块:通过添加服装、添加服装类别、管理服装 2、 用户管理:会员管理、修改密码 3、 其他功能模块:留言管理、订单管理、添加城市、返回首页 后台管理端结构功能如图3.2所示: 图3.2 后台管理端结构功能图 3.3.2 总体功能流程图 整个系统的流程由用户访问网上服装店网站开始,如果用户要买衣服需要选择登录,若没有注册,系统要求用户注册,若已注册,经过系统验证通过后,用户成功登录,开始对自己选定的衣服下订单,系统自动把会员所下的订单传递给后台管理员审核,审核通过管理员调配衣服通过物流邮递到会员手中,会员付款,完成整个交易过程。整个系统的流程可以用下面的图3.2所示: 图3.2 系统流程图 第4章 数据库设计 4.1 数据库设计思想 网上服装店系统的数据库设计采用了MySQL数据库,数据库名为Shoppingclotheonnet,采用JDBC(Java数据库连接)连接数据库,JDBC是由一组用Java编程语言编写的类和接口组成【10】。 根据系统需求,在登录系统时提供所要的身份验证信息,在本系统中设计了两种登录方式,分别是系统管理员和顾客会员,所以设计了管理员信息表和顾客会员信息表。经过身份验证后,进入系统。在前台客户端模块中涉及到顾客会员管理,服装信息管理,订衣服管理,留言系统,要设计注册会员信息表,服装信息表,订单数据信息表,购物车实体相关的信息表。在前台客户端模块中,顾客要通过注册会员,选择衣服信息,下订单,付款等操作来实现服装交易的顾客部分,数据库中关联与顾客会员的相关操作来进行相关的增加、删除、修改、插入数据信息操作数据库表;在后台管理端模块中,涉及到,管理员信息,服装管理,会员用户管理,订单处理,留言功能等功能,要设计管理员信息表,服装信息表,订单信息表,会员信息表。在后台管理端模块中,管理员要审核会员信息,审核衣服信息,修改衣服信息,处理订单信息,通过操作来改变这些表在数据库中的内容。 根据以上的分析,本系统采用关系型数据库并设计了6个数据库表,分别是顾客信息表(UserData)、订单查询表(OrderData)、留言模块表(MassageModule)、购物车模块表(ShoppingCar)、服装管理模块表(ClotheManage)、会员管理模块表(VIPManage)。 网上服装店系统数据库的访问采用JDBC的方式连接。 4.2 系统E-R图 本系统是网上服装店系统,根据上面的结构设计和初步的数据库设计思想,规划的实体主要有管理员,衣服实体、顾客、会员、购物车实体、订单系统等。这些实体包含各种具体实际信息,通过相互之间的作用形成数据的流动【11】。它们的E-R图如下图4.1所示: 图4.1 系统E-R图 4.3 数据库表设计 本系统是一个网上服装店系统,在系统详细设计之前应该对系统中所涉及到的对象实体进行信息建模,并最终得到完整的数据库表结构。 4.3.1 顾客信息表(UserData) 提供会员注册、修改密码、修改个人信息和找回密码等功能 数据表结构如表4.1所示: 表4.1 UserData 表结构 字段名称 数据类型 是否可为空 约束 描述 UserID Int NO 主键 顾客ID UserName Varchar(50) *   顾客姓名 Role Varchar(50) *   顾客角色(会员或游客) PassWord Varchar(50) *   密码 Email Varchar(50) *   邮箱 Address Varchar(50) *   地址 Phone Varchar(50) *   电话 QQ Varchar(50) *   QQ           4.3.2 订单查询模块(OrderData) 提供用户查询自己所有订单。 数据表设计如表4.2所示: 表4.2 OrderData表结构 字段名称 数据类型 是否为空值 约束 描述 OrderID Int NO 主键 操作员编号 UserID Int *   操作员姓名 UserName Varchar(50) *   操作员密码 ClotheName Varchar(50) *     Price Float *     Count Int *     OrderTime Datetime *     State Bit *     DeliverMode Varchar(50) *     PayMode Varchar(50) *     ClotheID Int *               4.3.3 留言模块(MassageModule) 提供顾客留言和管理员与顾客交流等功能。 数据库表设计如表4.3所示: 表4.3 MassageModule表结构 字段名称 数据类型 是否为空值 约束 描述 ID Int NO 主键 管理员编号 GuestID Int *   管理员名字 [User] Varchar(50) *   管理员密码 Title Varchar(50) *     NickName Varchar(50) *     Time DateTime *     [content] Text *               4.3.4 购物车模块(ShoppingCar) 购物车模块提供了顾客已选的衣服信息,供用户选择是否为购物车内衣服付款下订单。 数据库表设计如表4.4所示: 表4.4 ShoppingCar表结构 字段名称 数据类型 是否为空值 约束 描述 ID Int NO 主键 采购员编号 ClotheName Varchar(50) *   采购员姓名 Count Int *   采购员性别 Price Float *   电话 Sum Float *               4.3.5 服装管理模块(ClotheManage) 服装管理模块中,管理员可以添加服装信息、管理服装状态。 数据库表的设计如表4.5所示: 表4.5 ClotheManage表结构 字段名称 数据类型 是否为空值 约束 描述 ClotheID Int NO 主键 校验员编号 ClotheName Varchar(50) *   校验员姓名 Author Varchar(50) *   校验员性别 Price1 Float *   电话 Price2 Float *     Category Varchar(50) *     Publisher Varchar(50) *     Format Int *     Pages Int *     Words Int *     PublishDate Varchar(50) *     Attention Int *     [content] Text *     Cover Varchar(100) *     Count Int *               4.3.6 会员管理模块(VIPManage) 管理员可以进行会员管理、密码修改。 数据库表设计如表4.6所示: 表4.6 VIPManage表结构 字段名称 数据类型 是否为空值 约束 描述 UserID Int NO 主键 出货员编号 Email Varchar(50) *   出货员姓名 UserName Varchar(50) *   出货员性别 PassWord Varchar(50) *   电话 Role Varchar(50) *     Address Varchar(50) *     Phone Varchar(50) *     QQ Varchar(50) *               第5章 系统详细设计与实现 5.1 系统主界面的设计 进入系统主界面,系统主界面主要是让用户对该系统的各个功能模块一目了然,使用方便快捷,在主界面的上我们可以看到,包括首页、用户管理、购物车、订单、退出、用户注册、用户登录、衣服查询搜索等等功能按钮;,这些主要涉及到按钮的设计,以及这样将图片文字对应到各个按钮和背景上,使主界面看起来舒服美观; 界面如下图5.1所示: 图5.1 系统主界面图 5.2 系统主要功能实现 系统功能模块主要包括进货管理模块、出货管理模块、库存管理模块、统计报表模块、日常管理模块,每个模块具体实现如下。 5.2.1 会员注册 会员注册的界面如下图5.2所示: 图5.2 会员注册界面图 5.2.2 会员登录 系统登录模块主要用于会员登录系统时输入的用户名、密码是否正确,登录方式是否正确,如果正确,会员进入系统,否则将不能已会员资格进入系统。 5.2.2.1 会员登录前 会员登录前模块界面的设计如图5.3所示: 图5.3 会员登录界面图 5.2.2.2 会员登录后 会员登录后,界面如图所示: 以一名叫billdone的会员登录后为例: 图5.4 会员登录后操作界面图 5.2.3 购物车 购物车模块提供了顾客已选的衣服信息,供用户选择是否为购物车内衣服付款下订单,可以管理自己已选的衣服信息,选择删除衣服,选择继续购物,选择下订单,购物车的界面设计如图5.7所示: 图5.5 购物车主界面图 5.2.4 商品详细信息 商品详细信息模块主要是实现展示商品具体详细直观的功能,商品详细模块的界面设计如图5.6所示: 图5.6 商品详细信息模块界面图 5.2.5 订单 5.2.5.1 订单查询 订单查询模块提供用户查询自己所有订单,订单模块的主界面设计如图5.7所示: 图5.7 订单模块主界面 5.2.5.2 购物订单确认模块 从购物车里选择需要下订单的衣服后,生成一个将下订单的确认信息表,让会员用户选择是否要确认下订单,并在完成预览,点击确认订单后,正式成功生成订单。 购物订单确认模块的功能界面图,如下图所示: 5.8 订单确认模块主界面图 5.2.6 管理员登陆 管理员登陆前,如图所示: 图5.9 管理员登录界面 管理员登陆后,进入管理员界面,如图所示: 图5.10 管理员进入后的界面 5.2.7 管理会员 管理注册会员,主要有删除已注册会员,界面如图所示: 5.2.8 管理服装信息 主要实现服装的添加,修改和删除服装的功能,具体的功能界面如下。 5.2.8.1 添加服装 添加服装和添加服装信息,输入将要添加的服装信息后,界面如图5.11所示: 图5.11 服装添加界面 5.2.8.2 修改服装信息 修改服装信息的界面如图5.12所示: 图 5.12 服装信息修改界面 5.2.8.3 删除服装信息 删除服装信息,如图5.13所示: 图 5.13 服装信息删除界面 5.2.9 JDBC+Hibernate技术的数据库连接 使用JDBC+hibernate技术连接MySQL,步骤是: (1) 向工程中添加数据库驱动包,即将JAR包导入到项目中; (2) 载入JDBC驱动程序。如果要载入驱动程序,只需要在在hibernate的配置文件中Class.forName方法中指定数据库驱动程序的类名:Class.forName(DriverName)。这样做就自动创建了驱动程序的实例,并注册到JDBC驱动程序管理器。这个参数接收一个表示完全限定类名(即包括包名的类名)的字符串,载入对应的类。这个调用可能会抛出ClassNotFoundException异常,因而必须放在try/catch块中。因而,本系统实现JDBC驱动程序的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 为: com.mysql.jdbc.Driver hibernate技术的.xml连接mysql数据库的配置文件(hibernate.cfg.xml)代码如下: true true org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:8080/ecport root zhengshu89 org.hibernate.cache.NoCacheProvider     (3) 建立连接。载入JDBC驱动程序后,必须连接URL指定数据库服务器的主机名、端口和数据库名。在本系统中连接数据库的语句是: Final String JDBC_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; final String DATABASE_URL = "jdbc:microsoft:sqlserver://localhost:1433;DATABASENAME=kucunguanli"; 数据库连接成功,在登录系统时会提示操作员或管理员成功登陆,若数据库连接失败,则登录时系统会抛出异常,并提示数据库连接失败的错误,操作员或管理员进入不了系统。 第6章 系统关键代码 6.1 Web.xml 主要包括struts-config.xml和web.xml  两个配置文件 6.1.1 struts-config.xml         6.1.2 web.xml文件代码 action    org.apache.struts.action.ActionServlet 2    action *.do index.jsp 6.2 关键实体的.hbm.xml文件 包括User.hbm.xml 、ContcatInfo.hbm.xml 、Country.hbm.xml    Province.hbm.xml、Category.hbm.xml、Product.hbm.xml    Order.hbm.xml、PayWay.hbm.xml和hibenater.cfg.xml等hbm.xml实体xml文件 6.2.1 Hibenater.cfg.xml         true true org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/ecport root zhengshu89 org.hibernate.cache.NoCacheProvider 6.2.2 其它关键hbm.xml 举Order.hbm.xml和Product.hbm.xml为例 Order.hbm.xml:   6.3 实体javabean 特举几个例子,其余的 public class Order { private  Integer  id; private  String  name; private  double  cost; private  User  user; private  PayWay payWay ; private  OrderStatus status ; private  Set  orderlines = new HashSet(); public Order() {    } public Order(Integer id) {super();    this.id = id;    } public double getCost() {return cost;    } public void setCost(double cost) {this.cost = cost;    } public Integer getId() {return id;    } public void setId(Integer id) {this.id = id;    } public String getName() {return name;    } public void setName(String name) {this.name = name; } public Set getOrderlines() {return orderlines; } 6.4 实体操作DAO 6.4.1 接口DAO public interface  OrderDao { public  void  addOrder(Order order)throws ManagerOrderException; public  Collection findAll(String  user_name)throws ManagerOrderException; public  Order  findById(Integer id)throws  ManagerOrderException; } public interface ProductDao { public  Product  findById(Integer  id )throws ManagerProductException; public  Collection  findAll( )throws ManagerProductException; //以下为分页方法的接口 public  Collection  find(int start, int max)throws  ManagerProductException; public  int  getTotal()throws  ManagerProductException; public Collection  find(Product product)throws ManagerProductException; public interface UserDao { public void add(User user) throws ManagerUserException; public void update(User user) throws ManagerUserException; public User findById(Integer id) throws ManagerUserException; public  User  login(String name, String passwd)throws ManagerUserException; } 6.4.2 实现后DAO public class OrderDaoHibernateImp implements  OrderDao{ public void addOrder(Order order) throws ManagerOrderException { Session  session  = null; Transaction  tran = null; try{ session = HibernateUtils.getSession(); tran = session.beginTransaction(); session.save(order); tran.commit(); }catch(Exception e ){ tran.rollback(); e.printStackTrace(); }finally{    session.close();} } public Order findById(Integer id) throws ManagerOrderException { Session  session = null; Transaction  tran = null; Order  order    = null; try{ session = HibernateUtils.getSession(); tran = session.beginTransaction(); order = (Order)session.get(Order.class, id); Hibernate.initialize(order.getOrderlines()); tran.commit(); }catch(Exception  e){ e.printStackTrace(); tran.rollback(); }finally{    session.close();    return  order; } } 6.5 Action类 几个经典的Action类: 6.5.1 LoginAction类 public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward=null; String name=request.getParameter("name"); String passwd=request.getParameter("passwd"); UserDao userDao=new UserDaoHibernateImp(); User user=userDao.login(name, passwd); if(user!=null){ //把user存入到session中 request.getSession().setAttribute("user", user); return mapping.findForward("success");        } else{ request.setAttribute("message", "用户名或密码输入错误!"); return mapping.findForward("error"); } 6.5.2 ShopCartAction类 public class ShopCartAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //从session中得到购物车 ShopCart shopCart=(ShopCart) request.getSession().getAttribute("shopcart"); //如果购物车为空就新建一个购物车 String product_id=request.getParameter("product_id"); Integer id=Integer.parseInt(product_id); Product product=null; product=new ProductBiz().findById(id); OrderLine orderline=new OrderLine(); orderline.setAmount(1); orderline.setProduct(product); shopCart.add(orderline); Map map=shopCart.getItems(); Collection orderlines=map.values(); request.getSession().setAttribute("list", orderlines); return mapping.findForward("cartshow"); 6.5.3 ProductListAction类 public class ProductListAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ShopCart shopCart = (ShopCart)request.getSession().getAttribute("shopcart"); if(shopCart==null){ shopCart = new ShopCart(); request.getSession().setAttribute("shopcart", shopCart); } ProductBiz productBiz = new ProductBiz(); Collection productList = null; String tj = request.getParameter("tj"); if(tj!=null){ int tjid = Integer.parseInt(tj); String name = request.getParameter("name"); switch (tjid) { case 1: productList = productBiz.findAll(); break; case 2: Product product = new Product(); product.setName(name); productList = productBiz.find(product); break; case 3: Product product2 = new Product(); product2.setBrand(name); productList = productBiz.find(product2); break; case 4: Product product3 = new Product(); product3.setStyle(name); productList = productBiz.find(product3); break; default: break; } }else{    productList = productBiz.findAll();} request.setAttribute("productlist", productList);    return mapping.findForward("productlist"); } 6.6 FormBean 类 ManageProductForm public class ManageProductForm extends ActionForm { private static final long serialVersionUID = 1L; private Product product = new Product(); private int product_id; public Product getProduct() {return product; } public void setProduct(Product product) {this.product = product; } public int getProduct_id() {return product_id; } public void setProduct_id(int productId) {product_id = productId; } ManageUserForm public class ManageUserForm extends ActionForm { private static final long serialVersionUID = 1L; private User user = new User(); private Integer id; public Integer getId() {return id; } public void setId(Integer id) {this.id = id; } public User getUser() {return user; } public void setUser(User user) {this.user = user; } 第7章 系统测试及结果分析 7.1 测试综述 为了确保本系统的质量和可靠性,要对系统进行全面的测试和调试,主要是软件测试和数据库测试,下面分别对它们进行了介绍。 7.1.1 软件测试综述 软件测试阶段的主要任务是发现并排除在分析、设计、编程阶段中产生的各种类型的错误,以得到可使用的软件系统。从用户和软件开发人员不同的角度看,进行软件测试的目的是完全不同的。用户往往是通过测试暴露出软件所存在的错误和缺陷,以考虑是否能接受该产品;而软件开发人员则希望通过测试来证实软件产品不存在任何错误和缺陷,验证该软件已满足了用户的需求,从而提高用户使用该软件产品的信心。因此,软件开发人员往往会选择那些导致程序失败概率小的测试数据去测试软件。显然,这样的测试对完善和提高软件质量毫无价值。因此,测试的目的应该是从软件包含有错误这一前提出发,通过测试查出并改正尽可能多的错误,不断提高软件的质量和可靠型 软件测试分为动态测试和静态测试。按产生测试数据的不同方式,动态测试可分为功能测试和结构测试,即黑盒测试和白盒测试。本系统采用的是黑盒测试。所谓黑盒测试是把测试对象视为一个黑盒子,测试人员只着眼于软件的外部特性,而不考虑软件的内部的逻辑结构,是在软件接口上进行的测试【12】。 7.1.2 数据库测试 测试系统与数据库是否连接上可以在包里写一个测试类TestSQL,代码如下: import java.sql.Connection;    import java.sql.DriverManager;    public class TestSQL {    public static void main(String[] args) {    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=kucunguanli";    String username="sa";    String pwd="";    String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";    Connection conn=null;    try{ Class.forName(driver); System.out.println("数据库驱动程序注册成功!");    conn=DriverManager.getConnection(url,username,pwd);    System.out.println("数据库连接成功");    }catch(Exception e){    e.printStackTrace();    System.out.println("数据库连接失败");    }   根据以上编写的数据库连接测试代码,运行系统,以用户名“sa”,密码为空登录,若数据库连接成功,则进入系统并在运行结果窗口有“数据库连接成功”的提示;若数据库连接失败,则在运行结果窗口有“数据库连接失败”的提示【13】。 7.2 测试实例 注册用户billdone, 登录billdone,打开系统主页 查询衣服或者根据衣服图片信息,选择衣服 查看衣服详细信息 把所有看中的衣服加入购物车 将购物车内的衣服,选择下订单的衣服 结 论 经过两个多月的努力,完成了本次毕业设计。在系统开发之前,指导老师就建议我们去公司实习或做一些调查,以便我们对本次系统有更合理、实用的设计,而不是只靠自己的意想当然去设计,在做了详细的调查,搜集大量的相关资料,开始进行该系统设计。设计时,严格按照软件工程的思想,从需求分析、可行性分析、总体设计、最后到详细设计。本系统我认为比较出色的地方就是采用类控件设计,数据库的操作也是写在java包里,不需要另外写存储过程和触发器;本系统是用Java写的基于桌面的一个系统,虽然没有达到网络化的要求,但基本的库存管理功能和大数据量的查询工作都基本可以满足,包括按选择的日期范围查询,根据市场的情形,就只实现单机系统也就足够了。 在设计过程中,我遇到了很多技术上的问题,平时在学习过程中,即使上机实验也都是些小的、较为简单的程序设计,都称不上为系统,因此,在开发系统的过程中碰到了很多棘手的问题,对于很多新的知识都是一知半解,只有在网上或图书馆搜集资料多加理解,然后再向同学和老师请教,慢慢尝试,多多练习,一点点改进,尽量实现所有设计的功能模块。在连接数据库时查阅了大量的资料。最后采用JDBC的方式连接MySQL数据库,经过几番调试后,系统和数据库成功连上。 本次毕业设计花费了我大量的精力和时间,但我觉得是值得的,以前我不喜欢动手去操作,不喜欢写程序,导致我的动手编程能力很差,思维的严密性和灵活性都不够好,处理问题的方式也不够好,甚至有点害怕编程,经过本次毕业设计,很多方面都有较大进步,动手能力强了,且对一个项目进行开发时能按照软件设计的思想逐一分析、设计,能合理安排工程进度。通过这次毕业设计使我把以前所学的零散的知识进行了一次大综合,对软件开发也有一个总体的认知,让我不在害怕编程,为以后的软件开发打下了坚实的基础。本次毕业设计过程中,我查阅了很多的资料,所以又进一步掌握更多的专业知识,技能水平也有很大的提高,总之,上机实践对于所有计算机专业的学生来说都是最重要的,要勤于动手动脑,多想多试才有创新,才有进步,才有收获。 致  谢 本次毕业设计从选题、设计到确定课题经历了较长时间。在这段时间得到了老师、同学以及朋友的帮助和支持,在此深表感谢!感谢他们的耐心指导和热心帮助,很多问题和困难在他们的帮助下迎刃而解,也从他们那里学到了很多,自己也加强了动手的能力。 首先感谢我的导师教授,在百忙之际仍然尽力帮我们解决遇到的问题,给我们讲解专业方面的很多知识,并教我们学习的方法,他严谨的工作作风同样也影响着我们,使我们也养成了严谨的学习态度。在毕业设计期间,从开题报告到 毕业论文 毕业论文答辩ppt模板下载毕业论文ppt模板下载毕业论文ppt下载关于药学专业毕业论文临床本科毕业论文下载 ,都给了我们很多好的建议,有表扬,有批评,根据我们每个人系统的特点提出可以改进和完善的地方,让我们在不断学习中日益进步,也锻炼了我们联系实际的能力,让我思考问题也更加多元化,让我们了解到自己所做的系统不仅仅是用来看的,而更要注重它的可操作性和实用性。从他那里我学到了更多的是做事和学习的态度问题,以及思考问题的全面性和严谨性,这对以后不论是在学校还是在工作岗位上都有很大的帮助。 其次要感谢我同组的同学们,因为自己在专业课方面缺乏动手能力,学到的理论知识与实际操作有很大的不同,经常会因微小的问题而不知所措,在他们的耐心帮助下,动手能力明显增强。因为和陈会能同学都是用的Java语言做的系统,他又比较精通此语言,所以给了我很大帮助,很多Java方面的不懂的问题都会请教他,在他的帮助下对Java也慢慢精通些,在这里非常感谢他在技术上给我指导。还有其他的朋友,平时在相互交流中,大家也取长补短,学到了很多,也得到了很多的帮助,感谢他们。 “不积跬步无以至千里”,这次毕业设计能够最终顺利完成,归功于各位老师四年间的认真教诲和谆谆教导,使我能够很好的掌握专业知识,并在毕业设计中得以体现。最后,我向计算机学院的全体老师们再次表示衷心感谢。 参考文献 [1] 叶志军.由浅入深——Java 2自学教程 [M] .北京:人民邮电出版社,2004.10 [2]《Web开发人员参考大全》柯恩、胡为君 电子工业 2007 [3]《JavaWeb开发详解》 孙鑫  电子工业出版社  2008 [4]《J2EE项目实训:Hibernate框架技术》杨少波 清华大学出版社 2008 [5]《深入浅出MySQL》唐汉明、翟振兴、兰丽华 人民邮电出版社 2008 [6] 夏邦贵等.SQL 数据库开发经典实例解析 [M].北京:机工出版社,2006. [7] 丁宝康,董健全.数据库实用教程(第二版)[J].北京:清华大学出版社,2003. [8] 明日科技,刘彬彬,马文强.Eclipse应用开发完全手册 [M].北京:人民邮电出版社,2007.9 [9] 思维科技,叶达峰.Eclipse编程技术与实例 [M] .北京:人民邮电出版社,2006.1 [10] 张海藩.软件工程导论 [M].北京: 清华大学出版社, 2007.8 [11] Cay S.Horstmann,Gary Cornell,Java 2核心技术[M]. 北京:机械工业出版社,2000,29-67 [12] George Reese. JDBC与java数据库编程[M]. 中国:电力出版社, 2002 [13] 附录 英文原著 (出处: Malcolm Davis. Struts--an open-source MVC implementation [J]. IBM Systems Journal, 2006,44(2):33-37.) Struts——an open-source MVC implementation Malcolm Davis This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology. Struts can help you control change in your Web project and promote specialization. Even if you never implement a system with Struts, you may get some ideas for your future servlets and JSP page implementation. Introduction Kids in grade school put HTML pages on the Internet. However, there is a monumental difference between a grade school page and a professionally developed Web site. The page designer (or HTML developer) must understand colors, the customer, product flow, page layout, browser compatibility, image creation, JavaScript, and more. Putting a great looking site together takes a lot of work, and most Java developers are more interested in creating a great looking object interface than a user interface. JavaServer Pages (JSP) technology provides the glue between the page designer and the Java developer. If you have worked on a large-scale Web application, you understand the term change. Model-View-Controller (MVC) is a design pattern put together to help control change. MVC decouples interface from business logic and data. Struts is an MVC implementation that uses Servlets 2.2 and JSP 1.1 tags, from the J2EE specifications, as part of the implementation. You may never implement a system with Struts, but looking at Struts may give you some ideas on your future Servlets and JSP implementations. Model-View-Controller (MVC) JSP tags solved only part of our problem. We still have issues with validation, flow control, and updating the state of the application. This is where MVC comes to the rescue. MVC helps resolve some of the issues with the single module approach by dividing the problem into three categories: l Model The model contains the core of the application's functionality. The model encapsulates the state of the application. Sometimes the only functionality it contains is state. It knows nothing about the view or controller. l View The view provides the presentation of the model. It is the look of the application. The view can access the model getters, but it has no knowledge of the setters. In addition, it knows nothing about the controller. The view should be notified when changes to the model occur. l Controller The controller reacts to the user input. It creates and sets the model. MVC Model 2 The Web brought some unique challenges to software developers, most notably the stateless connection between the client and the server. This stateless behavior made it difficult for the model to notify the view of changes. On the Web, the browser has to re-query the server to discover modification to the state of the application. Another noticeable change is that the view uses different technology for implementation than the model or controller. Of course, we could use Java (or PERL, C/C++ or what ever) code to generate HTML. There are several disadvantages to that approach: l Java programmers should develop services, not HTML. l Changes to layout would require changes to code. l Customers of the service should be able to create pages to meet their specific needs. l The page designer isn't able to have direct involvement in page development. l HTML embedded into code is ugly. For the Web, the classical form of MVC needed to change. Figure 4 displays the Web adaptation of MVC, also commonly known as MVC Model 2 or MVC 2. Struts details Displayed in Figure 6 is a stripped-down UML diagram of the org.apache.struts.action package. Figure 6 shows the minimal relationships among ActionServlet (Controller), ActionForm (Form State), and Action (Model Wrapper). Figure 6. UML diagram of the relationship of the Command (ActionServlet) to the Model (Action & ActionForm) Struts, an MVC 2 implementation Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains an extensive tag library and utility classes that work independently of the framework. Figure 5 displays an overview of Struts. Figure 5. Struts overview Struts overview l Client browser An HTTP request from the client browser creates an event. The Web container will respond with an HTTP response. l Controller The Controller receives the request from the browser, and makes the decision where to send the request. With Struts, the Controller is a command design pattern implemented as a servlet. The struts-config.xml file configures the Controller. l Business logic The business logic updates the state of the model and helps control the flow of the application. With Struts this is done with an Action class as a thin wrapper to the actual business logic. l Model state The model represents the state of the application. The business objects update the application state. ActionForm bean represents the Model state at a session or request level, and not at a persistent level. The JSP file reads information from the ActionForm bean using JSP tags. l View The view is simply a JSP file. There is no flow logic, no business logic, and no model information -- just tags. Tags are one of the things that make Struts unique compared to other frameworks like Velocity. Note: "Think thin" when extending the Action class. The Action class should control the flow and not the logic of the application. By placing the business logic in a separate package or EJB, we allow flexibility and reuse. Another way of thinking about Action class is as the Adapter design pattern. The purpose of the Action is to "Convert the interface of a class into another interface the clients expect. Adapter lets classes work together that couldn_t otherwise because of incompatibility interface" (from Design Patterns - Elements of Reusable OO Software by Gof). The client in this instance is the ActionServlet that knows nothing about our specific business class interface. Therefore, Struts provides a business interface it does understand, Action. By extending the Action, we make our business interface compatible with Struts business interface. (An interesting observation is that Action is a class and not an interface. Action started as an interface and changed into a class over time. Nothing's perfect.) The Error classes The UML diagram (Figure 6) also included ActionError and ActionErrors. ActionError encapsulates an individual error message. ActionErrors is a container of ActionError classes that the View can access using tags. ActionErrors is Struts way of keeping up with a list of errors. Figure 7. UML diagram of the relationship of the Command (ActionServlet) to the Model (Action) Future of Struts Things change rapidly in this new age of software development. In less than 5 years, I have seen things go from cgi/perl, to ISAPI/NSAPI, to ASP with VB, and now Java and J2EE. Sun is working hard to adapt changes to the JSP/servlet architecture, just as they have in the past with the Java language and API. You can obtain drafts of the new JSP 1.2 and Servlet 2.3 specifications from the Sun Web site. Additionally, a standard tag library for JSP files is appearing. 附录 中文翻译 (译自: Malcolm Davis. Struts--an open-source MVC implementation [J]. IBM Systems Journal , 2006,44(2):33-37.) Struts——MVC 的一种开放源码实现 Malcolm Davis 本文介绍 Struts,它是使用 servlet 和 JavaServer Pages 技术的一种 Model-View-Controller 实现。Struts 可帮助您控制 Web 项目中的变化并提高专业化水平。尽管您可能永远不会用 Struts 实现一个系统,但您可以将其中的一些思想用于您以后的 servlet 和 JSP 网页的实现中。 简介 小学生也可以在因特网上发布 HTML 网页。但是,小学生的网页和专业开发的网站有质的区别。网页设计人员(或者 HTML 开发人员)必须理解颜色、用户、生产流程、网页布局、浏览器兼容性、图像创建和 JavaScript 等等。设计漂亮的网站需要做大量的工作,大多数 Java 开发人员更注重创建优美的对象接口,而不是用户界面。JavaServer Pages (JSP) 技术为网页设计人员和 Java 开发人员提供了一种联系钮带。 如果您开发过大型 Web 应用程序,您就理解 变化 这个词的含义。“模型-视图-控制器”(MVC) 就是用来帮助您控制变化的一种设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合。Struts 是一种 MVC 实现,它将 Servlet 2.2 和 JSP 1.1 标记(属于 J2EE 规范)用作实现的一部分。尽管您可能永远不会用 Struts 实现一个系统,但了解一下 Struts 或许使您能将其中的一些思想用于您以后的 Servlet 的 JSP 实现中。 模型-视图-控制器 (MVC) JSP 标记只解决了部分问题。我们还得处理验证、流程控制和更新应用程序的状态等问题。这正是 MVC 发挥作用的地方。MVC 通过将问题分为三个类别来帮助解决单一模块方法所遇到的某些问题: l Model(模型) 模型包含应用程序的核心功能。模型封装了应用程序的状态。有时它包含的唯一功能就是状态。它对视图或控制器一无所知。 l View(视图) 视图提供模型的表示。它是应用程序的 外观。视图可以访问模型的读方法,但不能访问写方法。此外,它对控制器一无所知。当更改模型时,视图应得到通知。 l Controller(控制器) 控制器对用户的输入作出反应。它创建并设置模型。 MVC Model 2 Web 向软件开发人员提出了一些特有的挑战,最明显的就是客户机和服务器的无状态连接。这种无状态行为使得模型很难将更改通知视图。在 Web 上,为了发现对应用程序状态的修改,浏览器必须重新查询服务器。 另一个重大变化是实现视图所用的技术与实现模型或控制器的技术不同。当然,我们可以使用 Java(或者 PERL、C/C++ 或别的语言)代码生成 HTML。这种方法有几个缺点: l Java 程序员应该开发服务,而不是 HTML。 l 更改布局时需要更改代码。 l 服务的用户应该能够创建网页来满足它们的特定需要。 l 网页设计人员不能直接参与网页开发。 l 嵌在代码中的 HTML 很难看。 对于 Web,需要修改标准的 MVC 形式。图 4 显示了 MVC 的 Web 改写版,通常也称为 MVC Model 2 或 MVC 2。 图 4. MVC Model 2 Struts,MVC 2 的一种实现 Struts 是一组相互协作的类、servlet 和 JSP 标记,它们组成一个可重用的 MVC 2 设计。这个定义表示 Struts 是一个框架,而不是一个库,但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。图 5 显示了 Struts 的一个概览。 图 5. Struts 概览 Struts 概览 l Client browser(客户浏览器) 来自客户浏览器的每个 HTTP 请求创建一个事件。Web 容器将用一个 HTTP 响应作出响应。 l Controller(控制器) 控制器接收来自浏览器的请求,并决定将这个请求发往何处。就 Struts 而言,控制器是以 servlet 实现的一个命令设计模式。 struts-config.xml 文件配置控制器。 l 业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。 l Model(模型)的状态 模型表示应用程序的状态。业务对象更新应用程序的状态。ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级。JSP 文件使用 JSP 标记读取来自 ActionForm bean 的信息。 l View(视图) 视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 -- 只有标记。标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。 详细分析 Struts 图 6 显示的是 org.apache.struts.action 包的一个最简 UML 图。图 6 显示了 ActionServlet (Controller)、 ActionForm (Form State) 和 Action (Model Wrapper) 之间的最简关系。 图 6. Command (ActionServlet) 与 Model (Action & ActionForm) 之间的关系的 UML 图 Struts 的前景 在这个软件开发的新时代,一切都变得很快。在不到 5 年的时间内,我已经目睹了从 cgi/perl 到 ISAPI/NSAPI、再到使用 VB 的 ASP、一直到现在的 Java 和 J2EE 的变迁。Sun 正在尽力将新的变化反映到 JSP/servlet 体系结构中,正如他们对 Java 语言和 API 所作的更改一样。您可以从 Sun 的网站获得新的 JSP 1.2 和 Servlet 2.3 规范的草案。此外,一个标准 JSP 标记库即将出现。
本文档为【网上服装店系统论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321635
暂无简介~
格式:doc
大小:216KB
软件:Word
页数:69
分类:互联网
上传时间:2019-01-12
浏览量:26