版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要当今社会正处在网络时代,信息化大潮席卷全球,网络正以前所未有的速度在我国普与开来。网站以其独特的优势在信息化的过程中占有重要的一席。为了方便信息的交流,在结合JAVA和S.S.H技术之下开发了这个快捷、界面友好的交流系统,实现了一个功能相对齐全的论坛系统,网友可以自由地提出问题以与帮助他人解决问题,或者交流经验。论坛在Struts+Hibernate+Spring扩展Struts框架的基础上,用当今主流的网站开发技术jsp语言进行开发。论坛将采用B/S体系结构,人们通过浏览器就可以访问教学网站的主页,保证的服务器的安全。数据库采用免费,小巧,易用的mysql数据库。该论坛功能较齐全,在这里可以自由地发表自己的观点和对论坛的主题发表意见,我们还可以对网友的问题与时地解决,获取对自己有用的知识。该论坛还有一些特殊的功能,如在线人员显示、强大的搜索功能。本网站严格按照软件项目开发的流程进行开发,对于网站开发的可行性分析、需求分析、概要设计、详细设计以与对网站的测试与维护都有详细的论述和实现过程。本套论坛的优点在于它具有强大的可扩展性和可维护性,非常适合网民创建自己的中小型BBS论坛!关键词:BBS,S.S.H(Struts,Hibernate,Spring),JAVA,MySQL,JSP目录摘要ⅠAbstract…………...………………...…………………..Ⅱ目录…………….……………………Ⅲ第一章系统概述……...…….…………………...……….…….………..1 1.1总体概述……...………...……1 1.2开发背景…………..….….…..2 1.3开发目的……...……..…….…3第二章系统分析………...……...……………...……..………….4 2.1技术可行性分析……...………...4 2.1.1开发语言综述…………4 2.1.2MySQL数据库的选用……………….….5 2.1.3S.S.H框架优点…………..6 2.1.4系统层次设计………...….9 2.1.5技术可行性综述……..………………...10 2.2时间可行性(项目开发计划)…………….……10 2.3系统需求分析…………...…….10 2.3.1系统开发运行环境………………..…...10 2.3.2业务描述………………..11 2.3.3系统功能概述………12 2.3.4数据流程……………….12 2.4系统总体结构分析结论……………………15第三章系统设计……………………….16 3.1数据库设计……….…………...16 3.1.1概念模型设计(E-R图)………………..………………..16 3.1.2数据库表与关系建立…………………..………………18 3.1.3详细数据库结构设计…………………..………………18 3.2系统概要设计…………….…….……………..23 3.2.1功能模块设计……………..……………23 3.2.2系统界面设计……………..……………26 3.2.3系统的组件设计…………..……………28第四章系统的详细设计与实现……….31 4.1系统框架实现…………………….…………...31 4.1.1底层数据库的建立……………………..31 4.1.2持久化层的建立(hibernate)…………32 4.1.3业务逻辑层的建立……………………..33 4.1.4表示层的建立………..…36 4.2系统功能模块实现…………..…………..…….36 4.2.1会员模块实现…………...36 4.2.2帖子模块实现…………...39 4.2.3后台管理模块实现……………………...424.3系统设计总结………………...……………….44第五章系统的调试与测试……………….……………45 5.1测试概述……………………….45 5.1.1软件测试的目的………...45 5.1.2软件测试的任务………...45 5.1.3测试环境………………...46 5.2单元测试…………..…..………46 5.2.1黑盒测试………………...465.2.2白盒测试………………...47 5.2.3模块接口测试…………...48 5.3集成测试…………..…..……….50 5.3.1自顶向下集成…………...50 5.3.2确认测试标准…………...51第六章结论………………….…………52参考文献……………………….………53致谢………………….54附录A英文文献……………………...55附录B翻译…………...68第1章系统概述总体概述进入二十一世纪,计算机技术迅速向着网络化、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端——服务器的C/S结构,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。而另一种,也是本毕业设计所采用的,是称为浏览器——服务器的B/S结构,它的特点是在客户端直接采用了功能强大的浏览器软件作为界面,其优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于Internet,而且投资小、见效快,用户可以不必进行服务器方面的投资,而是去租用,甚至是免费使用ISP的服务器资源,因而受到越来越多中小型单位的青睐。随着Internet技术的不断发展,以与用户群爆炸性地增长,网络不再仅仅是信息的被动获取来源,更成为人们探讨间题、交换观点的场所,其中,网上论坛扮演了极其重要的角色,随着时间的推移,论坛站点中积存了丰富的信息资源,不但有各类技术资料和新闻文档,还包含着用户的判断和评论,论坛站点己成为Web信息库的重要组成部分,自网上论坛诞生20多年以来,随着Web技术的发展,己经由原来简单的电子公告板系统发展为功能丰富的网上论坛和虚拟社区模式。各种论坛随着网络迅速发展,几乎充实着生活工作的每一个方面,无论是商界、政界,还是娱乐界,都有各种论坛。互联网正在融入我们的生活,网络提供给我们的不只是一个获取信息的来源,而且还是一个可以相互交流的空间,网上论坛正是一种供人们进行交流的网络空间,影响和改变着我们的生活。开发背景1978年在美国芝加哥开发出一套基于8080芯片的CBBS/Chicago(ComputerizedBulletinBoardSystem/Chicago),此乃最早的一套BBS系统。之后随着苹果机的问世,开发出基于苹果机的BulletinBoardSystem和大众信息系统(PeoplesMessageSystem)2种BBS系统。1981年IBM个人计算机诞生时,并没有自己的BBS系统。直到1982年,BussLane才用Basic语言为IBM个人计算机编写了一个原型程序。其后经过几番增修,终于在1983年通过CapitalPCUserGroup(CPCUG)的CommunicationSpecialInterestGroup会员的努力,改写出了个人计算机系统的BBS。经ThomasMach整理后,终于完成了个人计算机的第1版BBS系统——RBBS-PC。这套BBS系统的最大特色是其源程序全部公开,有利于日后的修改和维护,因此后来在开发其他的BBS系统时都以此为框架,所以RBBS-PC赢得了BBS鼻祖的美称。大约是从1991年开始,国内开始了第一个BBS站。经过长时间的发展,直到1995年,随着计算机与其外设的大幅降价,BBS才逐渐被人们所认识。1996年更是以惊人的速度发展起来。国内的BBS站,按其性质划分,可以分为2种:一种是商业BBS站,如新华龙讯网;另一种是业余BBS站,如天堂资讯站。由于使用商业BBS站要交纳一笔费用,而商业站所能提供的服务与业余站相比,并没有什么优势,所以其用户数量不多。多数业余BBS站的站长,基于个人关系,每天都互相交换电子邮件,渐渐地形成了一个全国性的电子邮件网络ChinaFidoNet(中国惠多网)。于是,各地的用户都可以通过本地的业余BBS站与远在异地的网友互通信息。这种跨地域电子邮件交流正是商业站无法与业余站相抗衡的根本因素。由于业余BBS站拥有这种优势,所以使用者都更乐意加入。这里“业余”2字,并不是代表这种类型的BBS站的服务和技术水平是业余的,而是指这类BBS站的性质。一般BBS站都是由志愿者开发的。他们付出的不仅是金钱,更多的是精力。其目的是为了推动中国计算机网络的健康发展,提高广大计算机用户的应用水平国内的BBS站,大多数还是大型综合性BBS站。随着计算机的普与,特别是宽带的普与,BBS的活动将会进一步高涨。但是,随之而来对专注于领域方面的BBS将会慢慢增加需求。尽管BBS站台的数量在不断增长,但BBS的发展过程,也出现了一些问题。由于国内使用的BBS架站软件,都是从国外引进的,因此没有必要的中文说明。虽然一些热心的站长翻译了一些资料,但是仅靠这些是远远不够的。另外,有些站台的设立是相互抄袭,所以在结构上难免有雷同之处。而国内自己开发的BBS基本上都是处于最原始的JSPMODEL1模式,这种模式是控制层与表示层合二为一,虽然开发简单,但是拥有很差的扩展性,可维护性,这样极大的限制了BBS站点的扩展,于是在这种情况下,本文提出了目前比较流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS论坛,本套论坛的优点在于它具有强大的可扩展性和可维护性,非常适合网民创建自己的中小型BBS论坛!开发目的综上所述,本文提出了目前比较流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS论坛,本套论坛的优点在于它具有强大的可扩展性和可维护性,非常适合网民创建自己的中小型BBS论坛!第2章系统分析2.1技术可行性分析2.1.1开发语言综述本系统是基于面向对象思想的JAVA语言中J2EE平台进行编写,J2EE平台具有以下优点1.简化结构:J2EE平台支持简化的、基于组件开发模型,由于J2EE基于Java编程语言和J2SE平台,它提供了编写一次,随处运行的可移植性,遵循J2EE标准的所有服务器都支持该模型。
EJB组件使编写应用程序更为简单。尽管EJB体系结构复杂,但应用程序开发人员一般都必再编写访问系统服务的代码,EJB容器会实现系统级的服务,例如,事务、安全性等。
另外,J2EE还支持异构环境。基于J2EE的应用程序不依赖任何特定操作系统、中间件或硬件,因此,设计合理的基于J2EE的程序只需开发一次就可以部署到各种平台,这在典型的异构企业算环境中是十分关键的。J2EE标准还允许客户订购与J2EE兼容的第三方的现成组件,把其部署到异构环境中,节省了由自己制订整个方案所需的费用。2.提高开发效率:由于组件技术的使用,可以按照开发人员的技能对应用程序开发进行分工,并行开发,提供整体开发效率。例如:图形设计师创建JSP模板,商业逻辑由该领域的专家完成,JSP页面和EJB由Java工程师完成,应用程序的装配和部署由团队中其他的成员完成,其中许多工作可以同时进行,有助于加速应用程序的开发。3.可移植性强:除了Java语言固有的可移植性外,EJB体系结构在Bean和支持该Bean的容器之间提供了一套标准化的应用程序编程接口,这使开发人员能够将Bean从一种操作环境移植到另一种操作环境,而无需重新编写其源代码。4.重用性好:由于在EJB模型中,各个软件组件都是严格分离的,因此,可以从现有的软件组件装配出服务器端应用程序,这与从现有的JavaBean可以装配出客户端应用程序一样,使软件能够重用。5.易于维护:基于组件的设计简化了应用程序的维护。由于组件可以被独立地更新和替代,通过更新应用程序中特定的组件,新的功能可以被很容易地增加。6.可伸缩性:企业必须要选择一种服务器端平台,以便满足那些在它们系统上进行商业动作大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上,例如,可被部署到高端UNIX或其他的大型机系统上。J2EE领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署,实现可高度伸缩的系统,满足未来商业应用的需要。7.被广泛接受:主要的IT供应用商都采纳EJB体系结构,不同供应商的产品只要符合EJB体系结构,就都是可互操作的。2.1.2MySQL数据库的选用MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点,关键的是它是免费的,可以在Internet上免费下载到,并可免费使用,对于一般中小型,甚至大型应用都能够胜任MySQL具有以下优点:1、首先是速度。对于MySQL来说,速度是他们追求的主要目标之一,基于这个原因,MySQL在以前的文档中也曾经说过并不准备支持事务和触发器。但是在最新的文档中,我们看到MySQL4.0.2-alpha已经开始支持事务,而且在MySQL的TODO中,对触发器、约束这样的注定会降低速度的功能也列入了日程。但是,仍然有理由相信,MySQL将有可能一直保持速度的优势。2、MySQL更流行,流行对于一个商业软件来说,也是一个很重要的指标,流行意味着更多的用户,意味着经受了更多的考验,意味着更好的商业支持、意味着更多、更完善的文档资料。3、MySQL更适宜在Windows环境下运行。MySQL作为一个本地的Windows应用程序运行(在NT/Win2000/WinXP下,是一个服务),在Windows运行中,MySQL更加的稳定。4、MySQL使用了线程,在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。5、MySQL可以适应24/7运行。在绝大多数情况下,你不需要为MySQL运行任何清除程序。6、MySQL在权限系统上更为完善。MySQL允许你定义一整套的不同的数据级、表级和列级的权限。对于列级的权限。MySQL还允许你指定基于主机的权限。7、由于MySQL4.0.2-alpha开始支持事务的概念,因此事务对于MySQL不再仅仅成为劣势。相反,因为MySQL保留无事务的表类型。这就为用户提供了更多的选择。8、MySQL的MERGE表提供了一个独特管理多个表的方法。9、MySQL的myisampack可以对只读表进行压缩,此后仍然可以直接访问该表中的行。2.1.3S.S.H框架的优点S.S.H框架是J2EE应用中struts+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念与模式应用。比如,struts属于MVC框架,关键是要了解MVC的概念与大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念与原理有一个总体的了解。而spring属于应用程序框架,其核心是IOC容器以与AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等,它由以下3个框架构成:1.Struts框架Struts是Apache组织的一个开放源码项目。Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Customtaglibrary。其基本构成如图2.1所示。 图2.1Struts框架工作流程2.Spring框架Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVCWeb框架的实现,并对一些常用的企业服务API(ApplicationInterface)提供一致的模型封装,是一个全方位的应用程序框架(Applicationframework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们相整合的方案。Spring框架由以下7个部分组成图2.2Spring框架构成3.Hibernate框架Hibernate是一个开放源码的ORM持久层框架。作为优秀的持久层框架实现,Hibernate框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。图2.3Hibernate框架2.1.4系统层次设计系统很据S.S.H框架的特点,决定使用四层结构,这样做的优点是(1)可以分层开发,访问数据库与业务逻辑实现能够分开。(2)提高代码的复用表示层表示层业务逻辑层持久化层数据库层图2.4LeafBBS系统的分层结构2.1.5技术可行性综述综上所述,这些成熟的框架和优秀的设计思想,为系统建设提供了技术条件。计算机等基础设施的更新换代也紧跟潮流的发展,这就为开发系统提供了坚实基础。2.2时间可行性(项目开发计划)本系统的难点在于三大框架的结合使用,但目前有很多优秀的书籍可供参阅,且参加过类似项目的开发,预计本系统在规定时间内,基本能够完成.开发计划如下: 2007.01.01-03.30调研2007.04.31-04.13资料查阅2007.04.16-04.20方案设计2007.04.02-05.18编写程序2007.05.07-05.18撰写论文2.3系统需求分析2.3.1系统开发运行环境鉴于系统的开发语言和数据库,采用如下的开发环境开发环境:Windows2000NTTomCat6.0JDK1.5硬件实现:PentiumⅣ2.4G1G内存80G硬盘开发语言:Java数据库:MySQL开发工具:MyEclipse5.1预期成果:一个可扩展的基于MVC模式的BBS论坛2.3.2业务描述对于访问论坛的用户,可分为注册会员和为注册的临时用户,这两种用户有着不同的权限,比如临时用户只能对帖子进行查看,而注册会员除了查看帖子之外,还可以发帖,回复,查找用户,并且可以对自己的注册资料进行修改等等,系统的用例图如下:会员用户会员用户临时用户浏览帖子发表帖子回复帖子修改资料会员搜索管理员会员管理帖子管理论坛信息管理图2.5系统用例图2.3.3系统功能概述本系统是一套网上交流的BBS软件,根据用户的需要和实际的管理条件,应由用户功能实现,帖子功能实现和后台管理等几个模块所构成,用户可以对一些数据进行查找和修改,并且注册的用户可以对帖子进行特定的操作,而管理员可以对用户和帖子进行相关的管理.鉴于本系统的性质,系统应该实现以下功能.1.用户功能实现(1).用户的登录(2).用户的注册(3).用户的查找(4).用户资料的修改2.帖子功能实现(1).帖子的发表(2).帖子的回复(3).帖子的查找3.后台管理(1).用户的管理(2).帖子的管理(3).论坛信息的管理(4).图片的管理2.3.4数据流程本系统是为了提供给广大用户一个网上交流的平台,所以论坛的流程是以用户为中心进行的.数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据流图具有以下两个特性:(1)抽象性:表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理与存储。(2)概括性:表现在它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。数据流图由以下四种基本元素组成,既外部实体、数据流、处理(功能)、数据存储等,数据流图中所用的符号如下:外部实体处理数据流数据存储LeafBBS论坛系统的数据流程图如下用户用户查看帖子P2F1帖子资料P3回复帖子P1发表帖子P4搜索帖子P5搜索用户F2用户资料P6资料修改(1)(3)(2)(4)(5)(5)(6)(7)(8)(9)(10)(11)(12)(13)说明:⑴——访问信息,⑵⑶⑽⑾——用户信息,⑷——发表帖子信息,⑸更新帖子信息,⑹搜索信息⑺——获取帖子信息,⑻回复信息,⑼搜索用户,⑿更新用户信息,⒀获取用户资料图2.6数据流程图2.4系统总体结构分析结论通过对系统框架与数据库的选择,和总体的需求分析,完成了前期对系统模块的划分,数据的流程,以与一些可行性的分析.在此基础上,可以系统的数据库和功能模块进行概要设计.第3章系统设计在前期的系统结构分析的基础上,对系统进行概要设计.3.1数据库设计数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库与其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求).数据库和设计概述(1)数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、与时、准确地从数据库中获得所需的信息。
(2)数据库是信息系统的各个部分能否紧密地结合在一起以与如何结合的关键所在。
(3)数据库设计是信息系统开发和建设的重要组成部分。3.1.1概念模型设计(E-R图)数据模型是是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作与数据约束。
E-R模型的基本概念ER图概念化地构建实体间关系的模型,这使得它们区别于数据库模型图。ER图的理念是:项目所有参与者能理解ER图。ER图由不同实体类型、关系、特性和类型构成。实体是诸如用户的实际对象,有时更抽象,但必须有业务意义。特性用于描述实体,关系用于实体之间
(1)实体:现实世界中的事物;
(2)属性:事物的特性;
(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。本系统的ER图用户用户M发表N帖子详细资料11N管理管理员1N添加1修改论坛图3.1系统E-R图3.1.2数据库表与关系建立根据以上这些步骤就可以创建一个数据库,依次建立下列表结构.1.用户基本资料表2.用户详细信息表3.论坛文章表4.论坛版区表5.论坛初始化信息表(1).用户基本信息表和用户详细信息表是一对一的关系,一个用户只对应一个详细的信息表(2).用户基本信息表和文章表是一对多的关系,即一个用户可以发表多篇文章和回复.(3).论坛版区表和论坛文章表是一对多的关系,在一个论坛中可以含有多个文章和回复.3.1.3详细数据库结构设计(1).用户基本资料表:用户基本资料表中存放的是用户登陆时所需要或者记录用户的基本信息,包含比如登陆名,密码,最后登陆时间等.用户基本信息表的建立主要是记录用户最常用的一些信息.表3.1leafbbs_userinfo字段名数据类型长度主键索引外键可空说明IDbigint20是否否代理主键UserNameVarchar20否是否用户名NickNameVarchar60否否否昵称PasswdVarchar40否否否密码Emailvarchar255否否否电子邮件Questionvarchar255否否否提示问题Answervarchar255否否否提示答案RegTimedatetime否否否注册时间LoginTimedatetime否否否最后登陆时间LoginIPvarchar20否否否最后登陆IPLoginTimesint11否否否登陆次数StayTimebigint20否否否停留时间SignDetailtext否否是用户签名HavePictinyint1否否是是否有头像PicFileNamevarchar255否否是头像地址TimeZonevarchar20否否是地区(2).用户详细信息表:用户详细信息表中存放的是用户的身高,体重,联系方式等详细资料,建立此表的目的是把一些用户不经常用到的详细信息,单独存放到一张表中,可以节约系统的资源.表3.2leafbbs_userdetai字段数据类长度主键索引外键可空说明IDbigint20是是否代理主键Heightvarchar20否否是身高Weightvarchar20否否是体重FavourPeoplevarchar255否否是最喜欢的人DreamJobvarchar255否否是向往工作FavourMusicvarchar255否否是喜欢的音乐FavourPlacevarchar255否否是喜欢的地方FavourMovievarchar255否否是喜欢的电影HomePagevarchar255否否是主页OicqNovarchar255否否是QQ号码IcqNovarchar255否否是ICQ号码MSNvarchar255否否是MSN号码Sextinyint1否否是性别Brieftext否否是简介(3).论坛文章表:论坛文章表存放的是用户所发表的文章信息,也包括回复信息.而在数据库的设计中主要问题是鉴别帖子信息和回复信息.表3.3leafbbs_forum字段名数据类型长度主键索引外键可空说明IDbigint20是否否代理主键ParentIDbigint20否否否父帖IDMainIDbigint20否否否主帖IDBoardIDbigint20否否否版区IDBoardNamevarchar60否否否版区名字ReNumint11否否否回复数量ClickNumint11否否否点击次数UserIDbigint20否否否发表者IDUserNamevarchar20否否否发表者姓名NickNamevarchar60否否否发表者昵称Titlevarchar150否否否文章标题Detailtext否否否文章内容Signtext否否否文章说明ArtSizeint11否否否文章字节数postTimebigint20否否否发表时间LastTimebigint20否否否最后回复时间IPAddressvarchar20否否否发表者IPIsNewtinyint1否否否是否是新IsHiddentinyint1否否否是否隐藏IsToptinyint1否否否是否置顶IsLocktinyint1否否否是否被锁定(4).论坛版区表:论坛版区表是存放的是论坛中版块信息.而论坛也划分为父论坛和子论坛,区分他们也靠表中的某个字段来实现的.具体实际的设计如下.表3.4leafbbs_board字段名数据类型长度主键索引外键可空说明IDbigint20是否否代理主键ParentIDbigint20否否否父版区IDChildIDsvarchar255否否否子版区IDBoardNamevarchar255否否否版区名字Explainstext否否否版区描述BoardPicvarchar200否否否图片地址Ordersint11否否否显示顺序IsHiddentinyint1否否否是否隐藏PostNumint11否否否文章数量NeedPasswdtinyint1否否否是否加密Passwdvarchar100否否是密码(5).论坛初始化信息表:论坛初始化信息表是存放初始化信息和管理员的帐号密码等信息,初始化信息是在论坛在加载过程中读取的或者以后经常用的一些信息.表3.5leafbbs_config表字段名数据类型长度主键索引外键可空说明IDvarchar50是否否初始化标题ConfContexttext否否否初始化信息3.2系统概要设计根据需求分析的结果,对系统进行详细的概要设计3.2.1功能模块设计绘制出的用例图,将本系统分为三个大的模块,他们分别是会员资料模块,帖子资料模块和后台管理模块!本系统的功能层次图如图3.2.1所示LLeafbb系统会员模块帖子模块后台管理会员登录会员注册资料修改帖子发表回复帖子帖子查找论坛管理帖子管理图片管理会员管理会员查找图3.2系统功能层次图如图3.2.1,leafbbs系统实现了如下的功能.(1).会员模块:此模块用来实现会员的登陆注册和会员资料的修改和查找.1.会员登陆模块:会员可以通过此模块对论坛进行登陆,登陆后便可以使用所有的会员功能,比如发帖回复等等.2.会员注册模块:没有会员帐号的用户,可以通过此模块添加会员信息,添加成功后便可登陆论坛,使用会员功能.3.资料修改模块:已注册的会员在登陆后,可以通过此模块,对会员的基本资料,联系方式,密码,头像等资料进行修改.4.会员查找模块:已注册的会员在登陆后,可以通过此模块,对会员进行查找,并可以查看对方的资料,联系方式等等,从而方便会员之间的联系.(2).帖子模块:1.帖子发表模块:已注册的会员在登陆后,可以在相应的论坛中,发表或转载自己的大作,发表成功后,其他会员便可以在相应的论坛中看到这篇帖子,并可以对其进行回复等操作.2.帖子回复模块:会员在发表完帖子后,用户便可查看相关文章,并可以在文章中对已发表的帖子进行回复,3.帖子查找模块会员可以通过此模块,根据帖子的标题和作者,对相关的帖子进行查找.(3).后台管理:1.帖子查找模块:此模块和帖子模块中的帖子查找类似,只是管理员的搜索条件比普通用户更加的广泛,使搜索变的便捷.2.帖子管理模块:帖子管理模块是管理员对帖子管理的平台,如果管理员查看到帖子有不适宜发表的内容时,可以对帖子选择删除或者锁定等操作,如果看到优秀的帖子,还可以将帖子进行置顶,加精,帖子管理模块帖子管理模块帖子修改帖子删除帖子锁定帖子置顶帖子加精图3.3帖子管理模块功能层次图3.会员管理模块:管理员可以通过此模块,对会员进行管理,对一些不法的用户可以修改或者删除资料,4.论坛管理模块.管理员对论坛的添加,创建,删除等功能都是在此模块里进行处理.5.图片管理模块管理员可以管理用户上传的头像,和在文章里发表的图片,从而加强对图片的控制3.2.2系统界面设计对于系统来说,用户界面设计将非常重要,因为一个交互良好的界面能够加深浏览者的印象.设计的实现可以分为两个部分。第一部分为站点的规划与草图的绘制,这一部分可以在纸上完成。第二部分为网页的制作,这一过程是在计算机上完成的.设计首页的第一步是设计版面布局。我们可以将网页看作传统的报刊杂志来编辑,这里面有文字、图像乃至动画,我们要做的工作就是以最适合的方式将图片和文字排放在页面的不同位置。除了要有一台配置不错的计算机外,软件也是必需的。不能简单地说一个软件的好坏,只要是设计者使用起来觉得方便而且能得心应手的,就可以称为好软件。当然,它应该能满足设计者的要求。常用的软件是Macromedia的Dreamweaver以与Adobe的Photoshop。设计是有原则的,无论使用何种手法对画面中的元素进行组合,都一定要遵循五个大的原则:统一、连贯、分割、对比与和谐。统一,是指设计作品的整体性,一致性。设计作品的整体效果是至关重要的,在设计中切勿将各组成部分孤立分散,那样会使画面呈现出一种枝蔓纷杂的凌乱效果。连贯,是指要注意页面的相互关系。设计中应利用各组成部分在内容上的内在联系和表现形式上的相互呼应,并注意整个页面设计风格的一致性,实现视觉上和心理上的连贯,使整个页面设计的各个部分极为融洽,犹如一气呵成。分割,是指将页面分成若干小块,小块之间有视觉上的不同,这样可以使观者一目了然。在信息量很多时为使观者能够看清楚,就要注意到将画面进行有效的分割。分割不仅是表现形式的需要。换个角度来讲,分割也可以被视为对于页面内容的一种分类归纳。对比就是通过矛盾和冲突,使设计更加富有生气。对比手法很多,例如:多与少、曲与直、强与弱、长与短、粗与细、疏与密、虚与实、主与次、黑与白、动与静、美与丑、聚与散等等。在使用对比的时候应慎重,对比过强容易破坏美感,影响统一。和谐是指整个页面符合美的法则,浑然一体。如果一件设计作品仅仅是色彩、形状、线条等的随意混合,那么作品将不但没有“生命感”,而且也根本无法实现视觉设计的传达功能。和谐不仅要看结构形式,而且要看作品所形成的视觉效果能否与人的视觉感受形成一种沟通,产生心灵的共鸣。这是设计能否成功的关键。最后简单设计系统的简单登陆界面和主界面图3.4用户登陆界面图3.5用户登陆后的主界面3.2.3系统的组件设计在整个系统中,为了解决诸如中文显示乱码此类的问题,本系统需要设计一些组件,来解决相关的问题.(1).过滤器组件:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码为了解决此类问题,需要设计一个组件来解决此类问题,每次请求和响应到达客户和服务器端时,都先经过此过滤器对字符进行过滤.发送请求发送请求用户过滤器(对字符进行过滤)服务器返回响应图3.6字符过滤器原理图(2).权限管理组件:在论坛中的的用户一定会遇到关于权限的问题,比如没有登陆的用户只可以查看帖子,而即使登陆的用户,也只可以对自己应有的权限进行操作,不可以操作管理员的功能.解决此类问题,本系统是通过判断特定的session来判断用户的权限,当用户登陆成功后,组件会发送相应的用户session,之后每次用户对论坛进行操作,都要先通过session,来判断用户的权限.对论坛操作对论坛操作用户是否通过返回窗口服务器判断权限NY图3.7权限判断流程(3).JSP标签组件由于本文是基于MVC模式架构,所以在JSP网页中不应存放过多的逻辑判断,当本系统JSP网页中必须存有JAVA逻辑代码时,本系统设计了一些JSP标签来替代这些逻辑代码第4章系统的设计与实现程序设计又称编码,是系统生命周期中继详细设计之后的阶段,这个阶段的任务是使用选定的程序设计语言,把经过概要设计和详细设计所得到的以程序设计说明书体现的信息处理过程描述后,转换成能在计算机系统上运行的程序源代码。4.1系统框架实现在系统的整体设计中,我们采取了四层结构.这样结构的优点是灵活,移植和可维护性比较高.每个层在处理程序上都应该有一项明确的责任,而不应该在功能上与其它层混合,并且每个层要与其它层分开的图4.1S.S.H框架的结合使用4.1.1底层数据库的建立在前期的数据库选用中,本系统选取了灵活高速的MySQL数据库,而在数据库的设计中,本文已经确立了表结构.根据这些就可以创建一个数据库,在数据库创建并连接好后,就可以创建表、修改表和删除表,创建、修改、和删除主键、外键等等。选中“leafbbs”数据库,usedatabase并使用Createtable<表名>Sql语句,依次创建以下表结构。由于考虑到本系统是应用在单机系统上,另外根据管理的规模,我们只建立一个数据库,在此数据库基础上建立leafbbs_userinfo用户基本资料表leafbbs_userdetai用户详细信息表leafbbs_forum论坛文章表leafbbs_board论坛版区表leafbbs_config论坛初始化信息表4.1.2持久化层的建立(hibernate)典型的Web应用的另一个末端是持久层。Hibernate为java提供了OR持久化机制和查询服务,它还给已经熟悉SQL和JDBCAPI的Java开发者一个学习桥梁,他们学习起来很方便。Hibernate的持久对象是基于POJO和Javacollections。此外。
系统建立Hibernate的持久层。首先把BO持久化。Hibernate是通过POJO工作的,因此数据对象需要给所有的fileds加上getter,setter方法。Hibernate通过XML文件来映射(OR)对象,以下xml文件分别映射了相应对象。
1.userinfo.hbm.xml
2.userdetai.hbm.xml3.forum.hbm.xml4.board.hbm.xml5.config.hbm.xml图4.2userinfo.hbm.xml映射文件本系统可以在com.leafbbs.bean目录下找到这些xml文件。Hibernate配置文件的作用用来告诉程序应该与哪个数据库通信,该使用哪个连接池或使用了DataSource,应该加载哪些持久对象。而Session接口是用来完成Selecting,Saving,Delete和Updating这些操作。4.1.3业务逻辑层的建立本系统的业务逻辑是交由struts中的Action进行判断的,比如判断登陆的业务逻辑时,会建立一个LoginAction类来进行逻辑判断,而一些关联的映射,LeafBBS系统是写在struts框架的struts-config.xml中.图4.3struts-config.xml映射文件从编码的视角来看,这层是最容易被忽视的一层。却往往在持久层周围看到这些业务处理的代码,这其实是不正确的,因为它导致了程序代码的紧密偶合,这样一来,随着时间推移这些代码很难维护。幸好,针对这一问题本系统可以使用Spring框架来解决.spring框架都着手于“依赖注射”(dependencyinjection)(还有我们知道的‘控制反转'InversionofControl=IoC)这样的简单概念。Spring还提供了SetterInjection(type2),ConstructorInjection(type3)等方式供选择。Spring把程序中所涉与到包含业务逻辑和Dao的Objects——例如transactionmanagementhandler(事物管理控制)、ObjectFactoris(对象工厂)、serviceobjects(服务组件)——都通过XML来配置联系起来。这种方式让你的对象从创建中释放了出来,降低了偶合度.图4.4spring配置文件applicationContext.xml映射文件每个对象都可以在Spring配置信息applicationContext.xml中用<bean>标签引用。在这里,mySessionFactory引用了HibernateSessionFactory,而myTransactionManager引用了HibernateTransactionManage。代码中myTransactionMangerBean有个sessionFactory属性。HibernateTransactionManager有个sessionFactorysetter和getter方法,这是用来在Spring启动的时候实现"依赖注入"(dependencyinjection)的。在sessionFactory属性里引用mySessionFactory。这两个对象在Spring容器初始化后就被组装了起来了。这样的搭配让你从单例(singletonobjects)和工厂(factories)中解放了出来,降低了代码的维护代价。mySessionFactory.的两个属性,分别是用来注入mappingResources和hibernatePropertes的。图4.5Spring基于配置文件,将各个Bean搭建在一起。4.1.4表示层的建立在表示层上,主要是基于JSP和AJAX异步传输技术来进行建立,最后通过Struts框架的struts-config.xml文件进行关联映射.具体的页面设计,会在后面的章节中进行介绍.4.2系统功能模块实现4.2.1会员模块实现在会员模块的设计中,首先完成的是业务逻辑层的相应action类的编写,之后在通过具体的需要,编写相应的数据库访问DAO.在一切结束之后,从DAO和业务逻辑类中抽象出接口,通过spring的IOC对接口进行对象注入.在模块的设计过程中,遇到的难点是在注册时使用的AJAX异步传输,来判断用户名是否被占用.AJAX技术是一个基于Javascript脚本语言的新技术,目前对这种技术的使用还不是很多,但通过反复的调试,逐渐的掌握了AJAX的要点.图4.6AJAX技术在本系统中的应用当用户在登录的时候,会有一个验证码的文本框,而验证码的实现是通过访问servlet技术实现的,在打开登录界面时,servlet会自动向首页发送一组图片,并且发送一个相应存放数字的session,当用户提交信息时,系统就会在session中提取数字并和用户的数字进行比较,错误则会弹出错误信息.图4.7验证码的应用当用户在登录成功后,或者选择游客模式进入论坛时,会跳转到论坛的主界面,主界面的实现主要是通过HTML的<iframe>标记,将页面划分成两个部分,左面的部分是用户的操作框,右面是论坛的信息部分.已登录的用户可以通过左面的操作框来对自己的一些资料进行修改,也可以选择退出等其他操作.图4.8用户主界面用户信息模块功能流程图开始进入登录页面开始进入登录页面游客登录?输入账号密码帐号正确进入主界面结束NYYN图4.9用户模块功能流程图4.2.2帖子模块实现帖子模块的完成流程和会员模块类似,都是先根据JSP网页,建立相映的Action逻辑判断类,之后建立和帖子有关的数据库访问DAO,最后抽象出接口进行依赖注入,编写帖子模块首先遇到的难点是分页功能的实现,当打开某个论坛时,如果论坛中的帖子数量不能在一页中显示出来,那么怎样进行处理.在一些参考学习后,本系统最后编写了一个分页bean,来解决这个难题,分页bean的位置在com.leafbbs.service.web包下,其中的属性有 intpage当前页数 intperPageNum本页显示的帖子数目 intallPage总页数 intcpage本页首个帖子序号 intspage本页最后帖子序号StringfileName页名这样一来,系统就可以把页数的信息,封装到bean里面,并且进行相关的显示图4.11分页功能的实现当用户进入某分论坛时,就会显示出分页信息,并且把相关的帖子封装到response响应中,发送给用户.当我们每次查看某个帖子,或回复某个帖子时,帖子表里的字段,ReNum(回复数量),ClickNum(点击数量)都会进行自增.进入帖子后,系统会根据文章发表时间的顺序,讲帖子和相关的回复显示出来图4.12查看帖子开始开始显示论坛信息进入相关论坛显示文章列表浏览相应帖子回复是否继续浏览结束YN图4.13帖子模块功能流程图4.2.3后台管理模块实现后台管理模块是管理员对论坛进行管理的平台,在此模块实现的过程中,最重要的一点就是权限的控制,只有管理员的身份才可以对此模块进行操作,权限的控制已经交给了控制组件进行完成.管理员可以在此模块中主要完成对帖子和会员的管理,管理员可以通过用户的ID和用户名对其进行搜索,从而实现管理图4.14管理员对用户进行管理此外管理员还可以进行添加,修改论坛信息图4.15管理员对用户进行管理登陆系统登陆系统后台管理前端显示用户数据库用户管理查询数据库信息修改新建用户用户删除帖子查看登陆界面信息输入提交确认身份NY图4.10后台模块功能图4.3系统设计总结经过将近一个月的设计,完成了用户模块,帖子模块和后台管理模块,基本完成了需求分析中设计的功能,接下来将进入到测试环节.第5章系统的调试与测试5.1测试概述5.1.1软件测试的目的软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。5.1.2软件测试的任务1、寻找Bug;
2、避免软件开发过程中的缺陷;
3、衡量软件的品质;
4、关注用户的需求。总的目标是:确保软件的质量5.1.3测试环境Apache提供的Web服务器Tomcat6.0使得用户可以在Windows2000以上操作系统下发布自己设计的动态网页。因此对论坛的调试工作主要是利用Tomcat6.0的强大功能在本机下完成的。为了在本机下浏览Web页面,首先在创建该系统的站点上(该系统使用的是Web的默认站点)将IP地址设定为,它的缺省域名值为localhost。然后向IE浏览器输入本地动态网页的URL,Web服务器在收到浏览器传送的URL之后找到网页文件,并在服务器端执行该文件后将此文件以HTML文件的形式返回该浏览器。5.2单元测试5.2.1黑盒测试在单元测试中分别对用户信息模块,帖子模块和后台管理模块进行分别测试.首先对各个模块进行黑盒测试,在各种条件下运行模块是否能正常运行,比如在登录时,输入空白用户名等等.图5.1测试输入空白信息,5.2.2白盒测试此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构与有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。软件人员使用白盒测试方法,主要想对程序模块进行如下的检查;对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。表5.1登陆测试用例测试用例描述操作过程与数据预期结果用例类型按不同的输入格式输入个人信息,进行注册。进入注册界面,按提示的输入格式输入个人信息,进行注册。注册成功,显示注册成功。居民信息保存到数据库。功能点用户名有重名的进入注册界面,用户名输入,其它按提示的输入格式输入个人信息,进行注册。注册失败,不能注册。功能点邮箱按邮箱有效地址输入,其它按规定输入,进行注册。进入注册界面,输入例如:其它按提示的输入格式输入个人信息,进行注册。注册失败,不能注册。功能点输入为空时,进行注册。进入注册界面,输入为空,进行注册。无法注册界面校验表5.2发贴测试用例模块测试用例描述操作过程与数据预期结果发贴按要求输入帖子的相关信息进入发贴界面,输入帖子内容,标题,内容,再提交。发贴成功,发贴成功信息转到管理员。没输入标题进入发贴界面,没输入标题,再提交发贴失败。输入为空进入发贴界面,输入为空,再提交。无法发贴。5.2.3模块接口测试在黑盒测试完成的情况下,进行模块接口测试,模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑的因素:1输入的实际参数与形式参数的个数是否相同;
2输入的实际参数与形式参数的属性是否匹配;
3输入的实际参数与形式参数的量纲是否一致;
4调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
5调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;
6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;
7调用预定义函数时所用参数的个数、属性和次序是否正确;
8是否存在与当前入口点无关的参数引用;
9是否修改了只读型参数;
10对全程变量的定义各模块是否一致;
11是否把某些约束作为参数传递。模块接口测试,本系统使用的是MyEclipse的测试工具进行测试,在IDE与TomCat连接好后,向TomCat服务器中部署LeafBBS系统,部署成功后,即可按照步骤,对系统进行模块接口测试.图5.2部署LeafBBS系统,图5.3测试用户登录模块5.3集成测试每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误,等等。综合测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行集成测试以便发现与接口有关的各种错误。5.3.1自顶向下集成自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。首先将模块用户模块和帖子模块集成在一起,再将后台管理模块集成起来。之后再将用户模块和后台管理模块集成在一起,再加上帖子模块.5.3.2确认测试标准功能和性能指标满足软件要求和标准的情况下,测试结束第6章结论经过几个月的努力,已经基本完成了LeafBBS系统的开发和设计.完成了用户模块,帖子模块和后台管理模块的开发,并基本实现了前期所制定的功能.LeafBBS系统在不断的设计更改过程中,逐渐的成熟。在编写的最后阶段中,参考了一些设计模式,在逻辑代码和数据库连接DAO中抽象出了若干接口,并对其进行了对象的依赖注入,大大的减少了模块之间的耦合,使系统具有很高的灵活性和可维护性,这是LeafBBS系统最大的优点.另外在系统的另一个优点就是HTML同步传输和AJAX异步传输技术的结合使用,既减轻了服务器的负担,也加快了用户的访问效率.当然LeafBBS系统也存在很多不足的地方,比如用户的权限判断过于简单,安全性低,希望在今后的学习中,逐步的进行改进.通过这次的设计,加深了对S.S.H框架,以与面向对象思想的一些理解.对于软件工程方面的设计思想也有了更深一步的理解,只有在不断的实践于学习中,才会得到最丰厚的回报.参考文献[1]冯燕奎,赵德奎.JSP实用案例教程[M]清华大学出版社,2004,5:70-100[2]王家华软件工程[M]东北大学出版社2001年3月303页[3]王宜贵软件工程[M]北京:机械工业出版社,2002:20-79[4]孙卫琴精通struts[M]电子工业出版社2004年8月50-70[5]孙卫琴精通hibernate[M]电子工业出版社2005年4月100-120[6]张洪斌java2高级程序设计[M]中科多媒体出版社2001年11月85-90[7]JimArlowUML2.0andtheUnifiedProcess[M]机械工业出版社2006年6月30-40[8]林信良spring2.0技术手册[M]电子工业出版社2006年6月50-100[9]熊节、林仪明、张凯峰、陈玉泉等主编[《CSDN社区电子杂志——Java杂志》创刊号][10]《程序员》杂志2007年第4期[11]耿祥义编著.JSP基础编程[M].清华大学出版社,2004.55-162[12]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185-193[13]孙鑫编著.JavaWeb开发详解[M].电子工业出版社,2006.189-274[14]林上杰,林康司编著.JSP2.0技术手册[M].电子工业出版社,2004.3-6[15]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,1998.[16]蔡剑,景楠.JavaWeb应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2004.致谢在设计的几个月中,感谢我的导师****老师对我的帮助和悉心的指导,老师在我的设计和论文中给了我很多帮助,在此表示深深的感谢 另外在设计的过程中同组的同学和我实习的单位赛斯特IT培训中心也给了我莫大的支持,在此也表示衷心的感谢附录A英文文献AJAXInAction附录B翻译1.1.1比较用户体验花几分钟使用一下你选中的应用(浏览器除外),记下它用到了哪些用户交互,然后马上回来。为了简短起见,我举一个电子表格的例子,但是,这里所涉与的要点是通用的,足以针对文本编辑器上的各种情形。好,我们开始。先在电子表格中随便输入几个等式,注意到,可以以几种方式进行交互:编辑数据,用键盘和鼠标浏览数据,还可以使用鼠标拖拽来重新组织数据。我做这些操作的时候,程序给了我反馈。移动鼠标的时候,光标改变了形状;当鼠标停在上面的时候,按钮变亮了;选中的文字也改变了颜色。窗口或者对话框被选中的时候,也和平常显得不一样了,等等(图1-1)。这些就是所谓“富”的交互。当然了,仍然有一些有待改进的地方,但这是一个好的开始。OK,电子表格就是一个富客户端程序了吗?当然不是。在电子表格或者类似的桌面应用中,业务逻辑和数据模型是在一个封闭的环境中运行的。在这个环境中,它们彼此清晰地了解对方,并且可以互相访问,而环境之外的东西,对于它们来说是未知的(图1-2)。那么客户端又是什么呢?它是与另一个独立的进程相互通信的程序,后者通常运行在服务器上。一般来说,服务器总是要比客户端大一些,能力强一些,配置更好一些,因为在服务器上通常要存储浩如烟海的信息。客户端程序使得最终用户可以查看和修改这些信息,当多个客户端连接在同一个服务器上的时候,可以在它们之间共享这些信息。图1-3展示了一个简单的客户/服务器架构在现我的电子表格应用只需要管理它自己保存在内存或本地文件系统中的少量数据。如果架构设计良好的话,数据和它的表现形式的耦合可以非常松散,但是我不能通过网络来分割或者通过网络来共享它们。从这个意义上来说,电子表格应用不是一个客户端。与之相对应的Web浏览器就是一个典型的客户端,它与Web服务器通信,请求需要的页面。浏览器有丰富的功能,用来管理用户的浏览行为,常见功能有回退按钮、历史列表和分页浏览多个文档等等。但是当我们把特定网站的Web页面看作是一个应用时,这些通用的浏览功能实际上和应用关系不大,充其量也就如电子表格和Windows的开始按钮或者窗口列表之间的关系。我们来考察一下现代的Web应用。为了简单起见,我们选择了“地球人都知道”的在线书店A(图1-4)。在浏览器中打开Amazon网站,因为在此之前我访问过,它会给我显示一个友好的问候、一些推荐书目,还有我的购买历史信息。点击推荐书目中的任何一条,就会转到另外一个页面(此时,页面要刷新一下,在这几秒钟内我什么也看不到)。新页面是该书的相关信息:书评、二手书报价、同一作者的其他著作,以与以前我浏览过的其他书籍简而言之,呈现在我面前的是非常丰富的、关联度很高的信息。但是对我而言,交互的方式就是点击那些超链接,然后填写一些表格。假设我在键盘前面不小心睡着了,第二天才醒来,如果不刷新页面,我就没法知道《哈里·波特》系列的新书已经出版了,也不能将我的列表从一个页面带到另一个页面,我要是想同时看到更多一些东西也不行,因为我无法改变页面上局部内容区域的大小。我似乎是在批评Amazon的界面,其实并非如此,我只是拿它来做个例子。事实上,在传统Web开发方式的桎梏下,他们已经做得非常棒了。但是比起电子表格来说,它所用的交互模型毫无疑问是太有限了。为何现代的Web应用仍然有这么多的局限呢?造成目前的状况有一些合理的技术原因,我们现在就来考察一下。1.1.2
网络延迟因特网的宏伟蓝图是将这个世界上所有的计算机都连接起来,形成一个无比巨大的计算资源。如果能把本地调用和远程调用等同起来,那么无论是分析蛋白质的成分还是破解外太空的信号,使用者都无需考虑机器的物理位置,剩下来的只有愉快地计算。但是非常不幸,本地调用和远程调用是完全不同的东西。在现有的技术水平之下,网络通信仍然是一件代价高昂的事情(也就是说,通常很慢,而且并不可靠)。在没有网络调用的情况中,不同的方法和函数以与它们所操作的数据都位于相同的本地内存中(图1-6),向方法内传递数据并且获得方法的返回结果是非常直接的。而在有远程调用的情况下,位于网络两端的通信双方为了发送和接收数据在底层需要进行大量计算(图1-7)。比起数据在线路上的往返,这些计算需要消耗更多的时间。传输一段二进制的数据,中间要经过很多环节的编码和解码、错误校验、失败重发、数据包拆分和重组,数据最终转化为0和1表示的二进制信号,通过线路(或者无线连接)到达另外一方。在本地,调用函数的调用请求被编码为一个对象,然后将这个对象序列化为一系列字节,最后使用应用层协议(通常是HTTP)通过物理传输介质(例如铜缆、光纤或者无线电波)将其发送出去。在远程机器上,对应用层协议解码,将获得的数据字节反序列化,创建一个请求对象的副本。然后对数据模型应用这个对象并生成一个响应对象。为了将响应对象传递给本地的调用函数,所有的序列化、反序列化以与传输层的操作都要反向再来一次。最后,响应对象被传递给本地的调用函数。这个交互过程很复杂吧,幸好,它是可以自动完成的。现代的编程环境如Java和Microsoft的.NET框架都内置了这个能力。尽管如此,执行远程调用时,上述所有这些操作仍然会在内部执行。如果我们到处使用远程调用,性能势必会大受影响。这也就是说,远程调用是不可能和本地调用一样有效率的。更糟糕的是,网络的不稳定更让这种效率损失捉摸不定,难以预计。相比之下,运行在本地内存之中的本地调用,在这一点上无疑要有优势得多。等等,说了半天的远程调用,这和软件的可用性有关系吗?答案是,大有关系。一个成功的计算机用户界面要能以最起码的水平模拟我们在真实世界中的体验。交互的基本规则之远程调用横穿整个网络,需要执行大量的额外操作,它们往往会把系统拖慢,使用户察觉到延迟。在桌面应用中,只有当可用性设计做得非常糟糕的时候,才因为网络延迟不可预测,这类界面问题往往都神出鬼没,对应用响应的测试也难以开展。换句话说,网络延迟是导致实际应用的交互性糟糕的一个普遍原因。1.1.3
异步交互用户界面的开发者对于网络延迟只能做最坏的假设。简单地说,就是要尽可能让用户界面与网络活动无关。天才的程序员们早已发明了一种确实有效而且久经考验的方案,来专门解决这一问题。先卖个关子,让我们到现实世界中走一趟。在我每天早上必做的事中,很重要的一项是叫醒我的孩子去上学。我可以站在床边把他们折腾醒,催着他们起床穿衣,但这是一种很耗费时间的方法,总要耗费我很多宝贵的早间时光我要叫醒孩子,看看窗外,往往会忽略了喂猫。孩子们起来之后会问我要早餐。就像服务器端的进程一样,孩子们起床总是慢吞吞的。如果我遵循同步交互模式,就要等他们老半天。不过,只要他们嘟囔一句“我醒了”,我就可以先去干其他的事,需要时再回来看看他们。按照计算机的术语,我需要做的就是为每个孩子在一个单独的线程中建立一个异步进程。开始之后,孩子们会在他们的线程里自己起床,我这个父线程没有必要同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《低税负制个人试算》课件
- 2024年度影视制作设备采购与租赁合同
- 2024年度物业共有权变更合同:车库共有权变更协议
- 2024年度卫星发射服务合同
- 2024年度幕墙施工材料供应合同
- 2024年度工程款支付保障合同
- 2024年度智能仓库管理系统设计与实施合同
- 2024年度物流服务合同:某跨境电商与国际物流公司合作合同
- 2024年度供应链管理服务保证合同
- 2024年度版权质押合同:某音乐公司将歌曲版权质押给银行获取贷款
- 学生儿童新生入学自我介绍简历
- 保温装饰一体板(陶瓷薄板)施工方案
- 旅游资源分类调查评价表 2017版
- 淋巴细胞亚群细胞检测临床应用讲座呼吸科课件
- 四川省宝兴县县城地质灾害调查评价报告
- 创伤性血气胸急救和护理课件课件
- 一次性纸杯生产建设项目可行性研究报告(共31页)
- 祖国的灿烂文化PPT通用课件
- 浙江大华可视对讲系统介绍
- 松下smt贴片机离线编程软件pt200中文进修手册
- 收货确认回执单.docx
评论
0/150
提交评论