基于JSP动漫论坛的设计与实现
摘 要
作为文化产业的一部分,动漫影响了我国一代又一代青少年,据钱江晚报调查显示,有超过七成的95后愿意从事与动漫相关的行业,可见其对青少年影响力之大。
动漫论坛作为最先开始热爱动漫人士进行交流的方式之一,是爱好者们共享信息,寻找同伴的重要渠道之一。在这次毕业设计中,使用MVC模式,采用MySQL5.0数据库和JSP技术,开发了界面友好、操作简单易懂的动漫论坛。
在设计过程中,在以下论文里说明了九重天动漫论坛系统的设计方案,主要包括系统运用的关键技术,数据库设计,对各个功能模块的详细设计以及实现,本次设计主要实现论坛系统中以下几个功能:注册会员,会员登录,管理员登录,浏览帖子,发帖回帖,管理员具有删除用户,管理板块,能够增加、删除、修改板块信息的功能。
关键词:动漫论坛、JSP、MySQL。
Design and implementation of Animation Forum Based on JSP
Abstract
As part of the cultural industry, animation has affected our generations, according to Qianjiang Evening News survey, more than 70% of the 95 are willing to engage in animation related industries, visible to the influence of the youth.
Anime forum, as one of the first ways to love the animation lovers, is one of the important channels for lovers to share information and find their companions. Through this graduation project, developed a friendly interface, easy to understand animation forum. In the design process, the use of MVC mode, using MySQL5.0 database and JSP technology.
In the following thesis illustrates the design scheme of the nine day anime forum system, including key technology, system using the database design, each functional module of the detailed design and implementation of the design of the main functions of the forum system to achieve the following: Member registration, member login, the administrator login, browse posts, post replies. The administrator has to delete the user management module, can add, delete and modify the function of the information sector.
Keywords: Animation Forum, JSP, MySQL.
目录
摘 要1
Abstract1
- 绪论1
1.1 课题背景1
1.2 国内外现状1
1.3 动漫论坛系统特点1
1.4 发展前景2
1.5 所做的主要工作2 - 可行性分析及需求分析2
2.1 可行性分析2
2.1.1 经济可行性3
2.1.2 技术可行性3
2.1.3 运行可行性3
2.2 需求分析3
2.2.1 功能需求4
2.2.2 非功能需求5 - 系统开发环境及技术介绍5
3.1 开发环境5
3.2 开发工具5
3.2.1 MyEclipse8.55
3.2.2 MySql5
3.3 相关技术介绍6
3.3.1 JSP技术简介6
3.3.2 JDBC技术技术简介6
3.3.3 MVC模式与Struts框架技术6 - 总体设计7
4.1 系统模块总体设计7
4.1.1 普通用户模块设计8
4.1.2 管理员模块设计9
4.2 数据库设计10
4.2.1 数据库分析10
4.2.2 数据库结构设计11
4.2.3 数据库逻辑设计11
4.2.3 数据库连接15 - 功能模块的设计与实现15
5.1 主界面15
5.2 前端16
5.2.1 用户登录16
5.2.2 用户注册18
5.2.4 发表新帖19
5.2.5 回复帖子20
5.3 后台管理20
5.3.1 管理员登录21
5.3.2 分区管理21
5.3.3版块管理23
5.3.4 子版块管理25
5.3.5 帖子管理26
5.3.6 用户管理26 - 各功能模块测试26
6.1 测试概述及所用方案27
6.1.1软件测试概述27
6.1.4 测试的主要内容28
6.1.5 测试方案29
6.1.6测试设计30
6.2前端功能测试31
6.2.1 登录功能测试31
6.2.2 注册功能测试32
6.2.3 发帖功能测试33
6.2.4 回复帖子测试34
6.3后台功能测试34
6.3.1 管理员登录测试34
6.3.2 分区管理测试35
6.3.3 版块管理测试36
6.3.4 子版块管理测试37
6.3.5 主题管理测试38
6.3.5 用户管理测试38
6.4测试结果及总结38
结束语39
参考文献40
致 谢41
外文原文42
中文翻译49
1. 绪论
1.1 课题背景
动漫产业作为文化产业的一部分,对我国青少年有着深远的影响。作为拥有完整产业链的动漫强国日本,仅动画与漫画占GDP的0.4%,其衍生了电视、电影、音像出版、传统出版、游戏软件开发、游戏机硬件制造、服装、小商品、餐饮等等行业。现如今,我国动漫产业发展迅速,由《秦时明月》《镇魂街》等优质动画为首掀起了国漫热潮,2015的《大圣归来》、2016的《大鱼海棠》收益颇丰。十二五期间国家明确要支持和壮大国有动漫企业,使其在发展产业和繁荣市场方面发挥主导作用。同时支持各类所有制动漫企业的健康发展。
动漫论坛作为动漫爱好者最早开始交流的平台之一,由于该产业的独特性,线上交流是爱好者们进行交互的主要方式。现在国内外著名的ACG论坛,如天使动漫论坛、精灵动漫论坛等注册人数均已过万。
为了是广大动漫爱好者更好的进行交流,本次课题设计了九重天动漫论坛。该论坛系统的设计方案包括论坛的设计与实现的相关技术、开发环境,数据库设计,对各个功能模块的详细设计,包括注册会员,会员登录,管理员登录,浏览帖子,发帖回帖,管理员具有删除用户,管理板块,能够增加、删除、修改板块信息的功能。
1.2 国内外现状
bbs诞生于20世纪70年代的美国,主要用来成员之间的交流,随着互联网的发展,其许多特性被后面的应用取代,90年代bbs的功能主要转移到了我们现在所熟知的论坛上来。又值90年代动漫发展迅速,动漫论坛便成为了爱好者相互交流的主要途径之一。由于互联网发展迅猛,通讯方式和通讯工具的多元化,论坛不如盛时期一样人气爆棚,但作为最先开始传播讯息的供人民交流的平台之一,直到今天论坛也在发挥其功能。依旧是爱好者们交流、共享信息、分享资源必不可少的平台。
1.3 动漫论坛系统特点
动漫论坛系统有以下几个特点:
- 人性化的界面
一个动漫论坛能否吸引人,其界面的美观是必不可少的,对于爱好者来讲,毫不夸张的说,一个是否让人感觉舒适、友好界面是决定其是否使用该论坛的要素之一。人性化的界面,让用户在使用时更加舒适。其界面风格也会由热门作品、节日等因素影响定期更换,保证了新鲜度,是用户不易产生审美疲劳。 - 完整的管理功能
论坛系统一般有明确的制度,为此需要一套合理完整的管理功能,由于我们无法左右他人的思想和发言,会不可避免的出现过激的言论和不健康的内容,因此,一套完整的管理功能显得尤为重要。它约束用户的行为,定期清理不良信息。对于论坛的主题,帖子有着编辑增加修改的功能,对于用户也删除封号等功能,通过这些管理功能的实现来保证广大用户使用论坛的感受。 - 覆盖范围广
论坛的成员可以来自各个地方,大家因为同一个兴趣爱好聚集起来,由于是线上活动,所以对于成员的地域约束不是很大,因此论坛中成员的覆盖范围较广 - 话题性明确
作为动漫论坛,其主题相当明确,用户也是针对爱好者这一群体。可以在论坛中讨论关于ACG相关的话题。
1.4 发展前景
论坛作为一种着重依靠内容和话题去促进用户交流的平台,只要话题还存在,其就有发展的可能性,现在的论坛已经足够完善和成熟,与曾经的顶峰时期相比,并不会再和那时一样聚集全网络的目标,这并不是一件坏事,只能说明我们的交流方式日益多样化,成熟化。而具有主题鲜明的论坛,比如动漫论坛将会继续存在并且活跃下去。现如今国内动漫产业发展迅猛,动漫论坛今后也将乘着国漫大发展的东风,走向更好的未来。
1.5所做的主要工作
首先,对论坛进行可行性分析和需求分析,掌握所做论坛都需要哪些功能。论坛分为两大模块,分为前台帖子浏览模块、后台帖子管理模块,在后台帖子管理模块当中,应该具有对帖子的管理功能,对注册用户的管理的功能,在前台帖子浏览模块当中,应该具有帖子的浏览、发表新的帖子、注册用户看完帖子之后的回帖等等。
然后,要对论坛进行系统的设计,它包括各个功能模块的设计和数据库结构的设计。论坛采用动态服务器网页JAVA作为开发语言,MySQL作为后台数据库来开发。功能模块的设计,分为前台帖子浏览模块设计,后台帖子管理模块设计,在功能模块设计中,要确定各个分模块之间的联系,以及前台模块与后台模块之间的联系。在数据库结构设计中,要考虑建立几个数据表。各个数据表之间的关系,以及如何把网页与数据库连接起来。
最后,就是系统的实现,根据前面所做的工作,对论坛进行详细的设计与实现,通过参考大量的书籍掌握Java语言的用法,以及怎样用JDBC连接数据库的。再实现各个功能模块。
- 阐述整个个性化页面的系统结构及工作原理;分析了系统实现中的特殊性、难点和重点。
- 设计实现用户管理、帖子管理、版面管理、数据库管理、浏览查找功能等。
- 分析并解决实现中的若干技术问题。
- 建立完整的网上论坛,进行测试并分析结果。
- 可行性分析及需求分析
2.1 可行性分析
可行性研究的目的就是用最小的代价在尽可能短的时间里确定问题是否能够解决。但是这个阶段的目的不是解决用户提出的问题,而是确定这个问题是否值得去解决。其主要任务是,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,必须分析几种可能的利弊,从而判定原系统的目标和规模是否现实,系统完成后带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实际上就是一次大大的简化了的系统分析和系统设计的过程,即以抽象的方式进行分析和研究。
首先需要进一步分析和澄清之前一部的问题定义。一般都要从经济、技术、操作和法律四个方面来体验每种解法的可行性,做出明确结论来供用户参考。
可行性分析通过对项目的前期投入、带来的收益、技术、环境影响、后续的影响等多方面的研究分析,对项目是否值得投资、是否建设等提出意见。为项目的决策提供了综合性的系统分析方法。
2.1.1 经济可行性
首先要进行成本——效益分析。从开发所需的成本和资源,潜在的时长和前景等方面进行估算,确定要开发的项目是否值得投资开发,即要分析在整个软件生存周期中所花费的代价与得到的效益之间的度量。
本动漫论坛系统是一个实现爱好者相互交流的系统,采用MVC结构体系;本系统使用的开发工具为MyEclipse8.5,均可以在网上免费下载并安装使用;MY SQL是本系统的后台数据库,同样也可以在网上免费下载使用。因此,基本无需支付任何费用就可以使用这些开发工具。另外,本系统完全由个人开发,除了个人的时间和精力的消耗之外,基本上没有什么经济方面的开发成本。
本系统的设计与开发是非商业性的,虽然没有经济方面的收益,但对于本人而言,既加深了本人对JSP技术的了解和掌握,也为以后的软件系统的设计和开发积累了一定的实践经验。
2.1.2 技术可行性
对要开发项目的功能、性能和限制条件进行分析,评价系统所采用的技术是否先进,使用现在的技术是否能实现系统打到的目标。技术可行性是从该项目实施的技术角度来探讨该项目是否可一实施。要从软硬件、环境以及技术人员等方面来做综合的考虑。
动漫论坛系统的开发主要包括前台和后台两个方面,不管是用户还是系统管理员都是通过浏览器(如火狐,IE等)进入该系统。对于系统前台,要求系统的界面友好、美观大方、操作方便等要求,实现注册会员,会员登录,浏览帖子,发表帖子,回复帖子的功能;对于系统后台则要求信息更新及时、数据存储安全可靠、数据一致性高及易维护等要求,要实现管理员登录,删除用户,管理板块,能够增加、删除、修改板块信息的功能。
本系统采用JSP技术,开发调试相对简单,灵活使用css可以使界面更加简洁美观友好, MyEclipse8.5集成开发环境是一套完整的开发工具集,可以用于生成基于JSP的应用程序,还提供MySQL数据库各种操作,这些大大提高了编程的效率和代码质量,而现在开发所需语言技术都是在大学期间学过的,从而在技术上为本系统的设计和开发提供了可能。
2.1.3 运行可行性
本系统操作简单,功能齐全。各个模块的操作都简单易懂,没有复杂的实现方式,再加上现如今互联网飞速发展,当前信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在运行上是可行的。
2.2 需求分析
软件需求分析是软件开发期的第一个阶段,是软件生存周期最重要的一步,是关系到软件开发成败的关键步骤。他在问题定义和可行性研究阶段之后进行。它的基本任务是准确地回答“系统必须做什么?”这个问题。虽然在可行性研究阶段粗略了解了用户的需求,甚至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽可能短的时间内确定问题是否存在可行的解法,因此许多细节都被忽略了,一个微笑的错漏都可能导致误解或铸成系统的大错,在纠正时付出巨大的代价。因而可行性研究不能代替需求分析,他实际上并没有准确地回答“系统必须做什么?”这个关键问题。
软件需求分析是整个系统开发的基础。在此阶段结束前,系统分析员应该写出软件需求规格说明书,以书面的形式准确地描述软件需求。在此过程中,分析员和用户都是起着关键的、必不可少的作用。
双方确认对软件系统有下述几方面的综合要求:
功能、性能、可靠、可用、出错、接口、约束、逆向以及将来可能发生的。
所谓需求分析,就是要弄清楚问题的要求,我们要清楚地知道对于用户来讲,他要实现什么功能,他希望我们做到什么。在这个阶段与客户的交流十分重要,只有明确了客户的需求,才能制定出正确的计划,才能做出完整的、另其满意的项目,若一开始没有明确客户需求,那我们所追求的目标就是不正确的,制定的计划和努力的方向也随之发生了偏转,最后可能与客户需要的想去甚远,需要重头再来,这样就造成了大量资源、人力、财力的浪费。需求分析完成的好,对今后项目的开发百益而无一害,可以加快设计开发的效率,避免返工,节省时间,避免造成不必要的浪费。
2.2.1 功能需求
指所开发软件系统必须提供的服务,划分出系统必须完成的所有功能。在本动漫论坛系统中,存在下列功能需求:
A.面向普通用户的功能需求
- 注册用户
如果用户为非会员用户,通过注册,经审核通过之后成为会员,获得一个登陆身份。 - 登录
如果用户已经是注册会员,可以进行登录,登陆后实现别的功能。 - 浏览帖子
用户查看系统中的帖子,了解最新的资讯和各种动态等信息。 - 发布新帖
用户可以发表一些帖子,来与其他论坛用户共享信息。 - 回复帖子
对于自己或者别的会员发表的帖子,可以进行回复。
B.面向管理员的功能需求
1、管理员登录
对于已经登录的用户,若权限为管理员,可以进行管理员的登录,登陆之后才能有权限进行下一步操作。
- 帖子管理
管理员可以对发表的帖子进行查询、修改、删除等操作,对好的帖子进行标识,删除或转移不适合的帖子。 - 模块管理
论坛中的模块,管理员可对其进行添加、修改、删除等操作。 - 用户管理
用户注册成功后,管理员可以对用户进行添加、删除操作。
C.面向游客的功能需求:
游客可以对论坛进行访问,浏览帖子的功能,但不能参与回复操作,也没有发布帖子的权限。
2.2.2 非功能需求
动漫论坛系统比较重要的一点莫过于界面的设计,一个动漫论坛是否能吸引用户的第一印象取决于该界面是否友好,因此友好的界面也是该系统必不可少的。与其他论坛系统风格不同的是,动漫论坛要有自己独特的二次元风格,让爱好者有亲切、熟悉的感觉。
- 系统开发环境及技术介绍
3.1 开发环境
本动漫论坛系统的运行平台设置分为硬件环境和软件环境。
- 硬件环境:系统的硬件环境配置为处理器Intel COREi5-3230M,内存4G,硬盘500G。
- 软件环境:系统的软件环境配置为:操作系统:Windows 7,数据库:MySql,JDK1.8、MyEclipse8.5开发工具包和MyEclipse自带的Tomcat服务器。
3.2 开发工具
3.2.1 MyEclipse8.5
MyEclipse是一个非常好的集成开发环境,旨在简化多操作系统软件工具的开发过程,可用于管理各种开发任务,包括测试,性能调优和程序调试,还可以从 针对多个供应商的第三方应用开发工具。 通过集成大量插件,Eclipse的功能可以扩展到支持各种不同的应用程序。主要用于Java、Java EE以及移动应用的开发。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错。
3.2.2 MySql
MySQL是一个关联的数据库管理系统,由瑞典MySQL AB 公司开发,它将数据与不同表中的数据进行关联,而不是将所有数据放在大型存储库中。 这提高了速度并提高了灵活性。 MySQL的SQL结构化查询语言是用于访问数据库的最常用的标准化语言。MySQL是开源的,所以不需要支付其他的费用,可以到官方的网站进行下载。MySQL不仅支持中小型的数据库,也支持拥有上万条数据记录的大型数据库。而且MySQL是适合于多个系统上的,它支持很多语言。也正是由于其体积小,速度快,总体拥有成本低,特别是开源这一功能,许多中小型网站为了降低网站的总体拥有成本,并选择MySQL作为网站数据库。
3.3 相关技术介绍
本系统中使用了JSP技术、JDBC技术、MVC模式与struts框架技术,下面将简单介绍这些技术。
3.3.1 JSP技术简介
JSP和servelet一样都属于“web层”,比起html这种直接把文件传到服务器供用户浏览的“静态网页技术”,JSP属于“动态网页技术”。所谓“动态网页技术”就是根据客户发出的请求来做出响应,并且生成页面并返回给用户。显而易见,比起“静态网页技术”JSP是有很多好处的,比如灵活性和数据保密等方面。当然,也存在着不足,那就是其响应速度相对较慢,因此现在解决这一问题的方法就是把“动态网页”中相对固定的部分作为缓存。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术。
JSP是面向服务器的,因此支持任何浏览器。当Web服务器和JSP引擎遇到访问JSP网页的请求时,JSP引擎将请求对象发送给服务器端的相关组件,比如JavaBean组件、Servlet或EJB等,然后由服务器端组件处理这些请示,可能需要从数据库或数据存储中检索信息,然后服务器端组件再将响应对象返回JSP引擎。JSP引擎将响应对象传递给JSP页面,根据JSP页面的HTML格式完成数据编排,最后Web服务器和JSP引擎将格式化后的JSP页面以HTML格式返回客户浏览器。这就是当前网站构建中广泛采用的浏览器——Web服务器——后台数据库的三层架构模式。因为JSP所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果。
3.3.2 JDBC技术技术简介
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。简单来说。JDBC可以做三件事情:与数据库建立连接、发送操纵数据库的语句、返回处理结果。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。
3.3.3 MVC模式与Struts框架技术
MVC模式:
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图V:
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型M
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器C
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
Struts框架技术:
Struts 框架就是基于Model 2 的架构,也就是基于MVC模式的框架技术。它是一个免费的开源的WEB层的应用框架,具有很高的可配置性,和有一个不断增长的特性列表。一个前端控制组件,一系列动作类,动作映射,处理XML的实用工具类,服务器端java bean 的自动填充,支持验证的WEB 表单,国际化支持,生成HTML,实现表现逻辑和模板组成了struts的灵魂。
- 总体设计
总体设计阶段的基本目标就是回答“概括的说,系统应该如何实现?”这个问题,因此总体设计又称为概要设计或初步设计。通过这个阶段的工作,开发人员将划分出组成系统的物理元素,如程序、文件、数据等。但这些物理元素还处于黑盒子的形式,具体的内部细节在详细设计考虑。总特设计的另一项任务是设计软件的总体结构,即确定系统中的每个程序有哪些模块组成,每个模块的功能及模块和模块之间的接口、调用关系等,但所有这些都不要求涉及模块内部过程的细节。
4.1 系统模块总体设计
九重天动漫论坛系统在设计时应满足以下几个目标:
1.使用人机交互的操作,查询信息快捷,方便后台管理,确保数据库的稳定性,其次是尽可能使界面美观。
2.为用户提供一个方便、快捷的专业特色信息查看功能。
3.实现在线添加专业特色。
4. 操作简单,易于理解,便于使用。
5. 屏幕设计简洁明快,屏幕元素布局合理。
6.用户随时都可以查看自己发表的建议。
7.系统要尽可能的设计成便于管理员维护和方便操作。
8.系统运行稳定安全可靠。
九重天动漫论坛的总体设计包括两大部分:一是前台的总体设计,也就是对于普通用户模块的设计,包括注册会员,会员登录,浏览帖子,发表帖子,回复帖子的功能;二是后台的设计,也就是对于管理员的模块设计,包括管理员对版块进行增加修改删除的操作,对用户进行删除操作,对帖子进行删除操作等基本功能。
功能结构如图4.1.1
4.1.1 普通用户模块设计
- 会员注册与登录
访问到论坛主页时,所有用户都默认为游客,只能执行浏览、搜索帖子的功能,希望进行下一步操作需要进行会员登陆。
如果用户为非会员用户,通过注册,经审核通过之后成为会员,获得一个登陆身份;登陆之后可以进行发帖,评论等功能。 - 会员登录
如果用户为会员,可以直接登陆。登陆之后才能进行发帖、评论等功能。 - 浏览帖子
访问到论坛时,页面会显示版块、分区和发表的帖子,用户可以直接浏览帖子的内容,也可以选择感兴趣的版块或者分区,从里面浏览该分区内的帖子的内容。该模块没有权限设置,无论是会员还是管理员都可以进行操作。 - 发表帖子
用户登陆后可以发表一些帖子来与他人共享最新资讯。
5、回复帖子
用户登陆后可以在自己或别人发表的帖子下发表评论或者回复,发表自己的想法。
会员在登录后可进行的操作如图4.1.2所示:
4.1.2 管理员模块设计
1、管理员登录
对于已经登录的用户,若权限为管理员,可以进行管理员的登录,登陆之后才能有权限进行下一步操作。
2、帖子管理
管理员可以对发表的帖子进行查询、删除等操作。
3、分区管理
论坛中的分区,管理员可对其进行添加、修改、删除等操作。
4、版块管理(子版块管理)
论坛中的分区下有不同的版块,可以对指定分区下的版块进行添加、修改、删除等操作。
子版块位于版块之内,可以对指定版块进行添加子版块,编辑和删除子版块的操作。
5、用户管理
用户注册成功后,管理员可以对用户进行删除操作。
管理员模块设计结构如图4.2.1
4.2 数据库设计
良好的数据库设计,可以大大方便在开发过程中的编程。一个合理、有限的数据库设计可降低程序的复杂性,使程序开发的过程更为容易。
本系统是一个中小型的动漫论坛系统,考虑到开发成本、用户信息量客户需求等问题,决定采用MYSQL作为项目中的数据库。
MySQL相对来说是个小型关系型数据库管理系统,由瑞典的MySQL AB公司开发,在2008年被SUN公司收购。而2009年,SUN又被Oracle收购.Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL软件采用了双授权政策(本词条“授权政策”),由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
4.2.1 数据库分析
通过对系统的需求和功能的分析将系统的数据结构主要划分为四个部分:用户、管理员、帖子、模块这四个。
用户执行的主要是注册会员,会员登录,浏览帖子,发表帖子,回复帖子的功能。
管理员则主要进行后台管理,包括对分区、版块以及子版块进行增加修改删除的操作,对用户进行删除操作,对帖子进行删除操作等基本功能。
帖子是用户之间进行交流的直接手段,其中包括帖子的题目,内容,发帖人,发帖时间,所属板块信息。
模块是最先展示给用户的,包括具体的分区、板块和子版块。模块间的关系,如:同级、上下层的关系要把握好。
从这上面的信息,我们可以将数据库这样设计:
设计四个表,信息如下:
t_user用于存放用户注册信息。
t_topic用于存放版面信息。
t_threads用于存放贴子信息。
t_forums用于存放论坛类别介绍。
这四个表的详细的逻辑设计详见4.2.3.
4.2.2 数据库结构设计
E-R模型的基本概念
ER图即实体关系图,是描述实体和关系的图。ER图构建实体间的关系模型。ER图的思想是:项目所有参与者能理解ER图。ER图的构成要素是:实体,关系类型,属性。实体是现实事物的形象或者抽象描述,必须有业务意义。特性是用来描绘实体,关系存在于实体之间
(1)实体:现实世界中的各种事物;
(2)属性:事物的特性;
(3)联系:事物之间的关系。实体的关系有一对一、一对多、多对多联系。
根据系统的总体设计,我们可以看出看系统的主要实体有用户、管理员、帖子、模块这四个。
大体的概念模型设计如下图4.2.2所示
4.2.3 数据库逻辑设计
表1 t_user(用户信息表)
序号 |
名称 |
别名 |
类型 |
长度 |
1 |
id |
编号 |
int |
11 |
2 |
userName |
用户名 |
varchar |
50 |
3 |
userPW |
用户密码 |
varchar |
50 |
4 |
realName |
真实姓名 |
varchar |
50 |
5 |
email |
邮箱 |
varchar |
100 |
6 |
userType |
用户权限 |
int |
11 |
7 |
isDel |
删除标记 |
int |
11 |
该表用于存放用户注册信息
id是t_user表的主键,是表示用户的编号。
userName是用户名,是用户登录所需要的信息之一。
userPW是用户密码,和用户名一起作用于用户登录。
userPW是用户真实姓名,用于用户注册,对管理员可见。
Email是邮箱,用于注册,对管理员可见。
Usertype 是用户类型,用来表示用户的权限,我们设置usertype为0的是管理员,具有更高的权限,usertype为1的是普通用户,只能实现前端的功能。
isDel是删除标记,表示该用户是否被删除,被删除用户发表帖子依旧能显示在论坛中,所以删除用户不是讲用户从数据库中移除,而是将其删除标记置为1。
表2 t_forums(论坛类别介绍表)
序号 |
名称 |
别名 |
类型 |
长度 |
1 |
fid |
模块编号 |
int |
11 |
2 |
type |
类型 |
varchar |
10 |
3 |
name |
名字 |
varchar |
100 |
4 |
fup |
上级编号 |
int |
11 |
5 |
status |
状态 |
smallint |
6 |
该表用于存放论坛类别介绍
fid是编号,用来表示管理员最近添加或者修改删除的分区、版块、子版块。是该介绍表的主键
Type表示的是类型,用来表示管理员实施操作是对分区、版块还是子版块进行的,通过type表示区分三者。
Name是名称,表示管理员实施操作时的分区、版块及子版块的名称。
Fup表示的上级模块,默认最顶层的为0,即每个分区的上层为0,每个版块的上层对应的编号是每个分区的编号(fid),每个子版块对应的上层编号是每个模块对应的编号(fid)。
Status表示状态,即这些模块存在与否,对于存在的记为“1”不存在的记为“0”.
表3 t_topic(版面信息表)
序号 |
名称 |
别名 |
类型 |
长度 |
1 |
pid |
新帖编号 |
int |
11 |
2 |
fid |
模块编号 |
int |
11 |
3 |
author |
作者 |
varchar |
100 |
4 |
authorid |
作者id |
int |
11 |
5 |
subject |
标题 |
varchar |
100 |
6 |
view |
观看 |
int |
11 |
7 |
replies |
回复 |
int |
11 |
8 |
addtime |
发表时间 |
datetime |
0 |
该表用于存放版面信息。
Pid即新帖编号,也就是发布的新的帖子的编号,是该表的主键。
fid是编号,用来表示新帖所属的模块(子版块)。
Author表示发帖的作者名字。
Authorid 表示发帖的作者编号。
Subject 表示发表的新帖子的内容。
View 表示有多少观看量(浏览量)。
Replies 表示回复帖子的数量。
Addtime 表示帖子发布的时间。
表4 t_threads(贴子信息表)
序号 |
名称 |
别名 |
类型 |
长度 |
1 |
tid |
帖子编号 |
int |
11 |
2 |
pid |
新帖编号 |
int |
11 |
3 |
fid |
题目编号 |
int |
11 |
4 |
ftype |
类型 |
int |
11 |
5 |
author |
作者 |
varchar |
50 |
6 |
authorid |
作者id |
int |
11 |
7 |
subject |
标题 |
varchar |
100 |
8 |
Content |
内容 |
varchar |
10000 |
9 |
addtime |
发表时间 |
datetime |
0 |
10 |
tnum |
帖子数量 |
int |
11 |
该表用于存放贴子信息。
Tid 即帖子的编号,这个帖子可以表示新发布的新帖,也可以表示是回复的帖子,是该表的主键。
Pid 即新帖编号,也就是发布的新的帖子的编号,如果帖子是回复帖子的话,该编号反应的是回复帖子所属于的帖子的编号。
Fid 是编号,用来表示新帖所属的模块(子版块)。
Ftype 表示帖子的类型,如果帖子的类型标志为“0”啧表示该帖是新发布的帖子,如果帖子的类型标识为“1”,则表示该帖子是回复别的帖子的帖子。
Author表示发帖的作者。
Authorid 表示发帖作者的编号。
Subject 表示帖子的题目。
Content 存放帖子的内容。
Addtime 表示帖子发布的时间。
tnum 表示帖子的数量。
论坛中所有的操作所产生的数据如:注册,登录,浏览帖子,发表帖子,回复贴子所产生的数据都需要放到数据库中存储。数据库中以数据表来存放各个功能模块相关的数据,数据库的设计对系统非常重要
数据库设计的合理与否,安全性,稳定性这些方面都直接影响着计算机论坛的运作。一个好的数据库设计方案,能够使网站的效率事半功倍。在对数据库的设计要格外的认真的分析,考虑的要周全细致。
要确定数据库的物理结构,在关系数据库MYSQL中主要是指存取和存储结构。若物理设计满足设计要求,即可实施,否则,需要重新设计或者修改物理结构,严重时甚至需要返回逻辑设计阶段对数据模型进行修改。
数据库是众多用户共享的系统,很多时候对同一关系需要建立多条存取路径才能满足多用户的多种需求。现代技术的飞速发展使得数据库存储变更简单、方便、易行。索引法和聚簌法都可以使物理设计顺利实现。
<bean
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/db_bbs?useUnicode=true&amp;amp;amp;amp;amp;characterEncoding=utf-8">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
4.2.3 数据库连接
- 功能模块的设计与实现
功能模块是指数据说明、可执行语句等程序元素的集合,它是指单独命名的可通过名字来访问的过程、函数、子程序或宏调用。功能模块化是将程序划分成若干个功能模块,每个功能模块完成了一个子功能,再软件结构图示把这些功能模块总起来组成一个整体。以满足所要求的整个系统的功能。功能模块化的根据是,如果一个问题有多个问题组合而成,那么这个组合问题的复杂程度将大于分别考虑这个问题时的复杂程度之和.
在本动漫论坛系统中,有以下几个模块:登录模块、注册模块、发表新帖模块、回复帖子模块、用户管理模块、分区管理模块、版块管理模块、子版块管理模块这几大模块,在本章中我们来对这些模块的设计与实现进行讨论。
5.1 主界面
主界
主界面如下图5.1所示
5.2 前端
5.2.1 用户登录
用户进入主页面,若想浏览具体的帖子或者执行发帖、回复帖子等功能必须先登录。点击工具栏上“登录”按钮则进入登录页面(如图5.2所示)。该模块在用户登录要进行用户名和密码的有效性检验,查询用户表,如果该用户存在则进入主页面,如果用户表内没有用户相关信息,或者密码不正确,则不能登录成功,并弹出窗口提示用户名不存在或者密码错误,回到登录页面以便用户再次输入用户名及密码登录。
登录界面如下图5.2.1所示
主要代码:
public String login(String userName,String userPw)
{
String result="no";
try
{
String sql="from TUser where userName=? and userPw=? and isDel=0 ";
Object[] cnotallow={userName,userPw};
List userList=userDAO.getHibernateTemplate().find(sql,con);
if(userList.size()==0)
{
result="no";
}
else
{
WebContext ctx = WebContextFactory.get();
HttpSession sessinotallow=ctx.getSession();
TUser user=(TUser)userList.get(0);
session.setAttribute("user", user);
result="yes";
}
}catch(Exception e)
{
e.printStackTrace();
}
return result;
}
result="yes";
}
}catch(Exception e)
{
e.printStackTrace();
}
return result;
}
5.2.2 用户注册
若用户是第一次使用该动漫论坛,需要进行注册,点击工具栏中的“注册”按钮进入注册界面。注册成功后跳转至主界面,获得一个登陆身份,可以执行浏览帖子、发表新帖子和回复帖子等功能用户注册信息必须完善,如果两次密码不正确或者信息没有填完整,则不能完成注册并且提示错误,如“两次密码不一致”“请输入邮箱”“请输入真实姓名”,回到注册界面使用户继续完成注册。
注册界面如下图5.2.2所示
主要代码:
public String userReg(){
TUser user = new TUser();
user.setUserName(userName);
user.setUserPw(userPw);
user.setEmail(email);
user.setRealName(realName);
user.setUserType(1);
user.setIsDel(0);
userDAO.save(user);
Map sessinotallow= ActionContext.getContext().getSession();
session.put("user", user);
this.setMessage("注册成功");
this.setPath("bbs/jump.jsp");
return "succeed";
}
5.2.3 浏览帖子
一个论坛,帖子是用户之间交流最直接的手段,完成注册或者登陆后,用户可以通过选择感兴趣的分区、版块、子版块来浏览帖子。
浏览帖子如下图5.2.3所示
5.2.4 发表新帖
当用户完成登录之后,若要发布新帖,点击“新帖”发表新帖子,依次写入标题与正文内容,之后点击“发新话题”即完成新帖的发表。
发表新帖如下图5.2.4所示
5.2.5 回复帖子
对于已经发表的帖子,不论是自己发表的帖子还是别人发表的帖子都可以进行回复帖子的操作,在原贴内容最下方的“快速回复主题”中输入自己要回复的内容,点击“发表回复”即可完成回复帖子的功能。
回复新帖如下图5..2.5所示
5.3 后台管理
为了论坛能够更好的工作,后台的设计必不可少,后台是为了前台更加良好的运作而服务的。后台管理的功能只有管理员才能实现,要进入后台首先要进行管理员的登录,在后台管理中,我们有以下几个功能:分区管理:包括添加分区、编辑分区和删除分区;版块管理:包括添加版块,编辑版块和删除版块;子版块管理:包括在指定的版块下添加子版块、编辑子版块和删除子版块;帖子管理:可以查询和删除帖子;用户管理:可以查询和删除用户。
后台主界面如下图5.3.1所示:
5.3.1 管理员登录
为了进入后台进行操作,管理员首先要进行登录,管理员一开始的登录入口与普通用户相同,在进入到主界面后,管理员有“管理员登录”的选项。点击“管理员登录”即可进行到后台管理的登录操作。
管理员登录如下图5.3.2所示
5.3.2 分区管理
分区管理是将论坛的几个大的分区进行添加、修改、删除的功能。
- 添加分区:
点击“分区管理”框内的“分区添加”,管理员在“添加分区”的框内写入要新增的分区,点击“提交”即可完成分区的添加,对应数据库内新增一条信息。
添加分区如下图5.3.3所示:
主要代码:
public String toEdit(){
TForums forums = forumsDAO.findById(fid);
String txt = "";
String td = "";
List forumsList = new ArrayList();
if(typeForum.equals(forums.getType())){
//添加版块
forumsList = getForumsByType(typeGroup);//获取分区
txt = "编辑版块";
td = "上级分区";
}else if(typeSub.equals(forums.getType())){
forumsList = getForumsByType(typeForum);//获取版块
txt = "编辑子版块";
td = "上级版块";
}else{
txt = "编辑分区";
}
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("forumInfo", forums);
request.put("forumsList", forumsList);
request.put("txt", txt);
request.put("td", td);
return "toEdit";
}
- 编辑分区:
若想对现存的分区进行重命名等重新编辑的操作,单击“分区管理”,在右侧显示框内,点击“编辑”跳转至编辑分区,管理员在“编辑分区”内填入重新编辑好的分区名称,点击“提交”即完成编辑分区的功能操作,相应数据库内修改该分区的名称。
编辑分区如下图5.3.4所示:
- 删除分区:
想要删除现有的分区,单击“分区管理”在右侧显示框内,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,相应数据库内的信息也会删除。
删除分区如下图5.3.5所示
5.3.3 版块管理
版块管理是将论坛的几大分区下的版块进行添加、修改、删除的功能。
A、添加版块:
点击“版块管理”框内的“版块添加”,管理员在“添加版块”的框内写入要新增的版块,在“上级分区”内选择该板块所属的分区,完成之后点击“提交”即可完成在指定分区下版块的添加,对应数据库内新增一条信息。
添加版块如下图5.3.6所示:
B、编辑版块:
若想对现存的分区进行重命名等重新编辑的操作,单击“版块管理”,在右侧显示框内,点击“编辑”跳转至编辑版块,管理员在“编辑版块”内填入重新编辑好的版块名称,并选择其上级分区,上级分区默认是未修改版块前所属的分区,点击“提交”即完成编辑版块的功能操作,相应数据库内修改该版块的名称。
编辑版块如下图5.3.7所示:
C、删除版块:
想要删除现有的版块,单击“版块管理”在右侧显示框内,选定需要删除的版块,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,相应数据库内的信息也会删除。
删除版块如下图5.3.8所示
5.3.4 子版块管理
子版块管理是版块管理的更加细化的功能,将论坛的几大分区下的版块所拥有的子版块进行添加、修改、删除的功能。
A、添加子版块:
点击“子版块管理”框内的“子版块添加”,管理员在“添加子版块”的框内写入要新增的版块,在“上级版块”内选择该子板块所属的版块,完成之后点击“提交”即可完成在指定版块下子版块的添加,对应数据库内新增一条信息。
添加子版块如下图5.3.9所示:
B、编辑子版块:
若想对现存的分区进行重命名等重新编辑的操作,单击“子版块管理”,在右侧显示框内,点击“编辑”跳转至编辑子版块,管理员在“编辑子版块”内填入重新编辑好的子版块名称,并选择其上级版块,上级版块默认是未修改子版块前所属的分区,点击“提交”即完成编辑子版块的功能操作,相应数据库内修改该子版块的名称。
编辑子版块如下图5.3.10所示:
C、删除子版块:
想要删除现有的版块,单击“子版块管理”在右侧显示框内,选定需要删除的子版块,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,相应数据库内的信息也会删除。
删除子版块如下图5.3.11所示
5.3.5 帖子管理
后台帖子管理的功能主要包括帖子的查询和删除,在前台发布过的帖子,这里都有显示其具体内容,为了论坛的内容健康和谐,需要对不良信息的帖子进行删除操作,单击“主题管理”在右侧显示框内选定需要删除的主题,点击“删除”即可完成删除帖子的操作,与此同时对应数据库内也相应删除该信息。
帖子管理如下图5.3.12所示
5.3.6 用户管理
后台用户管理的功能主要包括查询系统用户的相关信息和删除用户,在前台注册成功的用户,在这里都有显示出来,为了论坛的秩序井井有条,对于散布不良信息或者蓄意发布无用帖子等不良行为的用户,管理员可以对用户进行删除操作。点击“用户管理”在右侧显示框内找到所删除用户的信息,点击“删除”即可删除该用户的信息,在对应的数据库中也相应的删除该记录。
用户管理如下图5.3.13所示
- 各功能模块测试
在软件开发的一系列活动中,为了保证软件的可靠性,人们研究并使用了很多方法进行分析、设计及编码实现。但是由于软件产品本身是无形的、复杂的、知识密集的逻辑产品,其中难免有各种各样的错误,因此需要通过测试查找错误,保证软件的质量。软件测试是保证软件质量的关键,它是对需求分析、设计和编码的最终复审。
软件测试在软件开发的生命周期中也扮演着重要的角色,通过测试,我们可以找出系统现在存在的漏洞,并对其进行修改,只有通过完整的测试才能将产品放心的交付给客户。在投入使用之前尽可能多的发现系统的不足,并且完善,是保障系统质量的一个重要手段。本章进行的软件测试将对注册会员,会员登录,管理员登录,浏览帖子,发帖回帖,管理员具有删除用户,管理板块,能够增加、删除、修改板块信息这些功能进行测试。
6.1 测试概述及所用方案
6.1.1软件测试概述
软件测试是以发现软件的缺陷为目的,使软件运行,并将软件不运行所产生的危险性降低到允许的范围
(1)软件测试是为了发现错误而执行程序的过程;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例是在于它能发现至今未发现的错误;
(4)一个成功的测试是发现了至今未发现的错误的测试。
测试的主要目的并不仅仅是为了找出错误,而是通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。6.1.2 测试的重要性及目的
(1)测试的重要性
在软件生命周期中,软件的测试占据着一个重要的位置,在传统的瀑布模式中,软件测试学只是处于在运行维护阶段之前,是软件产品交付给大众用户使用之前用以保证软件质量重要的一个方法。近来,软件工程界中更加趋向于一种新观点,即认为软件每一阶段中的生命周期都理应包含测试,因此使检查本阶段的成果能不能接近预期的结果目标,进而尽可能早一点发现到错误并加以改正,如果测试不是在早期阶段进行的,那么错误将延时扩散,最后常常会导致成品测试面临巨大的困难。
对于软件来讲,事实上,无论采用任何方法或者任何技术,系统中仍然会出现错误。采用新的开发方式、先进的语言、完善的开发过程,可以最大限度的降低错误的引进,但还是不能完全的杜绝软件中有可能出现的错误,这些引入的错误需要通过测试找出来,系统中错误的密度也需要通过测试来进行估量。测试是所有学科的工程的最基本的组成单元,是软件开发的一个很重要的部分。自有设计程序的那天起测试就一直跟随着。统计表明,在典型的软件开发项目中,系统测试工作量通常占开发系统总工作量的45%以上。在开发系统总的成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个系统生存期时,测试的成本比例也许能降低,但实际上维护程序的工作相当于二次开发,甚至是多次开发,其中一定又包含了很多测试的工作。
在实践中,测试软件非常困难,从而常常使我们敷衍了事或望而却步,这是因为对测试还是存在了一些错误的看法和不正确的态度,这包括:
- 难以给测试的工作人员某种成就感; 认为测试工作并不像编码和设计那样容易进行发展
- 在测试的过程中发现错位其实是一种对责任者工作的否定; 测试是以发现软件的错误为目标的,这是非建设性的,甚至还是具有破坏性的,
- 测试的工作过程非常枯燥无味,因此不足以引起我们的兴趣和爱好;
- 测试工作需要是细致而艰苦的进行;
- 一般来说,我们都对自己编写出来的程序比较盲目的自信,在发现到错误的时候,可能会顾虑别人对我们自己开发的能力的看法。
以上这几个观点对测试系统的工作进行是尤为不利的,我们必须要端正态度、澄清认识,才可能将系统产品的质量加以提高。
- 测试的目的
如果测试程序的目的是为了尽可能全面地找出系统中的错误,那么测试就必须直观的针对软件较为复杂的部分或者是前期出现错误比较多的位置。
- 系统的测试是为了检查出错误而执行程序的运行过程;
- 测试则是为了证明程序中有错误,而不是用来证明程序没有错误;
- 每一个好的测试的用例是因为它能检查到至今未出现的错误;
- 一个很成功的测试就是检查出了至今未能发现的错误的测试。
这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。
首先,测试并不仅仅是为了要找出错误。通过分析错误的分布特征和错误产生的原因,可以使项目管理者发现当前所应用系统的缺陷,以便改进。此外,这种分析还可以使我们设计出有针对性地检测方法,改善测试的有效性。其次,没有检查出错误的测试也有它的价值,完整的测试是测试质量评定的一种方式。
6.1.3 测试的步骤
类似系统开发的过程,测试工作的过程也需要分步骤来进行,每个步骤在逻辑上是前一个步骤的继续。大型系统软件一般是由若干个子系统而组成的,每以个子系统又是由若干个小的模块组成的。因此,大型系统软件的测试功过基本上由下面的几个步骤组成:
(1)模块测试 在对模块进行的测试工作步骤中所发现的经常是详细设计和编码的错误。
(2)系统测试 在对系统进行的测试工作步骤中发现的经常是软件设计时出现的错误,也有可能会发现需求说明中的出现错误。
(3)验收测试 在对验收进行的测试工作步骤中发现的经常是系统需求说明书中出现的错误。
6.1.4 测试的主要内容
我们在进行测试工作的时候为了保证系统的质量,可以将测试工作的内容分成以下所说的几个部分,即: 审查代码、集成测试、单元测试、系统测试和确认测试。
(1)单元测试
检查系统设计最小的单位(—个模块)就是单元测试,通过测试检查出用来定义该模块的功能说明不符合与实现该模块的实际功能的情况,以及编码时的错误。
(2)集成测试
我们可以将每个小的模块按照设计的需求组装起来后同时进行集成测试,集成测试的主要目的是检查与接口有关联的某些问题。假设一个模块和另一个模块可能会出现由于疏忽的问题而引起有危害的影响;把子功能模块组合起来后可能不能产生预期的主功能;有个别的看起来视乎能接受的误差却很有可能积累到不能接受的程度;全程数据结构可能有错误等。
(3)确认测试
确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,基本排除了接口的错误,接下来我们就应该进一步的检验系统软件的有效性,就是确认测试工作的任务,是将系统软件的性能和功能发挥到如用户们合理期待的一样。
(4)系统测试
完成软件设计开发以后,最后还要将它与系统中其他的部分整合运行,从性能测试、安全测试、强度测试和恢复测试等四个方面来进行系统测试。
此外对系统的单独测试主要从以下三个方面入手:
- 功能测试:测试能否满足开发的要求,能否实现了设计所描述的功能,能否让用户的需求得到满足。系统测试必须和最常用的测试是功能测试。一般来说还会以对软件正式的说明书为标准进行测试。
- 性能及强度的测试:最高实际限度的测试系统能力,即软件在某些超负荷环境下功能是否还实现的情况。
- 安全测试:对安装在系统内的安全保护机构确实能能不能保护系统进行验证,使系统不会受到各种不正常的干扰。因此针对本次开发的系统主要是测试错误的数据、无效的数据,测试权限系统和对抗非法数据干扰的能力。
6.1.5 测试方案
测试方法一般分为动态测试和静态测试。动态方法中又根据测试用例的设计方法不同,分为黑盒测试和白盒测试。
黑盒测试,也称功能测试或数据驱动测试。他不考虑程序内部结构和处理过程。把被测试程序看成一个黑盒子,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。每个功能是否都能正常使用,是否满足用户的要求。程序能否适当的接受输入数据并产生正确的输出信息,并且保持外部信息(如数据库或者文件等)的完整性。
通过黑盒测试束腰发现以下错误:
- 是否有不正确或者遗漏的功能;
- 在接口上能否正确的接受输入数据,能否产生正确的输出信息;
- 访问外部信息是否有错;
- 性能上是否满足要求;
- 界面是否有错,是否美观、友好。
白盒测试,也称结构测试或逻辑驱动测试。白盒测试法与黑盒测试法不同,测试人员将程序视为一个透明的白盒子,测试人员需要了解程序的内部结构和处理过程,以检查处理过程的细节为基础,要求对程序的结构特性做到一定程度的覆盖,对程序中的所有逻辑路径进行检测,并检验内部控制结构是否有错,确定实际的运行状态与预期的状态是否一致。
在对动漫论坛系统的功能测试中,我们选用的是黑盒测试。将对前端功能:注册会员,会员登录,管理员登录,浏览帖子,发帖回帖,后台功能:删除用户,管理板块:能够增加、删除、修改板块信息,管理分区:添加、修改、删除分区,管理子版块:添加、删除、修改子版块,管理主体:浏览和删除主题这些功能进行测试。
6.1.6测试设计
(1)单一功能模块测试要求:
表5 单元测试用例表
测试编号 |
测试项目 |
输入条件 |
预期结果 |
1 |
用户注册 |
用户名、密码等数据项全部符合要求两次输入密码不一致两次密码一致,但未输入邮箱没有输入真实姓名什么都不输入,直接点击“提交” |
注册成功弹出“两次密码不一致”,注册失败弹出“请输入邮箱”,注册失败弹出“请输入真实姓名”,注册失败弹出“请输入用户名”,注册失败 |
2 |
用户登录 |
用户名、密码正确用户名错误、密码正确用户名存在、密码错误用户名、密码均错误 |
登录成功B、C、D.弹出“用户名或密码错误”,登录失败 |
3 |
管理员登录 |
用户名、密码正确用户名错误、密码正确用户名正确、密码错误用户名、密码均错误 |
登录成功B、C、D.弹出“用户名或密码错误”,登录失败 |
4 |
发帖测试 |
用户或者管理员都可以进行发布帖子的操作。点击“新帖”,发表内容进行测试。 |
发布帖子成功 |
5 |
回帖测试 |
用户或者管理员在相应的帖子下面进行回复操作,点击“发表回复”进行提交。 |
回复帖子成功 |
6 |
模块管理测试 |
管理员可以对分区模块进行添加、编辑、删除的功能。 |
添加模块成功编辑模块成功删除模块成功 |
7 |
用户管理测试 |
管理员对用户进行删除操作,打开用户管理界面,选定要删除的用户进行删除操作。 |
删除用户成功 |
- 多功能模块组合测试要求:
表6 多功能模块组合测试表
编号 |
测试项目 |
预期结果 |
1 |
登录完成后跳转至用户主界面 |
可以回到用户主界面 |
2 |
注册完成后自动跳转至改注册用户的主界面 |
跳转成功 |
3 |
通过主界面可以选择浏览的专区或者帖子进行浏览 |
可以浏览 |
4 |
发帖后可以显示在该所属分区下 |
可以显示 |
5 |
在一个帖子中回复,回复内容显示在帖子下评论区 |
可以显示 |
6 |
点击“退出”回到最开始的主界面 |
可以回到最开始界面 |
7 |
点击“管理员登录”跳转至后台登录界面 |
可以跳转至该界面 |
8 |
进行模块的添加、修改和删除操作并在后台管理和用户界面显示出来操作之后的模块 |
可以显示 |
9 |
管理员选定用户,对其进行删除操作 |
用户被删除 |
- 系统整体测试要求:
表7 系统整体测试表
编号 |
测试项目 |
预期测试评价 |
1 |
各功能均实现 |
可以实现 |
2 |
运行和响应时间较快 |
响应较快 |
3 |
界面美观、友好、易于操作 |
是 |
6.2前端功能测试
6.2.1 登录功能测试
在用户登录模块测试中,涉及到用户名和密码两项数据,我们用以下的数据来测试
- (已经注册成功的数据,用户名、密码正确)用户名:owee 密码:123456
- (已经注册成功的数据,密码不正确)用户名:owee 密码:123
- (没有注册的数据)用户名:kochan 密码:244
进入登录界面,输入第一组数据,登录成功,如下图6.2.1所示:
进入登录界面,输入第二组数据和第三组数据,登录均不成功,并弹出错误提示,具体情况如下图6.2.2所示:
6.2.2 注册功能测试
在用户注册测试模块中,涉及以下几项数据:用户名、密码、邮箱以及真实姓名,且均为必填项,其中密码两次输入须保持一致,针对用户名、密码、确认密码、email、真实姓名这几项内容,我们选用以下数据来进行测试:
- kochan 244 244 kochan@qq.com D本K一
- Onno 12345 123 onno@163.com 面包
- Onno 12345 12345 (null) 面包
- Onno 12345 12345 onno@163.com (null)
进入注册界面,将第一组数据填入,第一组数据信息完整且两次密码相同,符合注册所需条件,因此注册成功,如下图6.2.1所示:
进入注册界面,将第二组数据填入,第二组数据中密码,与确认密码框内填入的密码不相同,注册失败,弹出下列窗口,如下图6.2.2所示:
进入注册界面,将第三组数据填入,第三组数据中两次密码相同但没有填入邮箱,注册失败,弹出下列窗口,如下图6.2.3所示:
进入注册界面,将第四组数据填入,第四组数据中密码,两次密码相同且邮箱正确但没有填入真实姓名,注册失败,弹出下列窗口,如下图6.2.4所示:
6.2.3 发帖功能测试
进入主页,依次进入发帖所在的分区、版块、和版块下的子版块中,点击“新帖”发表新帖子,依次写入标题与正文内容,之后点击“发新话题”即完成新帖的发表,所发表的帖子就是该子版块中的帖子,如下图6.2.5所示:
点击“发新话题”发表新帖子,新帖子将出现在刚刚所处于的子版块中,如下图6.2.6所示:
6.2.4 回复帖子测试
在浏览的帖子下方“快速回复主题”中输入自己要回复的内容,点击“发表回复”即可完成回复帖子的功能,该回复的帖子将在主题帖下方显示出来,如下图6.2.7所示:
6.3后台功能测试
6.3.1 管理员登录测试
管理员为了进入后台进行操作,管理员首先要进行登录,管理员的登录入口与普通用户相同,在进入到主界面后,点击“管理员登录”即可进行到后台管理的登录操作,在该功能测试中涉及到两个内容,分别是用户名、密码,我们将采用以下三组数据来进行测试。
- 用户名:admin 密码:1
- 用户名:admin 密码:2
- 用户名:owee 密码:123456
首先利用管理员的用户名和密码进行常规登录,在主页面中点击“管理员登录”进入管理员登录界面,输入第一组数据,登录后台成功,如下图6.3.1所示:
首先利用管理员的用户名和密码进行常规登录,在主页面中点击“管理员登录”进入管理员登录界面,输入第二组数据,由于密码错误,登录失败,如下图6.3.2所示:
首先利用管理员的用户名和密码进行常规登录,在主页面中点击“管理员登录”进入管理员登录界面,输入第三组数据,由于用户名不是admin,即用户权限不支持进行后台管理登录,登录失败。(如上图6.3.2所示)
6.3.2 分区管理测试
- 分区添加
点击“分区管理”框内的“分区添加”,管理员在“添加分区”的框内写入要新增的分区,点击“提交”即可完成分区的添加,我们在“添加分区”内添加“同好专区”,单击“提交”,如下图6.3.3所示,分区中多了“同好专区”这一分区。
- 分区编辑
单击“分区管理”,在右侧显示框内,点击“编辑”跳转至编辑分区,管理员在“编辑分区”内填入重新编辑好的分区名称,点击“提交”即完成编辑分区的功能操作。本次我们选择对“同好专区”进行编辑,点击“同好专区”右侧的“编辑”将“同好专区”修改为“吐槽专区”,点击提交,如下图6.3.4所示,“同好专区”已经被修改为“吐槽专区”。
- 分区删除
想要删除现有的分区测试,单击“分区管理”在右侧显示框内,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,本次我们点击“吐槽专区”右侧的“删除按钮”,确定删除后如下图6.3.5所示,“吐槽专区”已经被删除。
6.3.3 版块管理测试
A、添加版块:
点击“版块管理”框内的“版块添加”,管理员在“添加版块”的框内写入要新增的版块,在“上级分区”内选择该板块所属的分区,完成之后点击“提交”即可完成在指定分区下版块的添加,对应数据库内新增一条信息。我们选择在“九重天动漫”分区下添加版块“活动专区”提交后发现在该分区下新增了“活动专区”版块,如下图6.3.6所示:
B、编辑版块:
若想对现存的分区进行重命名等重新编辑的操作,单击“版块管理”,在右侧显示框内,点击“编辑”跳转至编辑版块,管理员在“编辑版块”内填入重新编辑好的版块名称,并选择其上级分区,上级分区默认是未修改版块前所属的分区,点击“提交”即完成编辑版块的功能操作,我们将之前添加“活动专区”版块进行编辑,改为“近期活动”编辑版块如下图6.3.7所示:
C、删除版块:
想要删除现有的版块,单击“版块管理”在右侧显示框内,选定需要删除的版块,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,我们将刚刚修改过的“近期活动”删除,执行操作之后,版块版块如下图6.3.8所示:
6.3.4 子版块管理测试
A、添加子版块:
点击“子版块管理”框内的“子版块添加”,管理员在“添加子版块”的框内写入要新增的版块,在“上级版块”内选择该子板块所属的版块,完成之后点击“提交”即可完成在指定版块下子版块的添加,我们在“动漫公社”版块下选择添加子版块“银魂”造作完成之后如下图6.3.9所示:。
B、编辑子版块:
若想对现存的分区进行重命名等重新编辑的操作,单击“子版块管理”,在右侧显示框内,点击“编辑”跳转至编辑子版块,管理员在“编辑子版块”内填入重新编辑好的子版块名称,并选择其上级版块,上级版块默认是未修改子版块前所属的分区,点击“提交”即完成编辑子版块的功能操作,我们将刚刚添加的子版块“银魂”修改为“鬼灯的冷彻”如下图6.3.10所示:。
C、删除子版块:
想要删除现有的版块,单击“子版块管理”在右侧显示框内,选定需要删除的子版块,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,我们将刚刚修改过的子版块“鬼灯的冷彻”删除,子版块如下图6.3.11所示:
6.3.5 主题管理测试
后台帖子管理的功能主要包括帖子的查询和删除,在前台发布过的帖子,这里都有显示其具体内容,为了论坛的内容健康和谐,需要对不良信息的帖子进行删除操作,单击“主题管理”在右侧显示框内选定需要删除的主题,点击“删除”即可完成删除帖子的操作,我们选择刚刚发表的新帖子“九重天十周年社庆宣传第一弹”进行删除操作,完成之后帖子如下图6.3.12所示
6.3.5 用户管理测试
测试方法后台用户管理的功能主要包括查询系统用户的相关信息和删除用户,在前台注册成功的用户,在这里都有显示出来,为了论坛的秩序井井有条,对于散布不良信息或者蓄意发布无用帖子等不良行为的用户,管理员可以对用户进行删除操作。点击“用户管理”在右侧显示框内找到所删除用户的信息,点击“删除”即可删除该用户的信息,我们对刚刚注册的用户kochan进行删除操作,操作完成后用户如下图6.3.13所示:
6.4测试结果及总结
(1)上述测试用例及结果总结
- 前台测试总结
表8 登录功能测试表
测试序号 |
用户名 |
密码 |
测试结果 |
1 |
owee |
123456 |
成功 |
2 |
owee |
123 |
失败 |
3 |
kochan |
244 |
失败 |
表9 注册功能测试
序号 |
用户名 |
密码 |
确认密码 |
email |
真实姓名 |
测试结果 |
1 |
Kochan |
244 |
244 |
kochan@qq.com |
D本K一 |
成功 |
2 |
onno |
12345 |
123 |
onno@163.com |
面包 |
密码不一致 |
3 |
onno |
12345 |
12345 |
面包 |
邮箱为空 |
|
4 |
onno |
12345 |
12345 |
onno@163.com |
真名为空 |
- 后台测试总结
表10 管理员登录功能测试表
测试序号 |
用户名 |
密码 |
测试结果 |
1 |
admin |
1 |
成功 |
2 |
admin |
admin |
用户名或密码错误 |
3 |
owee |
123456 |
用户名或密码错误 |
- 测试总结
经过上述的测试阶段之后,软件项目的功能大体上满足了用户的对项目的需求,测试工作宣告结束,在整个测试过程中,发现了软件项目中存在很多错误,并及时得到改正,减少了很多不必要的麻烦,使软件项目可以尽可能的完善。通过这次软件测试的经验,我深刻体会到软件测试的重要性,在以后的工作中,我 一定要重视并积极的完成测试,让自己的项目更加可靠、安全。
结束语
随着互联网的发展以及国家对动漫展业的大力支持,我国动漫产业取得了飞速发展。作为最先用于传播讯息的供人们交流的平台之一,直到今天论坛也在发挥其功能。依旧是爱好者们交流、共享信息、分享资源必不可少的平台。
JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。因此本论坛采用JSP技术开放能满足这种需求。
在进行毕业设计的这段时间,我对相关的专业知识有了进一步的了解,实现了学以致用。本次毕业设计到此已经顺利结束,通过这次的毕业设计,我学到了很多东西。在之前的学习生活中内我学习了很多的课程及编程语言,从最初始的C语言到稍微深入一点的C++,JAVA,数据库系统概论等等,虽然通过学习对这些课程有所了解和掌握,但也只是对理论知识的理解阶段,对知识的掌握还不够全面和熟练不能进行的编程开发,更不用说真正应用于实践设计开发,而且并不能真正独立的开发出一个完整的应用于实际的系统。通过这次的毕业设计,我需要学习不仅仅是Java语言和JSP技术,其它很多方面的知识都需要我去了解并掌握。本次的毕业设计也存着许多的问题和不足,只能说是完成了论坛的基本功能,与真正运行着的几大动漫论坛相比,是难以望其项背的。从中也反映出了我们的学习之路是无止境的。
虽然,毕业设计只有短暂的几个月,但却使我充分认识到自身还存在很多不足的地方,还需要不断的努力来充实自己、完善自己,只有这样才能学无止境,以求得更大的发展。
参考文献
- 耿乡义. JSP基础教程[M]. 北京:清华大学出版社,2004:101-103.
- 孙卫琴、李洪成.Tomat与Java Web开发技术详解[M]. 北京:电子工业出版社,2004:73-78.
- 赛奎春.JSP信息系统开发实例精选[M]. 北京:机械工业出版社,2006:66-72.
- 张金霞.HTML网页设计参考手册[M]. 北京:清华大学出版社,2006.
- 曹淑琴.基于JSP的网站建设[J]. 华北科技学院报,2007(2).
- 李振捷.JSP网站开发经典模块与实例精讲[M]. 北京:电子业出版社,2006.
- 王艳霞,陈长生.基于JSP的BBS论坛设计[J].才智,2010(25):90-91
[8] JH Goto,ML Puterman. Coffee, Tea, or ...?: A Markov Decision Process Model for Airline Meal Provisioning ;《Transportation Science》, 2004, 38(1):107-118
[9] XD Li,CS Poon,SC Lee,SS Chung,F Luk. Waste reduction and recycling strategies for the in-flight services in the airline industry; 《Resources Conservation & Recycling》, 2003, 37(2):87-99
[10] L Wang,B Liu,LU Minyan. A Modeling Language Based on UML for Modeling Simulation Testing System of Avionic Software; 《Chinese Journal of Aeronautics》, 2011, 24(2):181-194
致 谢
转眼间,大学四年已经要结束了,回首过去几年的校园生活,交到了志同道合的朋友,为了共同的目标一起努力,学到了许许多多,在各个方面都得到了发展、提高。在这四年来感谢学校的老师们无私的传授给我们知识,教会了我们懂得如何做人,如何依靠自己去完成一件事情。软件工程这个学科的毕设任务很繁重,不论是设计的完成还是论文的编写都需要费一番功夫。但是通过这个过程,我们又进一步的了解了这门学科,通过这段时间的学习,对原来学习的知识有了更好的了解。
在这次毕业选题中,我很幸运地选到了自己一直以来都很喜欢的动漫方向的题目。在这几年来,国内大力支持动漫产业的发展,能在自己毕业的时候将自己所学的专业知识与自己长年的爱好相结合是一件令人高兴的事情。作为这个高速发展的时代的高校毕业生,我们要跟随发展的潮流,学习和掌握当代科学技术知识,将自己所学到的知识与社会的发展融合起来,只有这样才能接受来自社会的挑战,才能适应社会发展的要求。
本次毕业设计是在我的两位导师——XX教授和XX老师的悉心指导下完成的两位导师严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢老师对我的关心和指导。同时也谢谢在此期间给予我帮助的同学们。
外文原文
JSP Profile
JSP (JavaServer Pages) is initiated by Sun Microsystems, Inc., with many companies to participate in the establishment of a dynamic web page technical standards. JSP technology somewhat similar to ASP technology, it is in the traditional HTML web page document (*. htm, *. html) to insert the Java programming paragraph (Scriptlet) and JSP tag (tag), thus JSP documents (*. jsp). Using JSP development of the Web application is cross-platform that can run on Linux, is also available for other operating systems. JSP technology use the Java programming language prepared by the category of XML tags and scriptlets and produce dynamic pages package processing logic. Page also visit by tags and scriptlets exist in the services side of the resources of logic. JSP page logic and web page design and display separation, support reusable component-based design, Web-based application development is rapid and easy.
Web server in the face of visits JSP page request, the first implementation of the procedures of, and then together with the results of the implementation of JSP documents in HTML code with the return to the customer. Insert the Java programming operation of the database can be re-oriented websites, in order to achieve the establishment of dynamic pages needed to function.
JSP and Java Servlet, is in the implementation of the server, usually returned to the client is an HTML text, as long as the client browser will be able to visit. JSP 1.0 specification of the final version is launched in September 1999, December has introduced 1.1 specifications. At present relatively new is JSP1.2 norms, JSP2.0 norms of the draft has also been introduced.
JSP pages from HTML code and Java code embedded in one of the components. The server was in the pages of client requests after the Java code and then will generate the HTML pages to return to the client browser. Java Servlet JSP is the technical foundation and large-scale Web application development needs of Java Servlet and JSP support to complete. JSP with the Java technology easy to use, fully object-oriented, and a platform-independent and secure, mainly for all the characteristics of the Internet.
JSP technology strength
(1) time to prepare, run everywhere. At this point Java better than PHP, in addition to systems, the code not to make any changes.
(2) the multi-platform support. Basically on all platforms of any development environment, in any environment for deployment in any environment in the expansion. Compared ASP / PHP limitations are obvious.
(3) a strong scalability. From only a small Jar documents can run Servlet / JSP, to the multiple servers clustering and load balancing, to multiple Application for transaction processing, information processing, a server to numerous servers, Java shows a tremendous Vitality.
(4) diversification and powerful development tools support. This is similar to the ASP, Java already have many very good development tools, and many can be free, and many of them have been able to run on a variety of platforms under.
JSP technology vulnerable
(1) and the same ASP, Java is the advantage of some of its fatal problem. It is precisely because in order to cross-platform functionality, in order to extreme stretching capacity, greatly increasing the complexity of the product.
(2) Java's speed is class to complete the permanent memory, so in some cases by the use of memory compared to the number of users is indeed a "minimum cost performance." On the other hand, it also needs disk space to store a series of. Java documents and. Class, as well as the corresponding versions of documents.
JSP six built-in objects:
request, response, out, session, application, config, pagecontext, page, exception.
1. Request for:
The object of the package of information submitted by users, by calling the object corresponding way to access the information package, namely the use of the target users can access the information.
2. Response object:
The customer's request dynamic response to the client sent the data.
3. session object
1. What is the session: session object is a built-in objects JSP, it in the first JSP pages loaded automatically create, complete the conversation of management.
From a customer to open a browser and connect to the server, to close the browser, leaving the end of this server, known as a conversation. When a customer visits a server, the server may be a few pages link between repeatedly, repeatedly refresh a page, the server should be through some kind of way to know this is the same client, which requires session object.
2. session object ID: When a customer's first visit to a server on the JSP pages, JSP engines produce a session object, and assigned a String type of ID number, JSP engine at the same time, the ID number sent to the client, stored in Cookie, this session objects, and customers on the establishment of a one-to-one relationship. When a customer to connect to the server of the other pages, customers no longer allocated to the new session object, until, close your browser, the client-server object to cancel the session, and the conversation, and customer relationship disappeared. When a customer re-open the browser to connect to the server, the server for the customer to create a new session object.
4. application target
1. What is the application:
Servers have launched after the application object, when a customer to visit the site between the various pages here, this application objects are the same, until the server is down. But with the session difference is that all customers of the application objects are the same, that is, all customers share this built-in application objects.
2. application objects commonly used methods:
(1) public void setAttribute (String key, Object obj): Object specified parameters will be the object obj added to the application object, and to add the subject of the designation of a keyword index.
(2) public Object getAttribute (String key): access to application objects containing keywords for.
Benefits of JSP
Fundamentally, any task JSP pages can perform could also be accomplished by servlets. However, this underlying equivalence does not mean that servlets and JSP pages are equally appropriate in all scenarios. The issue is not the power of the technology, it is the convenience, productivity, and maintainability of one or the other. After all, anything you can do on a particular computer platform in the Java programming language you could also do in assembly language. But it still matters which you choose..
JSP provides the following benefits over servlets alone:
• It is easier to write and maintain the HTML. Your static code is ordinary HTML: no extra backslashes, no double quotes, and no lurking Java syntax.
• You can use standard Web-site development tools. Even HTML tools that know nothing about JSP can be used because they simply ignore the JSP tags
• You can divide up your development team. The Java programmers can work on the dynamic code. The Web developers can concentrate on the presentation layer. On large projects, this division is very important. Depending on the size of your team and the complexity of your project, you can enforce a weaker or stronger separation between the static HTML and the dynamic content.
Now, this discussion is not to say that you should stop using servlets and use only JSP instead. By no means. Almost all projects will use both. For some requests in your project, you will use servlets. For others, you will use JSP. For still others, you will combine them with the MVC architecture . You want the appropriate tool for the job, and servlets, by themselves, do not complete your toolkit
Advantages of JSP Over Competing Technologies
A number of years ago, Marty was invited to attend a small 20-person industry roundtable discussion on software technology. Sitting in the seat next to Marty was James Gosling, inventor of the Java programming language. Sitting several seats away was a high-level manager from a very large software company in Redmond, Washington. During the discussion, the moderator brought up the subject of Jini, which at that time was a new Java technology. The moderator asked the manager what he thought of it, and the manager responded that it was too early to tell, but that it seemed to be an excellent idea. He went on to say that they would keep an eye on it, and if it seemed to be catching on, they would follow his company's usual "embrace and extend" strategy. At this point, Gosling lightheartedly interjected "You mean disgrace and distend."
Now, the grievance that Gosling was airing was that he felt that this company would take technology from other companies and suborn it for their own purposes. But guess what? The shoe is on the other foot here. The Java community did not invent the idea of designing pages as a mixture of static HTML and dynamic code marked with special tags. For example, ColdFusion did it years earlier. Even ASP (a product from the very software company of the aforementioned manager) popularized this approach before JSP came along and decided to jump on the bandwagon. In fact, JSP not only adopted the general idea, it even used many of the same special tags as ASP did.
So, the question becomes: why use JSP instead of one of these other technologies? Our first response is that we are not arguing that everyone should. Several of those other technologies are quite good and are reasonable options in some situations. In other situations, however, JSP is clearly better. Here are a few of the reasons.
Versus .NET and Active Server Pages (ASP)
.NET is well-designed technology from Microsoft. http://ASP.NET is the part that directly competes with servlets and JSP. The advantages of JSP are twofold
First, JSP is portable to multiple operating systems and Web servers; you aren't locked into deploying on Windows and IIS. Although the core .NET platform runs on a few non-Windows platforms, the ASP part does not. You cannot expect to deploy serious http://ASP.NET applications on multiple servers and operating systems. For some applications, this difference does not matter. For others, it matters greatly.
Second, for some applications the choice of the underlying language matters greatly. For example, although .NET's C# language is very well designed and is similar to Java, fewer programmers are familiar with either the core C# syntax or the many auxiliary libraries. In addition, many developers still use the original version of ASP. With this version, JSP has a clear advantage for the dynamic code. With JSP, the dynamic part is written in Java, not VBScript or another ASP-specific language, so JSP is more powerful and better suited to complex applications that require reusable components
You could make the same argument when comparing JSP to the previous version of ColdFusion; with JSP you can use Java for the "real code" and are not tied to a particular server product. However, the current release of ColdFusion is within the context of a J2EE server, allowing developers to easily mix ColdFusion and servlet/JSP code.
Versus PHP
PHP (a recursive acronym for "PHP: Hypertext Preprocessor") is a free, open-source, HTML-embedded scripting language that is somewhat similar to both ASP and JSP. One advantage of JSP is that the dynamic part is written in Java, which already has an extensive API for networking, database access, distributed objects, and the like, whereas PHP requires learning an entirely new, less widely used language. A second advantage is that JSP is much more widely supported by tool and server vendors than is PHP.
Versus Pure Servlets
JSP doesn't provide any capabilities that couldn't, in principle, be accomplished with servlets. In fact, JSP documents are automatically translated into servlets behind the scenes. But it is more convenient to write (and to modify!) regular HTML than to use a zillion println statements to generate the HTML. Plus, by separating the presentation from the content, you can put different people on different tasks: your Web page design experts can build the HTML by using familiar tools and either leave places for your servlet programmers to insert the dynamic content or invoke the dynamic content indirectly by means of XML tags.
Does this mean that you can just learn JSP and forget about servlets? Absolutely not! JSP developers need to know servlets for four reasons:
1. JSP pages get translated into servlets. You can't understand how JSP works without understanding servlets.
2. JSP consists of static HTML, special-purpose JSP tags, and Java code. What kind of Java code? Servlet code! You can't write that code if you don't understand servlet programming
3. Some tasks are better accomplished by servlets than by JSP. JSP is good at generating pages that consist of large sections of fairly well structured HTML or other character data. Servlets are better for generating binary data, building pages with highly variable structure, and performing tasks (such as redirection) that involve little or no output.
4. Some tasks are better accomplished by a combination of servlets and JSP than by either servlets or JSP alone.Versus JavaScript
JavaScript, which is completely distinct from the Java programming language, is normally used to dynamically generate HTML on the client, building parts of the Web page as the browser loads the document. This is a useful capability and does not normally overlap with the capabilities of JSP (which runs only on the server). JSP pages still include SCRIPT tags for JavaScript, just as normal HTML pages do. In fact, JSP can even be used to dynamically generate the JavaScript that will be sent to the client. So, JavaScript is not a competing technology; it is a complementary one.
It is also possible to use JavaScript on the server, most notably on Sun ONE (formerly iPlanet), IIS, and BroadVision servers. However, Java is more powerful, flexible, reliable, and portable.。
中文翻译
JSP简介
JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
JSP技术的强势
(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
JSP技术的弱势
(1) 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
(2) Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。
JSP六种内置对象:
request, response, out, session, application, config, pagecontext, page, exception.
一.request对象:
该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。
二.response对象:
对客户的请求做出动态的响应,向客户端发送数据。
三.session对象
1.什么是session:session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。
2.session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。
四.aplication对象
1.什么是application:
服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
2.application对象常用方法:
(1)public void setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到
application对象中,并为添加的对象指定一个索引关键字。
- public Object getAttribute(String key): 获取application对象中含有关键字的对象。
JSP的好处
从根本上,JSP页面能够执行的任何任务都可以用servler来完成。然而,这种底层的等同性并不意味着servler和JSP页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。
和单独使用servler相比,JSP提供下述好处:
JSP中HTML的编写与维护更为简单。JSP中可以使用常规的HTML:没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。能够使用标准的网站开发工具。即使对那些对JSP一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSP tags)。可以对开发团队进行划分。Java程序员可以致力于动态代码。Web开发人员可以将经理集中在表示层(presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weaker separation)和强分离(stronger separation)。
在此,这个讨论并不是让您停止使用servlets,只使用JSP。几乎所有的项目都会同时用到这两种技术。针对项目中的某些请求,您可能会在MVC构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是servlet并不能填满您的工具箱。
二、JSP相对于竞争技术的优势
许多年前,Marty受到邀请,参加一个有关软件技术的小型(20个人)研讨会.做在Marty旁边的人是James Gosling--- Java编程语言的发明者。隔几个位置,是来自华盛顿一家大型软件公司的高级经理。在讨论过程中,研讨会的主席提出了Jini的议题,这在当时是一项新的Java技术.主席向该经理询问他的想法.他继续说,他们会持续关注这项技术,如果这项技术变得流行起来,他们会遵循公司的“接受并扩充(embrace and extend)”的策略.此时, Gosling随意地插话说“你的意思其实就是不接受且不扩充(disgrace and distend)。”
在此, Gosling的抱怨显示出,他感到这个公司会从其他公司那里拿走技术,用于他们自己的目的.但你猜这次怎么样?这次鞋子穿在了另一只脚上。Java社团没有发明这一思想----将页面设计成由静态HTML和用特殊标签标记的动态代码混合组成.。ColdFusion多年前就已经这样做了。甚至ASP(来自于前述经理所在公司的一项产品)都在JSP出现之前推广了这种方式。实际上,JSP不只采用了这种通用概念,它甚至使用许多和ASP相同的特殊标签。
因此,问题变成:为什么使用JSP,而不使用其他技术呢?我们的第一反应是我们不是在争论所有的人应该做什么。其他这些技术中,有一些也很不错,在某些情况下也的确是合情合理的选择.然而,在其他情形中,JSP明显要更好一些。下面给出几个理由。
与.NET和Active Server Pages (ASP)相比.NET是Microsoft精心设计的一项技术。http://ASP.NET是与servlets和JSP直接竞争的技术。JSP的优势体现在两个方面。
首先,JSP可以移植到多种操作系统和Web服务器,您不必仅仅局限于部署在Windows 和IIS上尽管核心.NET平台可以在好几种非Windows平台上运行,但ASP这一部分不可以。您不能期望可以将重要的http://ASP.NET应用部署到多种服务器和操作系统。对于某些应用,这种差异没有什么影响。但有些应用,这种差异却非常重要。
其次,对于某些应用,底层语言的选择至关重要。例如,尽管.NET的C#语言设计优良,且和Java类似,但熟悉核心C#语法和众多工具库的程序员很少。此外,许多开发者依旧使用最初版本的ASP。相对于这个版本,JSP在动态代码方面拥有明显的优势。使用JSP,动态部分是用Java编写的,而非VBScript过其他ASP专有的语言,因此JSP更为强劲,更适合于要求组件重用的复杂应用。
当将JSP与之前版本的ColdFusion对比时,您可能会得到相同的结论。应用JSP,您可以使用Java编写“真正的代码”,不必依赖于特定的服务器产品。然而,当前版本的ColdFusion满足J2EE服务器的环境,允许开发者容易的混合使用ColdFusion和Servlet/JSP代码。
PHP(“PHP:Hypertext Preprocessor”的递归字母缩写词)是免费的、开放源代码的、HTML嵌入其中的脚本语言,与ASP和JSP都有某种程度的类似。JSP的一项优势是动态部分用Java编写,而Java已经在联网、数据库访问、分布式对象等方面拥有广泛的API,而PHP需要学习全新的、应用相对广泛的语言。JSP的第二项优势是,和PHP相比,JSP拥有极为广泛的工具和服务器提供商的支持。
原则上,JSP并没有提供Servlet不能完成的功能。实际上,JSP文档在后台被自动转换成Servlet。但是编写(和修改)常规的HTML,要比无数println语句生成HTML要方便得多。另外,通过将表示与内容分离,可以为不同的人分配不同的任务:网页设计人员使用熟悉的工具构建HTML,要么为Servlet程序员留出空间插入动态内容,要么通过XML标签间接调用动态内容。
这是否表示您只可以学习JSP,将Servlet丢到一边呢?当然不是!由于以下4种原因,JSP开发人员需要了解Servlet:
(1)JSP页面会转换成Servlet。不了解Servlet就无法知道JSP如何工作。
(2)JSP由静态HTML、专用的JSP标签和Java代码组成。哪种类型的Java代码呢?当然是Servlet代码!如果不了解Servlet编程,那么就无法编写这种代码。
(3)一些任务用Servlet完成比用JSP来完成要好。JSP擅长生成由大量组织有序的结构化HTML或其他字符数据组成的页面。Servlet擅长生成二进制数据,构建结构多样的页面,以及执行输出很少或者没有输出的任务(比如重定向)。
(4)有些任务更适合于组合使用Servlet和JSP来完成,而非单独使用Servlet或JSP。
JavaScript相比,JavaScript和Java编程语言完全是两码事,前者一般用于在客户端动态生成HTML,在浏览器载入文档时构建网页的部分内容。这是一项有用的功能,一般与JSP的功能(只在服务器端运行)并不发生重叠。和常规HTML页面一样,JSP页面依旧可以包括用于JavaScript的SCRIPT标签。实际上,JSP甚至能够用来动态生成发送到客户端的JavaScript。因此,JavaScript不是一项竞争技术,它是一项补充技术。
JavaScript也可以用在服务器端,最因人注意的是SUN ONE(以前的iPlanet)、IIS和BroadVision服务器。然而,Java更为强大灵活、可靠且可移植。