电子相册管理系统

电子相册管理系统摘要随着人们生活水平的逐步提高 旅游照相成了大家必不可少放松项目

                    摘要

随着人们生活水平的逐步提高,旅游照相成了大家必不可少放松项目。虽然照片最后会存入到自己的电脑里,但是时间一长、照片一多,这些有着勾起回忆的“资料”,就会显得杂乱无章,即不方便欣赏,也不方便管理。而电子相册具有欣赏、传播方便,界面美观等特点,可以很好的管理所存入的照片,不失为最佳欣赏、保存照片的相册工具。电子相册系统平台也就应此应运而生。

本系统是一种基于B/S架构的电子相册管理系统,它采用目前最流行的Java语言编写,用到了当今先进的技术如 JSP技术、Hibernate、Spring、Struts框架等来实现该系统。

系统分为五大模块、相册列表模块、新建相册模块、修改资料模块、修改密码模块、添加相册分类模块。注:前四大模块是根据注册用户的提供的,注册用户登陆后可以进行添加相册,上传,删除照片,修改资料等一系列操作,最后一项是管理员登陆所进行的操作。而如果是未注册用户只能查看相册中的内容,没有权力进行相应的修改。

关键词:JAVA;电子相册;三框架;MVC

Abstract

As people gradually increase the standard of living, travel photography has become essential to relax the project everyone. While the photos will eventually be deposited to your computer, but over time, more than one photo, which has brought back memories of the "data", will be very chaotic, that is inconvenient to enjoy, not to facilitate management. Electronic album with appreciation, the spread of convenience, the interface appearance characteristics such as good management can be deposited in the photos, after all, enjoy the best, save a photo album tool. Electronic photo album will be the platform came into being.

   The system is based on B / S structure of the electronic photo album management system, it uses the most popular languages java, using today's advanced technologies such as jsp technologies, Hibernate, Spring, Struts framework to achieve the system.

   System is divided into five modules, the album list module, new album module, modify the module, modify the password module, add the album classification module. Note: before the four modules are based on the provision of registered users, registered users can add after landing albums, upload, delete photos, edit information, such as a series of operations, the last one is carried out by the administrator landing operation. And if it is unregistered users can only view the content of the album, does not have the authority to amend accordingly.

Keywords: JAVA; Electron Photo Album; Three Frames; MVC

目 录

摘要

Abstract

1 绪论

1.1 系统开发的背景和意义

1.2 国内外发展状况

1.3 研究内容

2 程序技术相关知识

2.1 JAVA 简介

2.2 JAVA EE平台相关介绍

2.3 所采用数据库及原因

2.4 MVC设计模式的原理

2.4.1 MVC设计思想

2.4.2 MVC的优点

2.5三框架相关知识简介

2.5.1 STRUTS框架

2.5.2 HIBERNATE框架

2.5.3 SPRING框架

2.6 JSP技术

2.7 关于JavaScript 脚本语言的应用

2.8 MyEclipse开发工具的简要介绍

2.9 WEB服务器Tomcat6.0

2.9.1 Tomcat Server的组成部分

2.9.2 Tomcat Server处理一个http请求的过程

2.10 本章小结

3 电子相册系统需求分析

3.1可行性分析

3.1.1系统总体目标

3.1.2技术可行性分析

3.1.3功能需求

3.1.4性能需求

3.2系统总体结构

3.2.1 系统总体结构

3.2.2用例图

3.3系统功能模块结构

3.3.1相册列表模块

3.3.2新建相册模块

3.3.3修改资料模块

3.3.4修改密码模块

3.3.5添加相册模块

3.4 数据库设计

3.5 本章小结

4 系统实现

4.1管理员登陆设计

4.1.1管理员登陆主页面的创建

4.1.2 实现过程

4.2 注册用户登陆设计

4.2.1 注册用户登陆界面的创建

4.2.2 注册用户登陆界面

4.2.3 实现过程

4.3 未注册用户注册设计

4.4 添加相册分类的实现

4.5 管理员添加相册界面

4.5.1 实现过程

4.6 数据库设计

4.6.1使用SHOW语句找数据库

4.6.2 创建一个数据库abccs

4.6.3 选择你所创建的数据库

4.6.4 创建一个数据库表

4.6.5 往表中加入记录

4.6.6装入数据库表

4.7系统测试

4.7.1 测试目标

4.7.2 各模块测试

4.8 本章小结

结论

参考文献

致谢

附录1 开题报告

附录2 文献综述

附录3  外文翻译

第1章 绪论

随着数码摄影时代的到来,不论是专业摄影师建立图片档案或是向他人展示自己的摄影作品,还是家庭生活摄影,都需要电子相册来保管摄影作品。如同传统的照相簿,电子相册既有展示功能也有存储和管理功能。

电子相册是现在时下最流行的一种网络素,它可以应该在很多的领域,例如时下最流行的空间及博客就是大量的应该这一技术,而且受到大多数网友的认可及追捧,其以静态照片为素材(获得源方式为扫描仪扫描、数码相机所拍等),配合动感的背景、前景和字幕等视频处理的特殊效果,配上音乐就可制作成电子相册。制作好的电子相册可以在电脑上,各类影碟机上,以及手机和MP4里都能观看,这是电子相册技术发展到今天的一个新的突破,即不再像传统那样,只能在电脑上或在影碟机上观看了,并且还可以通过手机将自己的个性化MTV发送给远方的亲朋好友们分享。当然,如果考虑到长期保存的话,制作成电子相册光盘那是最好的选择啦,金碟可保存100多年之久,标准VCD、SVCD、DVD格式,兼容性好,通过影牒机即可与家人、朋友、客户观赏。若保存在硬盘上,也便于随时调阅、欣赏,永久保存。

1.1 系统开发的背景和意义

随着人们生活水平的逐步提高,旅游成了大家必不可少放松项目,每当笔者走到一个美丽的景点,就会忍不住拿起数码相机照上几张留做回忆。虽然照片最后会存入到自己的电脑里,但是时间一长、照片一多,这些有着勾起回忆的资料,就会显得杂乱无章,即不方便欣赏,也不方便管理。而电子相册具有欣赏、传播方便,界面美观等特点,可以很好的管理所存入的照片,不失为最佳欣赏、保存照片的相册工具。

另外随着数码相机、手机照相等功能的普及,想必每个人手上都储存了大量的电子相片,但这此照片如果不进行处理,仅仅以一张张图片的形式放置在电脑上,不仅 不易观赏,也不方便分类管理,是否有软件能将这些照片整理成一本本的相册呢?电子相册系统平台就是一款集相册制作、生成、浏览专业软件,有了它的帮助,制用相册再也不需要专业的技术,普通用户也可以在五分钟内制作出精美的电子相册,支持170余种照片显示特技,可以为相片加入文件注释及说明。

1.2 国内外发展状况

电子相册是现在时下最流行的一种网络素,它可以应该在很多的领域,例如时下最流行的空间及博客就是大量的应该这一技术,而且受到大多数网友的认可及追捧,其以静态照片为素材(获得源方式为扫描仪扫描、数码相机所拍等),配合动感的背景、前景和字幕等视频处理的特殊效果,配上音乐就可制作成电子相册。制作好的电子相册可以在电脑上,各类影碟机上,以及手机和MP4里都能观看,这是电子相册技术发展到今天的一个新的突破,即不再象传统那样,只能在电脑上或在影碟机上观看了。并且还可以通过手机将自己的个性化MTV发送给远方的亲朋好友们分享。当然,如果考虑到长期保存的话,制作成电子相册光盘那是最好的选择啦,金碟可保存100多年之久,标准VCD、SVCD、DVD格式,兼容性好,通过影牒机即可与家人、朋友、客户观赏;若保存在硬盘上,也便于随时调阅、欣赏,永久保存。

1.3 研究内容

电子相册系统是一种基于B/S架构的管理系统,它采用目前最流行的java语言编写,用到了当今先进的技术如 jsp技术、Hibernate、Spring、Struts框架等来实现该系统。采用MVC框架技术提高了系统的可维护性。

本系统所研究的是从电子相册的管理到相册的生成等一系列的问题,大致分为:前台包括相册列表、新建相册、修改资料、修改密码、技术支持,后台包括相册管理,

本文共分5章,第1章是绪论,第2章介绍开发本系统所用到的相关技术,第3章是系统的需求分析及结构图,第4章是相册系统的系统实现,第5章是总结。各章节的研究内容如下:

(1) 第1章主要介绍了选题的背景和意义,论述了系统的国内发展状况。

(2) 第2章主要介绍了实现电子相册系统所用的软件和系统建设过程中使用的相关技术。

(3) 第3章主要是电子相册系统的需求分析。

(4) 第4章是系统的编码实现,从三框架的实现,数据库的创建等方面介绍了系统的实现。

(5) 第5章主要是此系统的的总结。

第2章 程序技术相关知识

2.1 JAVA 简介

Java是Sun公司开发的编程语言,使用它可以在各式各样不同的机器、不同操作平台的网络开发环境中开发软件。不论用户使用的是哪一种WWW浏览器、哪一种计算机、哪一种操作系统,只要WWW浏览器上面注明了“支持Java”,就可以看到生动的页面。Java正在逐步成为Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自个人计算机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。

Java是一种语法简介、清晰的语言,它的程序运行需要一个解释器,也就是所谓的“虚拟机” 。虚拟机以某种高速算法执行Java的面相对象语言代码。从Java2.0开始,Java分为3个版本J2ME(微机版本)、J2SE(标准版本)和J2EE(企业级版本),分别用于支持消费类电子设备、标准PC以及企业级应用的开发,版本之间的区别不仅在于所支持的类库的大小不同,也在于个版本都对应着不同的Java虚拟机。

Java的主要特性是可移植性,安全性,网络移动性,其中网络移动性是Java的最主要的一个特性。而如果没有安全性,可移植性的支持,就无法实现网络移动性。Java的网络移动性带来了一次Web革命。随着Internet的发展,Java技术本身在不断得进步,JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发平台。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。

2.2 JAVA EE平台相关介绍

J2EE,Java2平台企业版(Java 2 Platform Enterprise Edition), 是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。

    Sun公司在1998年发表JDK1.2版本的时候,使用了新名称Java 2 Platform,即“Java2平台”,修改后的JDK称为Java 2 Platform Software Develping Kit,即J2SDK。并分为标准版(Standard Edition,J2SE), 企业版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此诞生。

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。

随着Java技术的发展,J2EE平台得到了迅速的发展,成为Java语言中最活跃的体系之一。现如今,J2EE不仅仅是指一种标准平台(Platform),它更多的表达着一种软件架构和设计思想。

从整体上讲,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE和适用于企业级应用的J2EE。Sun推出J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。

2.3 所采用数据库及原因

本系统采用的是目前比较流行的小型数据库系统MYSQL。

MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统。MySQL 完全适用于网络,用其建造的数据库可在因特网上的任何地方访问,因此,可以和网络上任何地方的任何人共享数据库。MySQL具有功能强、使用简单、管理方便、运行速度快、可靠性高、安全保密性强等优点。MySQL用C和C++编写,它可以工作在许多平台(Unix,Linux,Windows)上,提供了针对不同编程语言(C,C++,JAVA等)的API函数;使用核心线程实现多线程,能够很好的支持多CPU;提供事务和非事务的存储机制;快速的基于线程的内存分配系统;MySQL采用双重许可,用户可以在GNU许可条款下以免费软件或开放源码软件的方式使用MySQL软件,也可以从MySQL AB公司获得正式的商业许可。

除了以上特点,MySQL 还有一个最大的特点,那就是在诸如 UNIX 这样的操作系统上,它是免费的,可从因特网上下载其服务器和客户机软件。并且还能从因特网上得到许多与其相配的第三方软件或工具。而在 Windows 系统上,其客户机程序和客户机程序库是免费的。

有些软件开发人员可能会认为MYSQL数据库属于那个小型的数据库,但是在我看来不同的数据库要根据你不同的需要还进行选择的,在我看来时下小的程序例如电子相册系统它不会产生大量的数据,只需要一些数据的查询和相应的插入没有太复杂的表与表这间的结构,而且对于小系统来说性能是相当重要的。相比MYSQL来说ORACLE数据确实可以看作是相当大的而且功能相当全的数据库,但是同是ORACLE数据库对于系统的要求也是相当的苛刻。它要求系统要有较高的性能才能带得起整个程序的发布。

MySQL 包含有下列工具:

   (1) SQL 服务器。这是 MySQL 的引擎,它提供对数据库的访问。

   (2) 访问服务器的客户机程序。包括一个允许直接录入查询并查看结果的交互式程序,以及几个帮助操纵站点的管理程序和实用程序。其中有一个实用程序允许控制服务器。其他的实用程序导入或导出数据,检查访问许可等。

   (3) 帮助用户编写自己的程序的客户机库。MySQL提供众多的API ( C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl)

   (4) MySQL 除了提供内嵌软件外,它还被许多很有才能的人使用。这些人喜欢编写软件以提高其产品效率,或愿意将自己编写的软件提供给他人使用。因此,使用 MySQL能得到各种各样的第三方工具,这些工具令 MySQL使用更方便,或者扩展了 MySQL,使其进入诸如 Web 站点开发这样的领域。

2.4 MVC设计模式的原理

在这里简要的介绍一下关于上一章中反复提到的MVC结构,其实MVC可以说是模型层--视图层—控制层的简称,即 Model-View-Controller的简称。它强制性地把应用程序的输入、处理和输出分开,大大提高了代码的重用性。如图2-1所示。

图 2-1 MVC示图

2.4.1 MVC设计思想

MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。

  视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。

模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。

业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。

  控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。

2.4.2 MVC的优点

大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。

  首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。

2.5三框架相关知识简介

本系统是基于J2EE的三种框架的集成性开发,其中包括STRUTS框架SPRING框架HIBERNATE框架等,它们在整个模块的开发过程中起着不同的作用。

2.5.1 STRUTS框架

其中STRUTS框架主要是MVC结构,而MVC把交互系统的组成分解成模型、视图、控制器三部分。模型(Model)是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,独立于具体的界面表达和I/O操作。视图(View)把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。控制器(Controller)是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图对应一个控制器。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。

2.5.2 HIBERNATE框架

HIBERNATE框架是一个数据持久层框架,是一种实现对象和关系之间映射(O/R Mapping)的工具,它对JDBC进行了轻量级的对象封装,使程序员可以使用对象编程思想来操作数据库。它不仅提供了从Java类到数据表的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来操作数据库,使用Hibernate能大大的提高实现的效率。Hibernate框架用配置文件的形式来定义Java对象和数据表之间的映射关系,同时在更深的层面将数据表之间的关系解释为Java对象之间的继承及包含等关系。通过使用HQL语句将复杂的关系算法用对象的方式描述,在很大程度上简化了对数据的查询,加快了开发的效率。在Hibernate中有一个简单而直观的API,用于对数据库所表示的对象执行查询。要创建或修改这些对象,只需在程序中与它们进行交互,然后告诉Hibernate保存即可。这样,大量封装持久化操作的业务逻辑不再需要编写烦琐的JDBC语句,从而使数据持久层得到了极大的简化。

2.5.3 SPRING框架

而Spring是一个开源框架主要有两大特性包括:依赖注入(IOC)和切面(AOP)在我的这个设计中基本上只体现了其中的一部分也就是IOC依赖注入,所谓的依赖注入就是Spring通过一种称作控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IOC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。

2.6 JSP技术

随着Web应用的飞速发展,传统的静态HTML语言已经越来越不适应需要,由此导致了人们在传统的静态HTML上增添新的功能,这一切功能最终导致了动态HTML的产生,Web已经从一个大部分显示静态信息的网络演化成能够进行股票交易和购书操作等的一种基础设施网络。静态HTML对于显示静态内容是不错的选择,新的挑战在于创建交互的基于Web的应用程序,用户在浏览信息的同时也需要向服务器反馈一些信息,在这些程序中,页面的内容是基于用户的请求或系统的状态,而不是预先定义的文字。

某些Web服务器供应商已经尝试通过为他们的服务器提供“插件”和API来简化Web应用程序的开发难度。但这些解决方案是与特定的Web服务器相关的,例如,微软的ASP技术使得在Web页面上创建动态内容更加容易,但是也只能工作在微软的IIS和Personal Web Server上。还存在其他的解决方案,但不能使一个普通的页面设计者更加容易掌握。例如像Java  Servlets技术,就可以使得用Java语言编写交互应用程序的服务器端代码变得很容易,开发人员能够编写出这样的Servlets,以接受来自Web浏览器的HTTP请求,动态地生成响应,然后发送包含HTML或XML文档的响应到浏览器。 采用这种方法,整个网页必须都在Java Servlets中制作,如果开发人员或者Web管理人员想要调整页面显示,就不得不编辑并重新编译该Java Servlets,即使在逻辑上已经能够运行了。采用这种办法,生成有动态内容的页面仍然需要应用程序的开发技巧。

很显然,目前需要的是一个业界范围内的创建动态内容的解决方案。这个方案将解决当前方案所受到的限制,即使在任何Web的交互程序服务器上运行、将应用程序逻辑和页面显示分离、能够快速地开发和测试、简化开发基于Web的交互式应用程序的过程。

JSP技术就是被设计用来满足这样的要求的。

JSP规范是Web服务器、应用服务器、交易系统以及开发工具供应间广泛合作的结果,SUN公司开发出这个规范来整合和平衡已经存在的规范对Java编程环境进行支持的技术和工具,其结果是产生了一种新的、开发基于Web应用程序的方法,给予使用基于组件应用逻辑的页面设计者以强大的功能支持。

JSP网页包含以下的组件:

(1) JSP指示

 JSP页面使用JSP指示将指令传递到JSP容器,其中包括:JSP页面指示传递与页面相关的信息,例如缓冲区和线程信息或者出错信息;语言指示指定脚本语言以及所有的扩展;包含指示可以被用来在页面中包含一个外部文件,被包含的文件可能是另一个JSP文件,标识库指示指出页面可以调用的客户标识库类型。

(2) JSP标识

绝大数JSP处理将通过与JSP相关的基于XML的标识完成,这些标识包括:

Jsp:useBean这个标识声明对一个JavaBean组件实例的使用;

Jsp;setproperty这个标识在组件的实例中设置一个属性的值;

Jsp:getProperty这个标识获取一个组件的实例的属性值,将其转化为字

符串,并且将它放入隐含对象out中;

 Jsp:include和Jsp:forward

标识的好处在于它们易于在应用程序中使用和共享基于标识的语法的真正威力来自标识库的开发,使得工具供应商或其他人员能够为特定的要求创建和分派标识。

(3) JSP指示

    JSP页面可以在页面中包含小的脚本,小脚本是一个代码片段,在请求

的出处理过程中被执行,小脚本可以和页面中的静态件组合起来创建动态生

成的页面。脚本在标志中被描述,在这对标志中的所有的东西都会被脚本描述

语言容器执行,JSP规范支持所有常用的脚本件,包括声明和表达式。

(4) JSP页面应用模型

JSP页面由JSP容器执行,容器安装在Web服务器或者JSP的引用服务器上,JSP容器接受客户端的请求,并且生成JSP页面给客户端的响应。

2.7 关于JavaScript 脚本语言的应用

JavaScript语言是web增强型技术,当在客户计算机上使用时,该语言有助于把内容的静态页面转换为动人的、交互式的、智能的体验。应用程序可以做得非常微妙,例如如果客户计算机所在的时区是早晨,即使此时服务器处在晚饭时间,应用程序也将会向网站访问音问候“早上好”;或者还可实现更加显眼的效果,比如在页面下载时传递幻灯片内容,而在整个演示过程中JavaScript控制隐藏、显示和幻灯片的转换。

应用JavaScript,可以弥补程序运行速度上的缺陷(尽可能在客户端完成,不一定每次都提交给服务器),同时它也扩展了WEB页面的功能。

使用JavaScript可以完成表单的验证,不用强迫服务器或数据库来进行数据的确认,直接在客户端就完成了任务,大大提高了运行效率。利用用户的计算机去处理一些问题,分担了数据库的工作量。随着新的W3C标准出台,利用内置对象的document.getElementById(id)方法可以取到页面中的任意素(前提是各个素的属性id已经设置初值)。利用这种方法可以获得表单中文本框或按钮上的值,然后再对它们加以分析、对比、判断数据格式。通过返回的真假值来决定是否提交给应用服务器。

其次,使用JavaScript可以提供用户更为丰富的使用体验,不用刷新就可以改变页面上的内容,和JSP技术相互配合,符合当今IT技术中的WEB方向发展的潮流。

在本次的程序中使用了一些JavaScript脚本语言作为一些特效的应用,其实在JS脚本来说就是在做一些前台的验证和特效的功能。

2.8 MyEclipse开发工具的简要介绍

计算机软件编程行业已经逐步走入成熟对于编程人员的要求就越来越高了,当然作为一名软件开发人员选择一个合适的开发工具也就能够帮助其更快更好更稳定地进行开发,这一点在时下显得越来越重要。MyEclipse绝对就是一个不错的选择,不论是单机应用还是网络开发,它都提供了很好的支持,特别是对JSP和Tomcat服务器的支持,使软件开发人员在开发过程中感觉便于操作,可以很好的实现功能很快的看到效果,节省了开发人员很多的时间。

MyEclipse 6.0以后有了很大的革新,在原来的版本中一般是用到的Eclipse然后在其中安装相应的MyEclipse一些相应的插件,在很大程序上,这样的一种组合形式对开发人员来讲过于复杂,不便于操作。针对这一原因在MyEclipse在版本的研发上着重了解决了这一点缺陷,他们以MyEclipse完全整合了Ecplise,换句话也就是说开发人员只需要安装MyEclipse它其中就会自动给你安装Eclipse,无须你再说安装在这一点上就我本人来讲是相当的感受到了便利。从专业上来讲它是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。目前,MyEclipse已经开始提供一些语言开发的功能插件,例如C语言等。更值得一提的是,MyEclipse是一个开放源代码的项目,任何人都可以下载MyEclipse的源代码,并且在此基础上开发一些自己的功能插件。也就是说未来只要有人需要,就会有建立在MyEclipse之上的COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是MyEclipse的潜力所在。

利用它可以更好地掌握软件开发周期,进一步提升了Web Services的开发效率。它支持包括SOAP、WSDL、UDDI和WSIL等最新的Web Services技术,并且可以通过拖放方式更快捷地实现创建、验证、输入和输出Web服务,同时利用MyEclipse提供的多种可视化插件,可以快速地开发Web应用程序。MyEclipse允许将现在的HTML或是JSP转换为特有的Structs标签,并且提供了JSP标签函数库功能,大大提高了编码的效率。通过它提供的实时代码语法检查,我可以随时找到语法上的编写错误,以不同颜色标注代码的变量和语句,使程序变得很清晰,可读性也提高了。本系统采用的是Myeclipse7.0。

2.9 WEB服务器Tomcat6.0

在WEB工具的选择上我所选择的是Tomcat6.0,

Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界的地位。

Tomcat的介绍是Web服务器一种,是开源的web服务器。

2.9.1 Tomcat Server的组成部分

(1) Server :A Server element represents the entire Catalina servlet container. (Singleton)

 (2) Service :A Service element represents the combination of o-ne or more Connector components that share a single Engine。Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求

 (3) Connector

 一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户。TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求。Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求。Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求

(4) Engine

 Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名。当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理。Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理

 (5) Host

 代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配。每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path。当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

(6) Context

一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成。Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类。当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类。如果找到,则执行该类,获得请求的回应,并返回

2.9.2 Tomcat Server处理一个http请求的过程

假设来自客户的请求为:

http://localhost:8080/web/wsota_index.jsp

(1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得

(2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应

(3) Engine获得请求localhost/web/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host

(4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)

(5) localhost Host获得请求/web/wsota_index.jsp,匹配它所拥有的所有Context

(6) Host匹配到路径为/web的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)

(7) path="/web"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet

(8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类

(9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

(10)Context把执行完了之后的HttpServletResponse对象返回给Host

(11)Host把HttpServletResponse对象返回给Engine

(12)Engine把HttpServletResponse对象返回给Connector

(13)Connector把HttpServletResponse对象返回给客户browser

2.10 本章小结

在本章中主要介绍了软件开发时所用的开发工具和相关的技术,重点介绍了Java、J2EE平台和MVC结构等相关知识以及JAVA三框架Hibernate、Spring、Struts的工作机制。同时也详细介绍了JSP的相关技术,运行环境及其开发工具。

第3章 电子相册系统需求分析

3.1可行性分析

3.1.1系统总体目标

本系统主要是为了给那些对照片管理感兴趣的朋友提供一个交流的平台,对有很多照片需要管理的朋友,你在这里可以进行注册成为会员,上传自己的照片,也可以着浏览别人的相册,还可以修改个人资料。非注册会员你可以浏览电子相册里别人的相片。对于管理员登陆,可以添加相册分类。

3.1.2技术可行性分析

这个电子相册是基于web来开发的,主要运用jsp技术、Hibernate、Spring、Struts框架等相关技术,以My sql为后台数据库、Tomcat6.0为应用服务器。这些应用软件(如JDK、tomcat6.0、Myeclipse7.0、Dreamweaver等都可以在网络上免费下载得来),并且这些软件都是些最常用的网页开发工具,都能够快和好的掌握,并且也学了有关网页开发的课程,所以一些最常用的技术能够比较好的实现,所以对于本系统在技术上是可以达到的。

3.1.3功能需求

本系统应该具有相片浏览、相片上传、评论相片、编辑、删除相片、用户注册、用户管理、个人信息修改等功能。

3.1.4性能需求

设备需求:PC机,Windows98/2000/xp操作系统,PII以上,64MB RAM。服务器、采用My sql数据库管理。

3.2系统总体结构

本系统所研究的是从电子相册的管理到相册的生成等一系列的问题,大致分为:

相册列表:此模块是注册用户所创建的相册列表,其创建时要选择所属的相册分类,相册名字由注册用户所规定。相册封皮也可以由用户设定。

新建相册:此功能是注册用户所拥有的,用户可以自己创建想要的相册。

修改资料:注册用户注册时填写的资料可以在再次登陆时修改。

修改密码:用户可以修改自己的登录密码。

技术支持:介绍了所用到的知识点。

相册分类管理:此功能是管理员登录时拥有的权限,管理员可以添加相册的分类。

3.2.1 系统总体结构

图 3-1 总体架构

3.2.2用例图

用例图就是把网站各个用户的动作分解一下,再用画图软件把它画出来。电子相册系统的角色之一是注册用户

用例名称:用户登录    执行者:用户

目的:完成注册用户登陆后的一系列操作的完整过程。

(1)用户输入登录名,密码,系统识别用户信息的有效性;

(2)对用户信息进行识别;

(3)用户完成相册列表,新建相册修改资料等一系列操作;

(4)退出系统。

图 3-2 用例图

3.3系统功能模块结构

相册管理系统分为五大模块、相册列表模块、新建相册模块、修改资料模块、修改密码模块、添加相册模块。注:前四大模块是根据注册用户的提供的,而如果是未注册用户只能查看相册中的内容,没有权力进行相应的修改。

3.3.1相册列表模块

(1) 业务描述:管理相册的相关图片的上传。

(2) 业务流程:用户相册列表可以浏览相关的相册,当然上传图片就可以进入一个上传图片的页面,在该页面中用户可以根据自己的需要上传相应的图片,为图片取名、分类,提交后返回相册列表。

(3) 输入数据:记录编号是自增列不显示在前台页面;图片名称、文件简介分别以文本框的形式展示在前台页面中,由用户输入;图片的上传以一种数据流的形式出现,出现在前台的时候以一种需要用户选择的形式出现。

(4) 角色说明:此功能主要由注册用户和非注册用户使用。

3.3.2新建相册模块

(1) 业务描述:添加相册即为用户所处的相册管理模块加入一个新的相册。

(2) 业务流程:新建相册的界面,进入新建相册的主界面根据提示输入相关的信息后选择提交,则可看到刚刚新添加的那个相册,然后可以根据自己的需要选择是否加入相片,如果加入的话相册,然后上传相片,根据提示填写相关的信息,然后选择上传路径单击上传,选择提交,这样系统会自动的生成一个大图片和一个小图片,用来显示封面等操作。

图 3-3 新建相册流程图

    

(3) 错误处理:在填写信息的过程中不允许有不被填写的栏目,系统会给出相应的提示。

(4) 输入数据:由用户输入相应的数据信息。

(5) 输出结果:其输出结果为在相册列表中给予相应的显示。

(6) 角色说明:此功能主要注册用户使用。

3.3.3修改资料模块

(1) 业务描述:对注册用户来讲,将他们的资料从后台数据库中读取出来然后根据用户的需要进行相应的修改,根据用户资料采集界面来采集相应的数据,根据这些数据来更新数据库中该用户的相应资料。如果是未注册的用户可根据提示进行注册。

(2) 业务流程

                        

图3-4修改资料流程图

    (3) 错误处理:在填写信息的过程中不允许有不被填写的栏目,系统会给出相应的提示。

(4) 输入数据:由用户输入相应的数据信息。

(5) 输出结果:无

(6) 角色说明:此功能主要注册用户使用。

3.3.4修改密码模块

(1) 业务描述:对注册用户来讲,该模块是用于修改注册用户的登陆系统平台的密码,注册用户可以根据自己的需要来修改其密码。

(2) 业务流程:进入修改密码界面,根据提示给出需要修改的信息,输入验证码后提交即可。

(3) 错误处理:所有字段必须逐一给出相应的数据信息。

(4) 输入数据:由用户输入相应的数据信息。

(5) 输出结果:无。

(6) 角色说明:此功能主要注册用户使用。

3.3.5添加相册模块

(1) 业务描述:该模块由系统的管理员来操作,首先系统管理员要根据其所登陆的相关用户员和密码进行登陆,登陆后可以进行一些关于电子相册管理系统的维护工作这里所提到的是关于相册种类的添加,可以根据后台的添加来进行前台的相关操作。

(2) 业务流程:管理员登陆后进行添加操作,填写添加种类的名称提交后将在下面相应的下拉菜单中给予显示。

(3) 错误处理:所填种类不能为空,若为空则给予相关。

(4) 输入数据:由管理员给出所要加入的相关种类。

(5) 输出结果:在下拉列表中给显示出相应的种类列表。

(6) 角色说明:此功能主要由管理员使用。

3.4 数据库设计

  数据库是系统工作的基础,合理的数据库结构对系统整体由事半功倍的作用。根据上述的系统模型结构,经过分析和设计,得到数据库表结构及关系如下:

管理员信息表包括管理员用户ID、用户名、密码等详细信息,如表3-1所示。

表3-1 管理员信息表

字段名

字段类型

字段大小

能否为空

默认

备注

ad_id

整形

11

null

ad_name

文本

200

null

ad_pass

文本

200

null

用户注册信息表包括用户ID、用户名、密码、性别、邮箱、等详细信息,如表3-2。

表3-2 用户信息表

字段名

字段类型

字段大小

能否为空

默认

备注

c_id

整形

11

null

c_name

文本

200

null

c_pass

文本

200

null

c_sex

文本

1

null

c_mail

文本

200

null

c_

文本

200

null

相册信息表包括相册ID、相册名、简述,创建日期,创建时间等详细信息,如表3-3。

表3-3 相册信息表

字段名

字段类型

字段大小

能否为空

默认

备注

a_id

整形

11

null

a_name

文本

200

null

a_desc

文本

200

null

a_create_date

时间

0

null

a_times

时间

0

null

c_id

整形

11

null

k_id

整形

11

null

照片信息表包括相片ID、相片名,相片简述、上传时间,相片大小等详细信息,如表3-4。

表3-4 相片信息表

字段名

字段类型

字段大小

能否为空

默认

备注

p_id

整形

11

null

p_title

文本

200

null

p_desc

文本

200

null

p_times

文本

0

null

p_pic

时间

200

null

p_big_pic

文本

200

null

p_small_pic

文本

200

null

p_up_date

时间

0

null

p_cover

文本

1

null

a_id

整形

11

null

3.5 本章小结

    本章详细描述了系统的体系结构,对系统进行了简单的可行性分析,确定了各子系统要完成的功能,详细介绍了系统的各个重要模块的需求,同时给出了各子功能系统流程图。,并初步得到了系统模型和功能模块划分,通过本章中描述的系统体系,接下来的任务是根据本章的叙述进行详细具体的设计实现。

第4章 系统实现

系统阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序。本章主要实现了各个模块的具体功能。

4.1管理员登陆设计

管理员登陆的界面设计要简洁明,登陆有一个主页面,首先进行的是验证,判断登陆者的权限。

4.1.1管理员登陆主页面的创建

在页面表现上,采用CSS样式表的方式,用记事本编写一个css文件(css.css),每个jsp页面都引入这个文件,这样当需要变更页面图片背景等静态属性时,就直接修改css文件,而无需对页面本身进行任何改动,大大提高效率,除此之外,本系统平台引入了现在网络上较为流行的验证码机, 所谓验证码就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。在电子相册系统中也就是说管理员除了给出用户名和密码外还要另再填入给出的验证码(这里的验证码是六位的)GO才能以管理员的身份进行电子相册的后台管理界面。

验证码的原理在这里要稍微提出来解释一下,验证码的机制其实就是一个随机说的机制,它后面的那个看似灰色的小框其实是以一个画图的方式画出的一个小长方形,在这里填充了一些小竖条,从直观的感观看来也像是一个背景为灰色的小图,原代码(angus.tools.code.code类)中体现,所里面的数据就是调用了系统的一个自定义的类(angus.tools.code.code类),产生一个六位的验证码这里区分大小写,在登陆里一并进行验证。

4.1.2 实现过程

管理员功能模块主要包括以下功能。

管理员登录:用于登录系统。

查看管理员列表:用于查询并显示系统中的全部管理员及其权限信息。

管理员退出:用于管理员的登陆界面

Struts的核心在于它的Action,一般在 Action类中实现对页面的逻辑跳转工作。管理员功能模块的Action实现类继承了DispatchAction类(Action类的子类),实现多业务的操作。在该类中首先需要在属性中实例化管理员模块的ManagerDao类(该类用于实现与数据库的交互)。

系统登录模块是图书管理系统中最先使用的功能,是进入系统的入口。在系统登录页面中,管理员可以通过输入正确的管理员账号和密码进入到系统,当用户没有输入管理员账号或密码时,系统会通过 JavaScript进行判断,并给予提示信息。

管理员登录的Action实现类

在管理员登录页面的管理员名称和管理员密码文本框中输入正确的管理员名称和密码后,单击“确定”按钮,网页会访问一个URL,这个URL是“manager Action.do? method= checkManagerAction”。从该URL地址中可以知道系统登录模块涉及到的method的参数值为 “checkManagerAction”,也就是当method=checkManagerAction时,会调用ManagerAction类验证管理员身份的方法checkManagerAction(),该类继承了DispatchAction(extends DispatchAction),实现Struts中的多业务操作。

4.2 注册用户登陆设计

注册用户登陆的界面设计要简洁明,登陆有一个主页面,首先进行的是验证,判断登陆者的权限,注册用户登陆界面如图4-1所示。

图 4-1 注册用户登陆

4.2.1 注册用户登陆界面的创建

在页面表现上,采用CSS样式表的方式,用记事本编写一个css文件(css.css),每个jsp页面都引入这个文件,这样当需要变更页面图片背景等静态属性时,就直接修改css文件,而无需对页面本身进行任何改动,大大提高效率,除此之外,本系统平台引入了现在网络上较为流行的验证码机,也就是说注册用户除了给出用户名和密码外还要另再填入给出的验证码(这里的验证码是四位的)登陆才能以管理员的身份进行电子相册的后台管理界面。除此之外用户可以更换来重新成生验证码。

4.2.2 注册用户登陆界面

注册用户权限进入时,其登陆成功界面如下:(这里以tomcat为用户名登陆举例)

图 4-2 注册用户登陆

设计思想:

用户登录模块,该模块需要确认三部分信息,首先得确认系统用户的身份,是否存在该用户,其次,若该用户存在则判断用户的密码,最后,若密码正确则判断用户的角色,三部分信息都正确则登陆到系统主页面。

登陆界面是Web应用项目中的大门,它能阻止一些“非法用户”访问Web项目中的功能。

4.2.3 实现过程

在注册用户登陆的memberLongin.jsp界面中:

<html:form action="clientLogin.do" οnsubmit="return

validateClientLoginForm(this)">

从上面的代码可以看出如果返回的是真值也就是说验证正确的话会跳转到clientLogin.do。验证的过程是注册验证,把注册信息发送到服务器,由服务器存进数据库;验证的时候,把客户端登陆时发过来的用户信息跟数据库中的比较,相同即通过验证,否则提示错误信息。

它所注入的cs为对数据库中的相应操作,这里所注入的是一个接口,而实现类在angus.service.impl. ClientServiceImpl,

而真正的Action处理通过cd 所在的ClientDao接口,在这个文件里也有相应的指出了angus.dao. ClientDao接口,其具体的实现类为angus.dao.impl. ClientDaoImpl,在这个类里只用到了一个方法就是查找数据库中是否有此用户,

在Action中执行完验证,验证后通过在struts-config.xml中

<!--前台客户登录-->

<action path="/clientLogin" scope="request" name="clientLoginForm"

validate="true" input="/WEB-INF/jsp/memberLongin.jsp">

<forward name="success" path="/albumlist.do"/>

<forward name="wrong" path="/WEB-INF/jsp/memberLongin.jsp"/>

<forward name="wrongCode" path="/WEB-INF/jsp/memberLongin.jsp"/>

</action>

进行相应的跳转。

4.3 未注册用户注册设计

未注册用户登陆的界面设计要简洁明,注册有一个主页面,首先进行的是填写注册信息,然后进行提交操作。

图 4-3 未注册用户注册

未注册用户注册界面的创建

在页面表现上,采用CSS样式表的方式,用记事本编写一个css文件(css.css),每个jsp页面都引入这个文件,这样当需要变更页面图片背景等静态属性时,就直接修改css文件,而无需对页面本身进行任何改动,大大提高效率。该模块完成用户注册的过程,用户注册后才能完成图书订阅等功能。

流程分析本模块包含二个文件,register.htm完成用户注册信息录入;register.jsp完成检查数据的可靠性,符合要求的数据写入userinfo数据表。

在这个模块里,用户可以输入“性别”,“昵称”,“密码”,“重复密码”,

“”,e-mail,验证码等信息,然后单击“注册”按钮提交注册信息,如果注册所用的用户名已经存在于数据库中,系统会报错。如果用户数据的“新密码”和“新密码确认”内容不一致,系统也会报错。用户一旦通过注册。就在数据库中存储了该用户的注册信息,该用户就可以凭此信息进行登录。

4.4 添加相册分类的实现

管理员功能中添加相册的界面设计要简洁明,添加相册有一个主页面,首先要进行相应的数据输入,然后提交操作

4.5 管理员添加相册界面

管理员添加相册界面如图:

图 4-4 管理员添加相册界面

管理员添加相册的创建:

在页面表现上,采用CSS样式表的方式,用记事本编写一个css文件(css.css),每个jsp页面都引入这个文件,这样当需要变更页面图片背景等静态属性时,就直接修改css文件,而无需对页面本身进行任何改动,大大提高效率,在页面步局和设计方面在此就不多加以介绍。下面的部分中主要介绍一下具体的实现过程。

4.5.1 实现过程

在管理员登陆的admin_add_sort.jsp界面中:

<html:form action="addkind.do" οnsubmit="return validateAddKindForm(this)">从上面的代码可以看出如果返回的是真值也就是说验证正确的话会跳转到addkind.do也就是

<action path="/addkind" scope="request" name="addKindForm" validate="true" input="/WEB-INF/jsp/admin/admin_add_sort.jsp">

代码中可以看到如果它所属的form为addKindForm

Struts-config.xml对应的form-bean

<form-bean name="addKindForm" type="org.apache.struts.validator.DynaValidatorForm">

<form-property name="name" type="java.lang.String"/>

</form-bean>

在validation.xml中自动的匹配

<!--添加分类-->

<form name="addKindForm">

<field property="name" depends="required,maxlength">

<arg key="name.kind.displayname" position="0"/>

<arg name="maxlength" key="${var:maxlength}" resource="false" position="1"/>

<var>

<var-name>maxlength</var-name>

<var-value>8</var-value>

</var>

</field>

</form>

其表单的验证为Action,匹配的Action在ActionContext.xml中找到

<!--添加种类-->

<bean name="/addkind" class="angus.action.AddKindAction">

<property name="cs" ref="clientService"/>

<property name="as" ref="adminService"/>

</bean>

它所注入的as为对数据库中的相应操作,这里所注入的是一个接口,而实现类在angus.service.impl. AdminServiceImpl,这里所调用的是一些异常的处理,而真正的Action处理在这个文件里也有相应的指出了angus.dao. AdminDao接口,其具体的实现类为angus.dao.impl. AdminDaoImpl,在这个类里只用到了一个方法方法体如下

public void addKind(String kindName, String desc)throws MyException

{

try

{

Kind kind = new Kind(kindName, desc);

kd.save(kind);

}

catch (Exception e)

{

e.printStackTrace();

throw new MyException("添加种类异常");

}

}

它会自动去调kd所在的angus.dao.KindDao接口 其真正的实现类angus.dao.impl. KindDaoImpl中的save方法,方法体如下:

public void save(Kind kind)

{

getHibernateTemplate().save(kind);

}

在Action中执行完验证,验证后通过在struts-config.xml中

<!--添加种类-->

<action path="/addkind" scope="request" name="addKindForm" validate="true" input="/WEB-INF/jsp/admin/admin_add_sort.jsp">

<forward name="success" path="/WEB-INF/jsp/admin/admin_add_sort.jsp"/>

</action>

进行相应的跳转。

4.6 数据库设计

4.6.1使用SHOW语句找数据库

mysql> SHOW DATABASES;

+----------+

| Database |

+----------+

| mysql |

| test |

+----------+

3 rows in set (0.00 sec)

4.6.2 创建一个数据库abccs

mysql> CREATE DATABASE abccs;

注意不同操作系统对大小写的敏感。

4.6.3 选择你所创建的数据库

mysql> USE abccs

Database changed

此时你已经进入你刚才所建立的数据库abccs.

4.6.4 创建一个数据库表

首先看现在你的数据库中存在什么表:

mysql> SHOW TABLES;

Empty set (0.00 sec)

说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable:   我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。

mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1),

-> birth DATE, birthaddr VARCHAR(20));

Query OK, 0 rows affected (0.00 sec)

由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。);性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);birth列则使用DATE数据类型。

创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表:

mysql> SHOW TABLES;

+---------------------+

| Tables in menagerie |

+---------------------+

| mytables |

+---------------------+

4.6.5 往表中加入记录

我们先用SELECT命令来查看表中的数据:

mysql> select * from mytable;

Empty set (0.00 sec)

这说明刚才创建的表还没有记录。 加入一条新记录:

mysql> insert into mytable

-> values (′abccs′,′f′,′1977-07-07′,′china′);

Query OK, 1 row affected (0.05 sec)

再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将所有员工的记录加入到表中。

4.6.6装入数据库表 

如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE TABLE语句中列出的列次序给出。 

使用下面命令将文本文件“mytable.txt”装载到mytable表中:mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet;

再使用如下命令看看是否已将数据输入到数据库表中:mysql> select * from mytable;

4.7系统测试

4.7.1 测试目标

软件测试的目标是:

(1) 测试是为了发现程序中的错误而执行程序的过程;

(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的方案;

(3) 成功的测试方案是发现了至今为止尚未发现的错误的测试。

由以上可以看出正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计.如果是为了表明程序的正确性而进行测试,就会设计出一些不易保露错误的测试方案;如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。

4.7.2 各模块测试

1. 以注册用户身份进入用户相册界面进行测试

“我的相册”进入用户登录页面,在此页面上输入注册用户的昵称,密码,验证码后登陆按钮可以进入用户的相册列表页面。

相册名称就可以进入到相应的相册,在相片列表页面,可以通过查看评论,设为相册封面,修改,删除等按钮实现相应的功能。见图4-5到4-7

图 4-5 保存信息测试图

图 4-6查看评论界面

图 4-7修改相片信息界面

显示结果正确。

2. 管理员登陆页面测试

管理员登陆进入管理员登录页面,在此页面上输入管理员名称,密码,验证码后登陆按钮可以进入管理员页面。“添加文件”进入添加相册分类页面,在添加分类栏中输入分类名字,在管理分类中选择相应的项,提交即可。如图4-8所示。

图 4-8 管理员添加分类页面

4.8 本章小结

     在本章中,详细地向读者讲述了如何使用Spring +Struts+Hibernate技术来构建了一个简单的电子相册系统。相信通过本章的学习,读者对Spring +Struts+Hibernate开发有了一定的认识。系统实现使整个系统由思想变为现实。系统实现主要体现在灵活多变,不拘泥于一种想法,要尽量使程序更加完善。

结论

设计中的体会

本课题在开发的中从开始到结束经历了很多过程,从前老以为只要程序编得好就行,很少有意识的训练自己对整个系统的设计。而且每次课程设计都是急于编码,根本不从整体考虑系统和设计。显然,这种方法是不可取得,若是一个小程序还可以,但是涉及到稍微大一些的项目时,就会出现顾此失彼,多次返工,最后会心有余而力不足,使整个系统以失败结束。

此次的毕业设计电子相册系统是一种基于B/S架构的管理系统,它采用目前最流行的java语言编写,用到了当今先进的技术如 jsp技术、Hibernate、Spring、Struts框架等来实现该系统。采用MVC框架技术提高了系统的可维护性。通过这次毕业设计,发现了以前对三框架的理解是多么的肤浅,以前很多知识点都是只知其一,不知其二,通过这次毕业设计,把三框架的知识都整合到一起了,通过老师,同事的帮助指导,使我对Hibernate、Spring、Struts框架的理解提升到了一个新的高度。

在这次系统设计中我深刻体会到以下三点:

(1)需求分析是以后设计和实现能顺利进行的保证和依据,若没有做好需求分析,那么你就不知道自己的系统应该实现什么功能,这样会导致在以后的系统实现时会频繁的给系统增加功能,而把整个设计搞得很乱。因此需求分析必须认真做好,为以后设计和实现奠定好的基础。

(2)不要急于做总体设计,也不要忽略总体设计的重要性。在做总体设计之前一定要对所做系统有个清楚地认识,也要对开发系统得技术尤其是关键技术有清楚的认识,然后选择设计模式或设计思想,这样可以避免把系统复杂化或过于简单化。

(3)整体规划或总体设计不必过于注重实现细节。在做总体设计时不要一味的把某个功能具体到实现,不要老是把精力放在怎么实现上,而是要放在怎样完整的抽象整个系统上。

设计中的不足

在本次设计开发过程中,在代码的整体编排上独立性有一很大的提高,但是随之而来的,在可读性方面可能还有一些欠缺考虑的地方存在,对于其本系统的设计者来看,整体的架构可能还不太清晰,总体还是不够好,今后应该在实践中继续提高,在注释的书写方面也是有待加强,应着重重视这一方面文字的书写,这样更可以便于阅读,加快读程序者了解程序整体架构和思路,这也是日后要加强的部分。在管理员权限方面,由于设计的时间安排不够合理,管理员登陆的功能没能够完全实现,比如管理员应该可以删除分类,但这次设计中没有完成此功能。

另一方面,在一说明书中一些图表的说明上有欠考虑,有些图表不能清晰的说明问题的全部,也就是说在整体的思路上还不太明确,对设计的划分上有些模糊的概念,不能很深层次上剖析设计的思想,只能在表层上阐述,让读者看起来有些摸不清整体的脉络,这也是在日后的学习中需要进一步思考的问题。

总之,由于个人的知识水平和经验的不足,本设计中可能存在很多的问题,我会在今后的学习中逐步加强。

参考文献

1  刘聪 等编著 零基础学Java Web 开发  机械工业出版社

2  布鲁斯 艾克尔(Bruce Eckel)Java编程思想(第四版)机械工业出版社 2007

3  刘小华 张健 周慧贞 著 JSP应用开发详解 电子工业出版社  2007

4  Arnold Doray 著 Struts基础教程 人民邮电出版社 2007

5  (美)Marty Hall著Servlet与JSP核心编程 清华大学出版社 2004

6  夏昕 曹晓刚 唐勇 著 深入浅出Hibernate 电子工业出版社 2007

7  龙马工作室.Dreamweaver8中文版完全自学手册[M].人民邮电出版社,2006.

8  孙卫琴 著. 精通struts基于mvc的java web设计与开发 电子工业出版社.

9  孙卫琴 著.Java 面向对象编程  电子工业出版社.

10 廖雪峰 著 Spring2.0 核心技术与最佳实践 电子工业出版社 2007

11 刘斌 著 精通 Java Web 整合开发 电子工业出版社2007

12 梁立新 著 项目实战精解基于Struts+Spring+Hibernate的Java应用开发 电子工业出版社2006

13  JavaEye 中国最大的java技术社区 http://www.javaeye.com

14  JavaEE 技术社区 http://www.j2eedve.com/

致谢

完成本论文和设计要感谢的人很多,因为某种原因我的设计是在校外我的实习单位(软通动力信息技术有限公司,华为技术有限公司)完成的,所以首先要感谢的是我学校的导师陈晶老师,在校外实习期间,陈老师不厌其烦地给与我指导帮助,并且在很多方便为我提供了很大的便利条件,使我能够较好地平衡工作与毕设的时间问题,陈老师对我的论文进行了严格细致的指导,她严谨的工作作风也教育了我以后的工作要更加认真细致。其次要感谢校外的实习单位及其领导,因为他们的理解、帮助与支持我才可以在实习阶段完成这次的设计任务,一些在技术上出现的问题同事们也是给出了大力的支持,在此对他们表示深深的感谢。

最后还要感谢我所在的培训小组和项目小组,在我所完成模块的过程中,是集中了群策群力,在大家的帮助下才得以顺利的完成。

总之,要感谢所有在我完成设计的过程中给予过我帮助的老师及同学,感谢他们的热情帮助和大力的支持,在此表达我最衷心的感谢。

附录1 开题报告

燕 山 大 学

本科毕业设计(论文)开题报告

课题名称:    电子相册系统    

        课题性质:       实际课题     

        课题来源:       导师指定     

        学院(系):      里仁学院     

        专    业:   计算机科学与技术

        年  级:         2005级     

        学生姓名:        杨   航      

        指导教师:        陈   晶      

        完成日期:   2009 6   17 

一  课题的意义:

 随着数码摄影时代的到来,不论是专业摄影师建立图片档案或是向他人展示自己的摄影作品,还是家庭生活摄影,都需要电子相册来"保管"摄影作品.如同传统的照相簿,电子相册既有展示功能也有存储和管理功能.

二  国内外发展状况:

电子相册是现在时下最流行的一种网络素,它可以应该在很多的领域,例如时下最流行的空间及博客就是大量的应该这一技术,而且受到大多数网友的认可及追捧,其以静态照片为素材(获得源方式为扫描仪扫描、数码相机所拍等),配合动感的背景、前景和字幕等视频处理的特殊效果,配上音乐就可制作成电子相册。制作好的电子相册可以在电脑上,各类影碟机上,以及手机和MP4里都能观看,这是电子相册技术发展到今天的一个新的突破,即不再象传统那样,只能在电脑上或在影碟机上观看了.并且还可以通过手机将自己的个性化MTV发送给远方的亲朋好友们分享.当然,如果考虑到长期保存的话,制作成电子相册光盘那是最好的选择啦,金碟可保存100多年之久,标准VCD、SVCD、DVD格式,兼容性好,通过影牒机即可与家人、朋友、客户观赏;若保存在硬盘上,也便于随时调阅、欣赏,永久保存。

三 研究内容:

电子相册系统是一种基于B/S架构的管理系统,它采用目前最流行的java语言编写,用到了当今先进的技术如 jsp技术、Hibernate、Spring、Struts框架等来实现该系统。采用MVC框架技术提高了系统的可维护性。

本系统所研究的是从电子相册的管理到相册的生成等一系列的问题,大致分为:

  • 前台:
    1. 相册列表
    2. 新建相册
    3. 修改资料
    4. 修改密码
    5. 技术支持 等
  • 后台
    1. 相册管理

修改资料:

个人用户的信息的管理及更新,它可以即时的取出相关的用户信息,同时可以对该信息进行相应的修改及维护工作

修改密码:

将用户的原始密码做以相应的修改

相册管理:

添加和管理相应的相册的种类

四、研究方法:

主要的编写工具为MYECLIPSE

其中配以STRUTS框架、SPRING 框架、HIBERNATE框架等辅助设计

在数据库方面使用MYSQL数据库加以建立

在画图方面借助于POWERDESGIN来描绘数据库的整体结构等。

五、参考文献 

1  刘聪 等编著 零基础学Java Web 开发  机械工业出版社

2  布鲁斯 艾克尔(Bruce Eckel)Java编程思想(第四版)机械工业出版社 2007

3  刘小华 张健 周慧贞 著 JSP应用开发详解 电子工业出版社  2007

4  Arnold Doray 著 Struts基础教程 人民邮电出版社 2007

5  (美)Marty Hall著Servlet与JSP核心编程 清华大学出版社 2004

6  夏昕 曹晓刚 唐勇 著 深入浅出Hibernate 电子工业出版社 2007

7  龙马工作室.Dreamweaver8中文版完全自学手册[M].人民邮电出版社,2006.

8  孙卫琴 著. 精通struts基于mvc的java web设计与开发 电子工业出版社.

9  孙卫琴 著.Java 面向对象编程  电子工业出版社.

10 廖雪峰 著 Spring2.0 核心技术与最佳实践 电子工业出版社 2007

11 刘斌 著 精通 Java Web 整合开发 电子工业出版社2007

12 梁立新 著 项目实战精解基于Struts+Spring+Hibernate的Java应用开发 电子工业出版社2006

13  JavaEye 中国最大的java技术社区 http://www.javaeye.com

14  JavaEE 技术社区 http://www.j2eedve.com/

……………………………………………………………………………………………

指导教师签字:

年  月  日

七、系级教学单位审核意见:

审查结果: □ 通过   □ 完善后通过   □ 未通过     

负责人签字:

年  月  日

附录2 文献综述

燕 山 大 学

本科毕业设计(论文)文献综述

             

课题名称:    电子相册系统    

        课题性质:       实际课题     

        课题来源:       导师指定     

        学院(系):      里仁学院     

        专    业:   计算机科学与技术

        年  级:         2005级     

        学生姓名:        杨   航      

        指导教师:        陈   晶      

        完成日期:   2009 6   17 

一、课题国内外现状:

相册在很早以前就开始有,原来是以纸质照片的形式的存在,后来随着时代的发展,科技的进步,旅游业的进步,照片越来越多,电脑的普及,传统的相册在使用人工进行管理,存在工作量大,各种多而复杂的文件信息占用大量地方,相册簿方便携带,不易保管,容易丢失,翻看时不方便等等问题。

随着科技的进步,电脑时代的来临,加速了电子相册的产生与进步,在网络上,电子相册发展迅速,很多网站,博客都需要电子相册的功能,而随着微机的普及使用,人们生活质量的提升,越来越多的人选择旅游,此时会照大量的照片,对相册的需求都有了更高的要求,这就要求传统的相册能够实现计算机化,让人们能方便快捷共享式的浏览照片。

在现在网络上各式各样的博客,空间越来越多,为了追求更多的用户注册试用自己的产品,迫使网站开发人员人员针对自己的网站功能不断改进,不断寻求适合用户使用的系统来提高自己的知名度,所以,电子相册作为一个大家都需要的网络功能,其重要性不言而喻。

二、研究主要成果:

为了自己的发展,各个网站都开始寻求适合用户使用的电子相册系统,为此而开发的电子相册管理系统已经非常多,并且大部分都是从用户使用的角度出发,给用户的使用带来了很大的方便。

三、发展趋势:

由于现在网络竞争激烈,人们对电子相册的要求不断提高,使得电子相册开发者必须以完善相册功能和质量来取悦于顾客,电脑的不断普及和软件业的飞速前进,使得人们拥有自己独特的电子相册成为可能,也成为必然。在现在生活质量不断提高的环境下,电子相册系统越来越贴近于用户,贴近于顾客。电子相册管理系统的存在也使网站拥有者获得了更多的用户。

四、存在问题:

目前,虽然很多网站都有了相册功能,但是,这些系统都是针对性非常强,都是针对网站当前的状况而开发的,对现在应用来说还算可以,但对很多不需要关注该网站的用户来说有很多的局限性。很多用户只是需要一个电子相册功能,并不需要什么博客网站等等,所以,他们需要的是一个独立的电子相册系统,用户能够在自己的电脑安装上电子相册系统,能够自己制作自己的电子相册,不受网站、博客提供商的约束。

对此,我们针对现有相册功能,开发了适合多数用户使用的电子相册系统,在这个系统中,我们综合了原来旧式纸质相册的功能,又参考了很多具有相册功能的网站,博客空间,开发出具有自己特色的电子相册管理系统,这个系统可以实现注册用户对相册的上传删除修改等管理功能。整个系统我们要求功能完善,组织全面,具有可扩展性,能够针对一些报错事件可以做出反应的系统。

五、主要参考文献:

1  刘聪 等编著 零基础学Java Web 开发  机械工业出版社

2  布鲁斯 艾克尔(Bruce Eckel)Java编程思想(第四版)机械工业出版社 2007

3  刘小华 张健 周慧贞 著 JSP应用开发详解 电子工业出版社  2007

4  Arnold Doray 著 Struts基础教程 人民邮电出版社 2007

5  (美)Marty Hall著Servlet与JSP核心编程 清华大学出版社 2004

6  夏昕 曹晓刚 唐勇 著 深入浅出Hibernate 电子工业出版社 2007

7  龙马工作室.Dreamweaver8中文版完全自学手册[M].人民邮电出版社,2006.

8  孙卫琴 著. 精通struts基于mvc的java web设计与开发 电子工业出版社.

9  孙卫琴 著.Java 面向对象编程  电子工业出版社.

10 廖雪峰 著 Spring2.0 核心技术与最佳实践 电子工业出版社 2007

11 刘斌 著 精通 Java Web 整合开发 电子工业出版社2007

12 梁立新 著 项目实战精解基于Struts+Spring+Hibernate的Java应用开发 电子工业出版社2006

13  JavaEye 中国最大的java技术社区 http://www.javaeye.com

14  JavaEE 技术社区 http://www.j2eedve.com/

附录3  外文翻译

MVC设计模式

MVC是一种目前广泛流行的软件设计模式,早在70年代,IBM就推出了

Sanfronscisico项目计划,其实就是MVC设计模式的研究。近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。MVC模式也逐渐在PHP和ColdFusion开发者中运用,并有增长趋势。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据。

MVC设计思想

MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。

  视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。

  模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。

业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。

  控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。

MVC的优点

大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。

  首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。

MVC设计模型

其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。

再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。

控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。

最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。

MVC的缺点

MVC的设计实现并不十分容易, 理解起来比较容易,但对开发人员的要求比较高。MVC只是一种基本的设计思想,还需要详细的设计规划。

模型和视图的严格分离可能使得调试困难一些,但比较容易发现错误。

经验表明,MVC由于将应用分为三层,意味着代码文件增多,因此,对于文件的管理需要费点心思。

  综合上述,MVC是构筑软件非常好的基本模式,至少将业务处理与显示分离,强迫将应用分为模型、视图以及控制层, 使得你会认真考虑应用的额外复杂性,把这些想法融进到架构中,增加了应用的可拓展性。如果能把握到这一点,MVC模式会使得你的应用更加强壮,更加有弹性,更加个性化。

MVC Design Pattern

MVC is a widely popular software design pattern, as early as in the 70's, IBM introduced the Sanfronscisico on the project, in fact, is the MVC design pattern research. Recently, with the maturity of J2EE, it is becoming a recommendation in the J2EE platform, a design model, the majority of Java developers are also very interested in the design model. MVC model is gradually developed in PHP and ColdFusion are in use, and growth trends. With the rapid increase in web applications, MVC model for the development of Web applications is a very advanced design idea, no matter what language you choose, no matter how complicated the application, it can be for you to understand and provide the most basic application model analytical methods, structural products for you to provide a clear framework for the design, for your software projects in accordance with norms.

MVC design idea

MVC in English or Model-View-Controller, an application that is input, process, output process in accordance with the Model, View, Controller isolated manner, such an application is divided into three layers - model layer, view layer, control layer.

View (View) on behalf of the user interface for Web applications can be summed up as HTML interface, but has the potential to XHTML, XML, and Applet. With the application of the complexity and scale, the interface has become challenging to deal with. An application may have different views, MVC design pattern to deal with the view of the limited view of data acquisition and processing, as well as the user's request, not included in the view on the handling of business processes. The handling of business processes to the model (Model) to deal with. For example, a view only accept orders from the model data and display to users, as well as input user interface data and the request passed to the control and model.

Model (Model): is the business process / status of the processing and business rules. Business process layer is the other black-box operation, the model view to accept the request of the data, and return the results of the final. The design of business models can be said to be the most important core of MVC.

 Currently popular model of EJB applications is a typical example of the application of technology from the perspective of the model further delineation in order to make full use of existing components, but it can not be used as a framework for application design model. It only tell you that according to the design of this model will be able to use certain technology components, thereby reducing the technical difficulties. Example of a developer, you can focus on

business model design. MVC design pattern tells us that the application of the model according to certain rules of taking away the level of extraction is very important, which is to determine whether the development in accordance with good design. Abstract and concrete can not be separated too far, nor too close.

MVC model did not provide the design method, but only tell you that the management of these models should be organized in order to facilitate reconstruction and improve the model reusability. We can make an analogy with object programming, MVC defines a top-level category, the sub-class to tell it you have to do these, but you can not do these restrictions. This is the developer of the programming is very important.

There is also a business model of the model is very important that the data model. Data model mainly refers to the object data entities (continued of).

Forexample, an order will be saved to the database, to obtain orders from the database. We can separate this model, all the operation of the database is only.

Limited to the model.

Control (Controller) can be interpreted as a request received from the user, matching the model and view together to complete the user's request. The role of division of control layer is also very clear that it clearly tell you that it is a distributed, and what kind of model to choose, choose what kind of view, to complete what the user requests. Control layer does not do any data processing. For example, the user clicks on a link and control layer to receive arequest, does not deal with business information, only the user's information to the model, to tell what model to choose the view to meet the requirements to return to the user. Therefore, a model may correspond to multiple views, one view may correspond to a number of models.

The benefits of MVC

Most of the process of language use such as ASP, PHP developed Web applications, the development of the initial template is the mixed layer of the data programming. For example, send the request directly to the database and display HTML, development speed is often faster, but because of the separation of data pages is not very direct, and therefore reflect the business model difficult to look or model reusability. Very flexible product design efforts, it is difficult to meet the changing needs of users. MVC layered on the application of the requirements, although additional work would take, but clearly the structure of products, product application through the model can be better reflected.

First of all, the most important thing is that there should be a number of view corresponds to the ability of a model. In the current rapidly changing user requirements, it may have access to a

wide range of applications. For example, orders for the model may be orders of the system as well as online orders, or orders for other systems, but the handling of orders is the same, that is to say the handling of orders is the same. MVC design pattern in accordance with a orders for models and multiple views can solve the problem. This reduced the code to copy, that is, a reduction of the maintenance code, once the model changes, but also easy to maintain.

MVC Design Model

Secondly, the data returned as a result of the model without any display format, so these models can also be directly applied to the use of interfaces.

Third, as a result of an application to be separated into three, it is sometimes one of them will be able to change to meet changes in the application.

An application of business processes or business rules change simply changes the model layer MVC.

The concept of control layer is also very effective, because of its different models and different views together to complete various requests, the control layer can be said to be included in the concept of a user request for permission.

Finally, it is also beneficial to the management of software engineering. Because each different layer, each layer of different applications have some similar characteristics, is conducive to the adoption of engineering and management tools of program code generated.

The shortcomings of MVC

Design and implementation of MVC is not very easy, easier to understand, but for developers the requirements are relatively high. MVC is just a basic designidea, but also the need for careful design and planning.

Model and the strict separation of view may make debugging more difficult, but easier to find errors.

Experience has shown that, MVC as a result of the application is divided into three, means that the number of code files, so the need for document management.

Costs point thought.

Above, MVC is a very good software to build a basic model, at least the separation of processing and display, forcing the application is divided into model, view and control layer, making you seriously consider the additional complexity of the application of these ideas into the structure, an increase of application scalability. If we can grasp this, MVC model will make your application stronger, more flexible and more personalized.

今天的文章 电子相册管理系统分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-16 22:40
下一篇 2024-12-16 22:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/87723.html