博客管理系统

摘    要

    博客简单来说就是“网络日记”,本课题研究的博客网站就是可以让用户零成本、较少维护地创建自己的网络媒体。本课题开发实现博客的通用功能:发表博文,上传图片,管理博客,阅读博客,发表评论,游戏娱乐等几大功能。

    本课题遵循了“放眼于系统,按功能分块”的原则,巧妙地将开发一个完整的博客网站的过程分解成各个模块,然后逐一的实现各个功能模块,最后把所有的模块连在一起就构成了一个完整的博客系统。

    本系统的页面设计主要是在Dreamweaver环境下完成的,通过引入JSP技术和数据库技术使得博客系统的动态功能得以很好的实现,本系统的成功开发可以说是Dreamweaver结合JSP技术开发动态网站的成功体现。

关键词博客;JSP;数据库;网站

毕 业 论 文 外 文 摘 要

Abstract

    This project studies a web blog, with which users can create their own web media without any cost and any maintenance. It develops and realizes commonplace functions of a blog, such as publishing blogs, uploading pictures, administrating blogs, reading blogs, publishing comments ,game entertainment and so forth.    This project goes with the principle that we regard the system as a whole but break up the whole into parts when realizing it. So we divide the whole system into several parts called modules and then we develop the system one by one and finally we combine all the parts together and get a complete blog system.    The system is developed mainly with Dreamweaver. And with the adoption of database technology and JSP, dynamic functions of the blog system perfectly come true. We can see the successful development of this system as a reflection of excellent combination of Dreamweaver and JSP technology when developing dynamic websites.

Keywords:BlogJSP;Database;Website

目    录

摘要

Abstract

目录

第1章 前言 1

1.1 课题的研究背景与意义 1

1.1.1 课题的研究背景 1

1.1.2 课题的研究意义 1

1.2 课题定义和简介 2

1.2.1 课题的定义 2

1.2.2 课题的简介 2

1.3 课题调研与可行性分析 3

1.3.1 课题调研 3

1.3.2 可行性分析 3

1.4 论文各章内容介绍 4

第2章 系统需求分析 5

2.1 需求调研 5

2.2 业务流程分析 6

2.3 系统数据流图 6

2.4 系统功能需求分析 8

2.4.1 功能划分 8

2.4.2 功能描述 8

2.4.3 创建用例图 10

2.4.4 详细描述用例 11

2.5 数据字典 13

第3章 系统设计 14

3.1 系统总体结构设计 14

3.2 系统数据模型设计 14

3.3 数据库表的设计 16

3.4 系统开发与运行环境确定 18

3.4.1 系统开发环境 18

3.4.2 系统运行环境 19

3.5 系统实现的若干关键技术 19

3.5.1 JSP技术概论 19

3.5.2 JSP工作原理 20

3.5.3 JDBC技术 20

3.5.4 数据库连接函数 21

第4章 详细设计 24

4.1 系统登录模块简介 24

4.2 模块体系结构 24

4.3 运行图 25

4.4 设计说明 25

4.4.1 新用户注册子模块 25

4.4.2 管理员登录子模块 27

第5章 博客管理系统模块 29

5.1 博文管理子模块 29

5.1.1 模块简介 29

5.1.2 模块体系结构 29

5.1.3 设计说明 30

5.2 游戏管理子模块 32

5.2.1 模块简介 32

5.2.2 模块体系结构 32

5.2.3 设计说明 32

第6章 博客浏览系统模块 36

6.1 博文信息管理模块 36

6.1.1 模块简介 36

6.1.2 模块体系结构 26

6.1.3 设计说明 26

6.2 好友信息管理模块 39

6.2.1 模块简介 39

6.2.2 模块体系结构 39

6.2.3 设计说明 29

第7章 系统测试 43

7.1 测试技术 43

7.1.1 单元测试 43

7.1.2 组合测试 44

7.1.3 确认测试 44

7.1.4 系统测试 44

7.1.5 用户验收测试 44

7.2 单元测试 45

7.2.1过程登录流图 45

7.2.2 确定路径 46

7.3 测试结论 46

结论 48

参考文献 50

致谢 51

第1章 前    言

1.1 课题的研究背景与意义

1.1.1 课题的研究背景

    第一批中文博客是在2002年出现的,早些时候博客只是一个新的网络名词并无特殊之处,就在不经意间,博客竟如雨后春笋般冒出来,博得越来越多网民的欢心,并在互联网上引发了一股博客热潮。

    博客的发展现状呈现出以下特点:发展速度惊人;从精英向大众人群迅猛扩展;博客人群主体更加多元化;博客服务商激增,出现群雄争霸局面;博客资源争夺激烈,博客服务商面临市场洗牌[1]。

    博客发展到今天已经取得了相当规模的成就,以新浪、搜狐、网易为代表的三大门户网站都已经推出了自己的博客服务,还有一些著名的专业博客网站都已经对博客资源展开了激烈的争夺。在规模扩大的同时博客技术也在不断的进步和完善,目前博客技术已经取得的成果包括:发表博文,发表评论,相册管理,游戏娱乐等一些通用功能。

    但是现在的博客技术还不够完善,要想永久确立它的网络地位必须不断开发并推出新的博客技术来满足人们的需要。本课题的研究正是基于这样一种追求博客新技术而展开的。

1.1.2 课题的研究意义

    从上面的背景知识我们已经了解到博客在互连网上已经具有相当的规模,可以说它已经被人们所接受,博客改变着人们的交流方式、情感体验和表达形态,改变着人们聚散的方式,它无限放大着人们对于未来信息世界的预想,它影响着整个中国互联网的发展走向,甚至可能在今后一个时期,波及或影响着现实社会的民主决策过程。

    无疑博客这样一种影响力颇大的媒介将有利于我们好的思想好的事物的传播,有利于社会的进步。所以我们要把这种好的影响力发挥到最大,怎样提高博客影响力必然就要通过开发博客新技术来获得更多人的认可。

    一旦博客研究取得关键性技术的新突破,将会在网络世界掀起一股前所未有的博客浪潮,介时将会有更多的人拥有自己的博客,博客影响力也将倍增。这时通过博客一些新的科学技术将更容易推广,好的政策好的思想也会更加容易传播,如果这样,相信社会的进步将会是显而易见的。

1.2 课题定义和简介

1.2.1 课题的定义

    本课题开发的博客网站就是为用户提供一个网络空间,用户可以在这个空间上发表博文、上传图片、添加好友、游戏娱乐等操作。同时为访问者提供浏览博文、浏览图片、发表评论的权力,并通过系统管理员对整个系统的博客账号、博客内容等进行管理。

    根据以上定义,本博客系统主要研究以下几个模块。

    1.用户信息管理:用户注册、个人资料、上传头像等。

    2.博文信息管理:博文预览和发布、博文展示、博文点评、博文维护等。

    3.好友信息管理:好友列表展示、好友更新提示、好友信息维护等。

    4.图片专辑管理:图片上传、图片的展示、图片的点评、图片信息的维护、图片权限管理等。

    5.游戏娱乐管理:游戏展示等。

1.2.2 课题的简介

    本课题主要开发以下几个功能:账号管理和验证,管理内容,阅读博文,上传图片,游戏娱乐,系统功能等。

    1.帐号管理和验证:帐号申请、账号修改、帐号停用;后台区分管理员和超级管理员,能够通过帐号正确的验证和标识用户,防止非博客用户盗用他人名义发表内容。

    2.管理内容:为每个博客用户提供博客的内容管理平台,提供博文、图片、评论、链接等信息的管理内容。

    3.阅读博文:博客首页为博客用户提供了博文分类列表,用户可以选择自己喜欢的博文专题。另外首页还包括最新博文列表。

    4.上传图片:用户可以进行图片的上传,另外图片首页为博客用户提供了博客网站好友上传的所有图片列表,用户可以选择自己喜欢的图片相册进行浏览。

    5.游戏娱乐:用户可以根据自己的喜好选择不同类型的游戏进行娱乐,增加博客网站的娱乐性,博客系统会第一时间更新当前比较流行的小游戏。

    6.系统功能:好友关键字搜索,列出该好友的信息,点击实现对该好友进行访问。

1.3 课题调研与可行性分析

1.3.1 课题调研

    为了出色的完成本课题的开发,对当前博客技术的应用状况展开了调查分析。通过对部分博客用户的调查和查阅大量的相关资料,发现博客技术从出现到现在一直在不断的发展中,博客的功能也从最初的只有简单的文章发表到现在集博文发表、评论、相册、游戏等多功能于一身[2]。有博客用户反映这些功能已经不能完全满足他们的需求,他们期待技术更成熟,功能更全面的新的博客技术的出现。

    把握博客技术的发展动态对更好的开发设计本课题有很大的帮助,在调研过程中反映出来的对博客新技术的迫切需求更加激励了我要出色的完成本课题的设计。

1.3.2 可行性分析

    本系统主要从经济可行性和技术可行性两个角度对其可行性进行分析:

    1.经济可行性

    由于本项目的特殊性,无需投入额外的设备购买及人员培训费用,所以在经济上本系统的开发是可行的。

    博客系统一旦开发成功投入运行,将会吸引很多的博客用户,网站的知名度迅速上升,访问量也会大幅度提高,到时将会带来可靠的经济效益。

    2.技术可行性

    本系统使用JSP技术进行开发,现在有很多企业及技术人员选择它来作为开发平台。因此,在技术上JSP是完全可以胜任这个平台的开发。

    使用Dreamweaver结合JSP技术已经成为现代开发动态网站的首选技术,许多已经开发成功的经典项目足以证明此技术的可行性。

    按上述两方面进行可行性分析、研究后,我们认为该项目在技术上是可行的,在经济上是合理的,可以进行开发。

1.4 论文各章内容介绍

    第一章是前言,这一章主要是对本次毕业设计所开发的系统进行问题的定义,通过问题的定义明白需要做些什么,并且对开发内容简单的介绍了一下,同时本章还对课题的研究背景与研究意义进行分析,对开发本系统的可行性分析还有对论文各章内容的简要介绍。

    第二章是系统需求分析。主要内容是系统的性能要求及功能需求分析,最后按面向对象的分析方式给出了系统的用例模型、流程图以及数据字典。

    第三章是系统设计部分,本章主要针对系统进行总的体系结构的设计,这部分设计是从用例模型及活动图导出的;系统数据模型设计包括了核心的E-R图、关系模型和一些重要的数据表;最后确定了系统的开发和运行环境以及开发本系统所涉及的一些关键技术。

    第四章介绍的是系统的数据库连接文件,以后系统需要连接数据库的只要直接调用这个文件就可以了。

    第五章从这章将开始本系统的详细设计阶段,本章介绍的是系统登录模块,包括这个模块的体系结构,运行图,以及代码设计中的要点。

    第六章介绍的博客管理系统模块,同样通过模块体系结构,运行流程图和代码设计分别对博文管理和游戏管理两个子模块进行了比较详细的设计。

    第七章介绍的是博客浏览系统模块,包括这个模块的体系结构、运行流程图和详细代码设计以及好友管理模块的关键代码描述。

第八章介绍的是系统测试,为了保证系统能够长期有效的运行,这里对系统进行了测试。

第2章 系统需求分析

    根据第一章所定义的课题研究方向及目标,本章将对系统功能进行具体的需求分析,具体分析博客网站所要实现的功能及欲达到的效果。

2.1 需求调研

    从需求调查开始博客系统的研究,我们决定从下面几个来源进行收集资料。

    主流博客网站:对当前人气高的博客网站进行认真的调查。

    博客用户:对正在使用博客的用户进行面对面的探访,请教他们对博客的认识和使用意见。

    注册一个自己的博客:最好的需求调研就是深入到业务过程中,在主流博客网站注册自己的帐号,亲自体会博客的强大功能然后记录下来。

博客系统需求管理规划如表2-1所示。

表2-1 博客系统需求管理规划表

序号

需求分类

需求名称

描述

优先

难度

1

特征与前景

系统目标

给用户提供一个展现自我的空间

2

预算

成本控制在1万元以下

3

功能性需求

管理内容

通过博客管理系统进行博文、点评、图片、游戏的管理等

4

阅读内容

通过博客浏览系统阅读博文、评论、查看图片、访问链接等

5

非功能性需求

平台限制

基于Windows 7或Windows XP

6

操作方式

浏览器

2.2 业务流程分析

    本系统是将现代化的计算机技术与博客服务技术相结合,按照博客技术的服务流程设计完成的。为了使系统在实际运行中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下系统开发目标:

    其工作流程为:系统启动并调用默认的博客模版,所有用户登录之后浏览博客主页面,用户可以发表、上传、浏览、评论。博客系统管理员分为超级管理员和管理员,前者可以对系统管理的所有功能进行操作,后者只是不能对后台用户进行管理,并且其权限也受到超级管理员的限制,他只能在自己的权限范围内进行对博客的管理操作,主要起到协助超级管理员的作用。

    具体目标如下:

    1.操作简单、界面友好:使得用户写博客的工作更简便;许多选项包括博文分类、浏览权限等只需要点击鼠标就可以完成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。

    2.即时可见:对博客的处理(包括写入、修改)将立即在主页的对应栏目显示出来,达到“即时发布,即时见效”的功能。

    3.功能完善:不仅包括常见网站的博客功能的各个方面:写博文、浏览、删除、修改等各个方面,而且超级管理员还能进行对前后台用户的管理,对用户发表或上传的文件进行管理。

4.动态管理:对系统数据库实行动态操作,能实现对数据库信息的动态查询、动态更新和动态录入数据。

2.3 系统数据流图

本系统主要完成博客的浏览与管理的功能,因此,在逻辑上可以将系统分为博客浏览系统和博客管理系统两部分,同时,系统的所有数据都需通过一个数据库系统来实现查询、更新和输入,所以在总体上可将总系统分为博客浏览系统、博客管理系统和数据库系统三个系统,对本系统操作的数据源有博客用户和管理员两种,博客用户在博客浏览系统进行操作,管理员在博客管理系统进行操作。

根据上述对新系统的初步分析和开发目标的分析,初步分析了一套博客系统的总体流图,如图2-1所示。

图2-1 系统数据流图

由于系统数据较多现举出用户登录模块数据流图如图2-2所示。

图2-2 登录模块数据流图

2.4 系统功能需求分析

2.4.1 功能划分

     根据上一节的流程图,把系统划分成两个大的模块来完成:博客浏览系统模块和博客管理系统模块。模块划分如表2-2所示。

表2-2 模块划分表

序号

功能模块类别

功能模块

备注

1

博客浏览系统模块

用户信息管理模块

博文信息管理模块

好友信息管理模块

图片专辑管理模块

游戏娱乐管理模块

2

博客管理系统模块

博文信息管理模块

相册管理模块

好友管理模块

游戏管理模块

省市区县管理模块

大学院系管理模块

资料身份管理模块

前台用户管理模块

后台用户管理模块

系统管理模块

2.4.2 功能描述

上面两节把建立一个博客系统的流程图和功能模块的划分进行了介绍,下面将各个功能模块的功能做详细的描述,即对上述的模块功能进行设计与细化,以便我们下一步的开发。系统功能的详细描述如表2-3、2-4所示。

表2-3 博客浏览系统模块功能列表

序号

功能列表

功能明细

1

用户注册

用户注册页

2

用户登录

验证用户登录

3

账号设置

修改用户账号、密码和停用

4

首页

最新信息列表

好友博文列表

好友相册列表

最近来访列表

5

个人资料

查看、修改个人信息

6

博文功能

我的博文列表

博文详细内容页

博文评论列表

写博文,管理博文

博文分类管理

7

图片专辑

我的相册列表

相册详细内容页

相册评论列表

照片详细内容页

照片评论列表

上传照片,管理相册、照片

8

好友功能

添加、删除好友

查询好友

9

游戏功能

游戏娱乐

10

公共功能

好友关键字搜索

列出博文阅读、评论的总数

表2-4 博客管理系统模块功能列表

序号

功能列表

功能明细

1

博文管理

添加博文

查看博文

查看博文分类

2

相册管理

添加相册

查看相册

添加照片

查看照片

3

好友管理

查看好友

4

游戏管理

添加游戏

查看游戏

5

省市区县管理

添加省市区县

查看省市区县

6

大学院系管理

添加大学院系

查看大学院系

7

资料身份管理

查看资料身份

8

前台用户管理

添加前台用户

查看前台用户

9

后台用户管理

添加后台用户

查看后台用户

10

系统管理

修改密码

    有了这些功能明细后,我们就把整个系统的框架确定下来了,也就确定了系统数据的基本结构。

2.4.3 创建用例图

    后台管理员,参与了管理博客账号、登录、修改密码3个用例。

    前台用户,参与了登录、修改密码、管理博文、管理连接、管理图片5个用例。

博客系统用例如图2-3所示。

图2-3 博客系统用例图

2.4.4 详细描述用例

    用例图是系统的高层试图,仅仅是用例图还不能支撑项目组进行设计工作,对于每一个用例,都需要确定用户如何使用这个系统,我们以用户的角度进行事件流设计,描述用例提供的价值和工作流程。我们按照主流博客网的模板进行设计(这里只列出了一个用例)。

    名称:表明用户的意图或用例的用途。

    标识符:惟一表识,如UC1234,在项目的其他元素中可以用来引用这个用例。

    描述:概述用例的几句话。

    参与者:与此用例相关的参与者列表。

状态:指示用例的状态。

频率:参与者访问此用例的频率。

前置条件:一个条件列表,如果其中包含条件,则这些条件必须在访问用例之前得到满足。

后置条件:一个条件列表,如果其中包含条件,则这些条件必须在用例成功完成以后得到满足。

被扩展的用例:此用例所扩展的用例。

被包含的用例:此用例所包含用例的列表。

假设:对编写此用例时所创建的域的任何重要假设。

基本操作流程:参与者在用例中所遵循的主逻辑路径。

可选操作流程:用例中很少用到的逻辑路径,那些在变更工作方式、出现异常或发生错误的情况下所遵循的路径。

修改历史记录:关于用例的修改时间、原因和修改人的详细信息。

问题:如果存在,则为与此用例的开发相关的问题或操作项目的列表。

决策:关键决策的列表,这些决策通常由你的SME做出,并属于用例的内容。

表2-5 用户登录用例

用例名称

用户登录

用例ID

uId-131(tb_qt_user)、uId-1(tb_ht_user)

参与者

前台用户、后台管理员

描述

前台用户、后台管理员登录系统过程

风险

优先级

难度

启动

主动进入用户登录画面或会话超时转入用户登录画面

前置条件

用户需在登录状态

后置条件

将用户信息放入会话中

将用户相关的博客信息放入会话中

显示博客阅读主画面

主事件流

用户

系统

1.进入或转入用户登录画面

2.用户输入用户名和密码

3.系统检查用户名和密码是否合法

4.系统检查用户名是否存在,密码是否正确

5.读取用户的基本信息、博客的基本信息放入会话中

6.转到管理博客的主画面

异常流

异常流

系统中不存在该用户或用户名错误

系统

转入登录画面

异常

用户不存在或密码错误

2.5 数据字典

    数据字典是系统分析阶段的重要文档[13],它清楚地定义与详细地解释了数据流程图上不能详细表达的内容,同时它也是同用户交谈的工具。

下面列出本系统中的数据字典(由于本系统功能强大,所以此处只列一个数据字典):

表2-6 前台用户信息表

第3章 系统设计

3.1 系统总体结构设计

本系统主要包括两大模块组成:博客浏览系统、博客管理系统。

整个系统的结构框架如图3-1所示。

图3-1 系统结构框架图

3.2 系统数据模型设计

由于博客系统中对博客内容的写入、修改和更新工作比较复杂,所以它的主要任务是进行大量的数据库操作,这就必然要存储和利用大量的、各种类型的数据。如何建立一个良好的数据库结构和文件组织形式,使其能够迅速、准确的查找所需要的数据,是衡量这个系统的主要指标之一[3]。

(一)概念模型的建立

通过第二章中对系统数据流以及局部数据流和数据字典的分析,可以总结出系统中数据概念模型(E-R图),如图3-2、图3-3所示。

    (二)数据模型的建立

    现根据上述概念模型,将它们转化为数据模型,由于数据较多,现举部分数据进行转换。根据关系模型的转换规则,一个实体型转换为一个关系模型:

    博文(博文ID、标题、描述、内容、发表时间、修改时间、所属分类ID、权限、阅读数、评价数、分享数、有效标志、作者ID);

博文分类(分类ID、分类名称、有效标志、作者ID);

图3-2 用户概念模型

图3-3 系统概念模型

博文评论(评论ID、评论内容、评论时间、评论悄悄话标志、有效标志、博文ID、作者ID);

相册(相册ID、相册名称、创建时间、修改时间、地点、描述、权限、有效标志、作者ID);

前台用户信息(用户ID、账号、密码、停用标志、有效标志);

后台管理员信息(用户ID、账号、密码、权限);

(三)数据模型的优化

数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,必须对数据模型进行优化。

(四)确定是否分解

由于,关系模型的规范化程度并不是越高越好,在实际应用中高范式可能会带来程序查询时间的浪费,所以,在数据库文件设计上,本系统达到第三范式已经足够,无须在做分解。

3.3 数据库表的设计

数据库设计是项目开发中的系统设计中非常重要的另一个关键环节,在这里之所以特别强调数据库设计的重要性,是因为数据库设计就像在建设高楼大厦的根基一样,如果设计不好,在后来的系统维护、变更和功能扩充时,甚至在系统开发过程中,将会引起比较大的问题,大量的工作将会重新进行。

下面根据前面列出的系统用例图,开始设计相关数据库(只是部分数据库表)。

    1.数据库表与表之间的相互关系

本系统需要设计的数据库如表3-1所示。

表3-1 数据库表

序   号

数据库表

数据库表存储内容

1

tb_qt_user

存储前台用户账号和密码信息

2

tb_ht_user

存储后台管理员账号和密码信息

3

tb_bowen_fl

存储博文分类信息

4

tb_publish_bowen

存储博文信息

5

tb_xiangce_list

存储相册信息

6

tb_bowen_reply

存储博文评论信息

    

    上表列出了本系统所用到的数据表,并根据流程和功能表示出各数据表之间的关系,具体如图3-4所示。

    2.数据库表结构的详细设计

下面开始对上一节列出的数据表逐一做出详细说明。存储博文信息、博文分类信息、博文评论信息如表3-2、表3-3、表3-4所示。

图3-4 数据库表关系(简化关系图)

表3-2 博客信息表tb_publish_bowen

序号

字段名

字段类型

说明

备注

1

pbwId

int

博文ID

主键

2

pbwTitle

varchar(200)

博文标题

3

pbwDescription

varchar(1000)

博文描述

4

pbwContent

text

博文内容

5

pbwPublishTime

datetime

博文发表时间

6

pbwModifyTime

datetime

博文修改时间

7

pbwFl

int

博文分类ID

8

pbwQx

int

博文权限

9

pbwYd

int

博文阅读数

10

pbwPj

int

博文评价数

11

pbwFx

int

博文分享数

12

pbwYxbz

smallint

博文有效标志

13

uId

int

用户ID

表3-3 博文分类信息表tb_bowen_fl

序号

字段名

字段类型

说明

备注

1

bwflId

int

博文分类ID

主键

2

bwflName

varchar(100)

博文分类名称

3

bwflYxbz

smallint

博文分类有效标志

4

uId

int

用户ID

表3-4 博文评论信息表tb_bowen_reply

序号

字段名

字段类型

说明

备注

1

bwrId

int

博文评论ID

主键

2

bwrContent

text

博文评论内容

3

bwrTime

datetime

博文评论时间

4

bwrQqhbz

smallint

博文评论悄悄话标志

5

bwrYxbz

smallint

博文评论有效标志

6

pbwId

int

博文ID

7

uId

int

用户ID

3.4 系统开发与运行环境确定

3.4.1 系统开发环境

3.4.1.1 系统开发环境及开发工具

开发工具对一个系统的成败具有决定性作用。由于本系统是应用于网络的,因此,我们选择了JSP技术进行开发,同时,选用SQL Server作为系统后台数据库,开发中将用到以下主要几款开发工具,如表3-5所示。

表3-5 开发工具列表

开发工具名称

软件用途

MyEclipse 8.6[7]

系统设计等

SQL Server 2008

建立系统的后台数据库

JSP

编写代码实现网站动态功能

Dreamweaver CS5

静态页面的设计、制作

3.4.1.2 使用JSP作为系统开发工具的优点

JSP就是由服务器端脚本、对象以及组件拓展过的标准网页(也可以理解为在普通的网页中嵌入了一些扩展的指令),另一方面,JSP也可以理解为一种支持JSP扩展的Web服务器环境。它最终显示在浏览器中的网页并不是在建立初期就存在的,而是当某个浏览器向服务器提出请求时,它才根据需要产生需要的标准网页,这克服了过去HTML编写的网页不能更改的缺点,从而使网页上可以存在许多动态的信息。

3.4.2 系统运行环境

    硬件环境:

服务器端推荐配置为512M内存,CPU为Intel Core2 2000MHZ,硬盘为160G的PC机。

通信网络:Internet网

软件环境:

    Web服务器:Tomcat 6.0或以上版本[4]

数据库端: SQL Server 2008

操作系统:Windows 7/XP

    浏览器: Internet Explore 8.0或以上版本

3.5 系统实现的若干关键技术

3.5.1 JSP技术概论

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

    Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能[6]。

    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可用一种简单易懂的等式表示为:JSP=HTML+Java。

3.5.2 JSP工作原理

    JSP的执行过程:

1.用户在浏览器的地址栏中键入JSP文件,并回车触发这个JSP的申请。

2.浏览器将这个JSP的请求发送到给Web服务器。

3.Web Server接收这些申请并根据.jsp的后缀名判断这是JSP要求。

4.Web Server 从硬盘或内存中读取正确的JSP文件。

5.JSP文件将会从头至尾执行并根据命令要求生成相应的HTML文件。

6.HTML文件被送回浏览器。

7.用户的浏览器解释这些HTML文件并将结果显示出来。

3.5.3 JDBC技术

    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成[9]。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。

    有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势[11]。

    Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。

    Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制[10]。

    JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加[12]。

3.5.4 数据库连接函数

    为什么要将本部分列出来呢?因为在整个博客系统的开发过程中,数据库连接是必不可少的,是公用的,我们可以把这一部分先拿出来,单独做成一个函数,在需要的时候只需调用就可以了,而不用每次都去写连接数据库的程序,这种做法叫做复用。

    本系统使用的是SQL Server数据库,在JSP中同数据打交道的主要是DAO,对数据进行操作处理,要让DAO对象能够存取数据库,最重要的东西就是JDBC驱动程序。任何一种数据库,必须具备对应的驱动程序,DAO对象才能存取[8]。

本系统连接SQL Server数据库使用的是JDBC机制,博客系统数据库连接的关键代码如下:

       /* SQL Server */

public final static String DBNAME = "sa";

public final static String DBPASS = "bxylove900225";

public final static String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

publicfinal static String URL = "jdbc:microsoft:sqlserver://localhost:1433;

       DataBaseName=db_BLDblog";

// 关闭数据库的变量

public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

System.out.println("rs关闭发生异常");

e.printStackTrace();

}

}

if (pstmt != null) {

try {

pstmt.close();

} catch (SQLException e) {

System.out.println("pstmt关闭发生异常");

e.printStackTrace();

}

}

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

System.out.println("conn关闭发生异常");

e.printStackTrace();

}

}

}

// 对数据库进行增、删、改

public int executeSQL(String sql, String[] getValue) {

int result = 0;

Connection conn = null;

PreparedStatement pstmt = null;

try {

conn = getConn();

pstmt = conn.prepareStatement(sql);

if (getValue != null) {

for (int i = 0; i < getValue.length; i++) {

pstmt.setString(i + 1, getValue[i]);

}

}

result = pstmt.executeUpdate();

} catch (Exception e) {

System.out.println("executeSQL方法异常");

e.printStackTrace();

} finally {

closeAll(conn, pstmt, null);

}

return result;

}

// 注册、连接数据库

public Connection getConn() {

Connection conn = null;

try {

Class.forName(DRIVER);

} catch (ClassNotFoundException e) {

System.out.println("注册驱动异常");

e.printStackTrace();

}

try {

conn = DriverManager.getConnection(URL, DBNAME, DBPASS);

} catch (SQLException e) {

System.out.println("连接数据库异常");

e.printStackTrace();

}

return conn;

}

    使用上面的驱动程序,只要保证数据库用户名、密码和项目数据库名称正确就不会出现问题。

第4章 详细设计

根据对系统所需实现功能的分析和系统结构设计,现将对系统进行详细设计。但由于系统模块的代码较多,现就系统的几个重要模块进行介绍。

4.1 系统登录模块简介

    该模块是博客系统中的一个重要组成,用于完成对用户登录的判定。注册用户需提交账号和密码登录系统,登录之后建立自己的博客并进行管理;一般用户若想注册,可以进行资料登记,资料提交后系统审核通过后系统会提醒你注册成功,通过首页登录即可进入自己的博客管理页面。后台管理员(无论是超级管理员,还是管理员都一样)登录需提交用户名和密码,系统管理员还需输入系统随机产生的验证码进行登录,之后进入管理页面。

4.2 模块体系结构

为实现上述功能,将该模块分为了三个子模块:新用户注册子模块、注册用户登录子模块、系统管理员登录子模块。各模块之间关系如图4-1所示。

图4-1 登录模块图

4.3 运行图

模块运行图如图4-2所示。

图4-2 登录系统运行图

4.4 设计说明

4.4.1 新用户注册子模块

    用户注册,首先要检查的就是用户填写的信息,其中包括:

1.字段是否空白,若空白则不接受。

    2.输入的E-mail是否正确。

    3.密码长度是否符合。

    4.两次输入的密码是否一致。

    5.用户名是否被使用。

注册页面如图4-3所示。

这个模块的功能实现中用AJAX来获取前端提交的文本框的值。用法如下:

$("#uEmail").val()

    为了检测用户名的长度,这里用到了函数equals()和length()。下面是它的用法:

uEmail.equals("") || uEmail.length() == 0

图4-3 用户注册页面图

接着要对电子邮件地址进行验证,电子邮件地址的验证比较困难,因为电子邮件的用

户名可以五花八门,后面的域名也是多种多样,但还是有一定的规律可循,本系统用正则表达式来检验电子邮件地址。

邮件地址“用户名@域名”是最简单的,在域名中包含的后缀有很多种。实现代码如下:

String checkFormat = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z A-Z]{2,}$";

Pattern regex = Pattern.compile(checkFormat);

Matcher matcher = regex.matcher(Email);

return matcher.matches();

验证完用户名还要对密码进行处理,密码是一个用户在博客中比较隐秘的部分,这里我们采取了MD5加密的方式。

验证完毕后,就要把数据写到数据库里了,但是在写入数据库之前我们还要验证一些 信息,我们要保证用户名的唯一性,还要保证E-mail的唯一性,这些都是数据库内验证。

4.4.2 管理员登录子模块

    管理员登录模块由管理员登录页面组成,它是博客管理部分的登录页面。

    1.登录页面流程图如图4-4所示。

图4-4 登录页面流程图

    2.登录页面代码程序的实现部分

登录界面如图4-5所示。

图4-5 登录界面

管理员在页面输入并提交信息,每一个提交程序都会用到AJAX传递参数,一个是用户名,一个是用户密码,系统的验证都是通过Servlet来完成。

管理员在页面输入信息后,系统在后台要进行验证,以便管理员用户登录博客管理系统。

  1. 验证码产生的实现部分

    我们发现用户每次登录时的验证码都不一样,这样做的目的是为了防止有人利用暴力破解用户的密码。

程序设计由系统产生的随机数形成验证码,并绘成图片以显示数据在页面上,将其变成用户可见的验证码,生成此码的同时,就其数据存入Session中,以便系统对数据的核实。

第5章 博客管理系统模块

    该模块是博客系统中的重要模块,也是博客系统的主模块,该模块的功能丰富,管理员对本系统的后台管理与操作都将由该模块来完成。

该模块有如下几项功能:

    (1)博文管理(添加博文、查看博文、查看博文分类)

(2)相册管理(添加相册、查看相册、添加照片、查看照片)

(3)好友管理(查看好友)

(4)游戏管理(添加游戏、查看游戏)

(5)省市区县管理(添加省市区县、查看省市区县)

(6)大学院系管理(添加大学院系、查看大学院系)

(7)资料身份管理(添加资料身份、查看资料身份)

(8)前台用户管理(添加前台用户、查看前台用户)

(9)后台用户管理(添加后台用户、查看后台用户)

(10)系统管理(修改密码)

因此为实现各部分的功能,为每部分功能设计了相应的子模块,现举部分子模块的详细设计。

5.1 博文管理子模块

5.1.1 模块简介

该模块用于对系统中所有的博文进行管理,该模块可以说是博客管理系统中最主要的模块,博客用户在浏览系统发表博文之后,管理员就是在这个模块进行博文管理的,这个模块主要实现的功能有:添加博文,查看博文,查看博文分类。

5.1.2 模块体系结构

本模块分成三个子模块:添加博文、查看博文、查看博文分类,各模块之间关系如图5-1所示。

图5-1 博文管理子模块体系结构图

5.1.3 设计说明

1.添加博文

添加博文是博文管理页面的组成部分,为了实现这个功能而设计了相应的数据库文件发表博文信息表(tb_publish_bowen)。此部分的信息主要是由前台用户提交的,为了便于管理员的管理,特此为管理员也设置了发表博文的功能,当管理员提交新的博文信息时,系统会将数据存入发表博文信息表中。

    (1)添加博文程序流程图

系统就是根据下面的运行流程把新的博文信息写入数据库的,程序流图如图5-2所示。

图5-2 添加博文程序流程图

(2)添加博文程序的实现部分

设计页面如图5-3所示。

图5-3 添加博文设计页面

从图中可知添加博文主要是填写标题、描述、内容、分类和权限,然后提交博文信息保存在数据库中。

    2.查看博文

该模块的数据库文件也为发表博文信息表(tb_publish_bowen)。页面初始化之后,当管理员对博文提交修改/删除信息时,系统会将修改/删除数据存入发表博文信息表(tb_publish_bowen)。

    (1)查看博文程序流程图,如图5-4所示。

(2)查看博文功能程序的实现部分

查看博文主要就是对博文的修改、删除的管理,其中:

修改博文的程序跟我们上一节讲的发表博文的程序是类似的,都是普通的数据提交/接受。

删除博文程序中首先利用AJAX将要删除的博文ID传到后台,在Servlet里进行删除,删除之后返回页面将相应的行用JavaScript移除掉。

5.2 游戏管理子模块

图5-4 查看博文程序流程图

5.2.1 模块简介

该模块用于对系统中所有的游戏进行管理,该模块为系统添加了娱乐功能,这个模块主要实现的功能有:添加游戏,查看游戏。

5.2.2 模块体系结构

本模块分成两个子模块:添加游戏,查看游戏,各模块之间关系如图5-5所示。

5.2.3 设计说明

1.添加游戏

图5-5 游戏管理子模块体系结构图

添加游戏是一般文字网站所不具有的,为了实现这个功能而设计了相应的数据库文件Flash游戏信息表(tb_flashgame_list)。此部分的信息是由管理员提交的,当管理员提交新的游戏时,系统会将数据存入Flash游戏信息表中,同时将Flash文件上传到指定文件夹。

    (1)添加游戏程序流程图

系统就是根据下面的运行流程把新的游戏信息写入数据库的,程序流图如图5-6所示。

图5-6 添加游戏程序流程图

(2)添加游戏程序的实现部分

设计页面如图5-7所示。

从图中可知添加游戏主要是填写分类、名称、Flash文件,然后提交游戏信息保存在数据库中。

在这个模块中,主要涉及到文件的上传,这里我们采用POST的信息传输方式,相对于GET方式,POST比较灵活,传输数据量的大小不受限制,下边看一句关键的程序代码:

图5-7 添加游戏设计页面

enctype="multipart/form-data"

这一句说明管理员要上传多种格式的文件,大家在上传时一定要加上这句话,否则无法上传成功。

该功能必然要应用到了文件的上传,在java里有专门处理文件上传的java类。

    2.查看游戏

该模块的数据库文件为tb_flashgame_list(Flash游戏信息表)。当管理员对游戏提交删除/是否有效信息时,系统会将删除/是否有效数据存入tb_flashgame_list(Flash游戏信息表)。

(1)查看游戏程序流程图,如图5-8所示。

(2)查看游戏功能程序的实现部分

查看游戏主要就是对游戏的删除/是否有效的管理。

删除游戏程序中首先利用AJAX将要删除的游戏ID传到后台,在Servlet里进行删除,删除之后返回页面将相应的行用JavaScript移除掉。

图5-8 查看游戏程序流程图

第6章 博客浏览系统模块

博客浏览系统提供了浏览博文、上传图片、发表评论、添加好友、游戏娱乐、用户登录和修改资料等。因此在系统设计上此模块分为五个模块来完成这些功能,即用户信息管理模块、博文信息管理模块、图片专辑管理模块、好友信息管理模块、游戏娱乐管理模块。现在就博文信息管理模块和好友信息管理模块介绍如下:

6.1 博文信息管理模块

6.1.1 模块简介

    此模块提供给注册该系统的所有用户浏览博文的功能。系统启动后,用户需登录方可进入此界面。在设计上分为两部分,一部分为自我博文浏览,另一部分为好友博文浏览。

6.1.2 模块体系结构

本模块分成两个子模块:自我博文浏览,好友博文浏览,各模块之间关系如图6-1所示:

图6-1 博文信息管理子模块体系结构图

6.1.3 设计说明

    1.自我博文浏览

自我博文浏览是对相应的数据库文件发表博文信息表(tb_publish_bowen)进行访问。此部分的信息是由博客用户提交的,当博客用户提交新的博文信息时,系统会将数据存入发表博文信息表中。

    (1)自我博文浏览程序流程图

系统就是根据下面的运行流程来实现自我博文浏览的,程序流图如图6-2所示。

图6-2 自我博文浏览流程图

(2)自我博文浏览程序的实现部分

设计页面如图6-3所示。

图6-3 自我博文浏览设计页面

    2.好友博文浏览

好友博文浏览是对相应的数据库文件发表博文信息表(tb_publish_bowen)和好友信息表(tb_friend_list)进行访问。此部分的信息是先通过添加好友,然后才能浏览好友博文,另外好友的博文信息只能浏览,不能修改。

    (1)好友博文浏览程序流程图

系统就是根据下面的运行流程来实现好友博文浏览的,程序流图如图6-4所示。

图6-4 好友博文浏览流程图

(2)好友博文浏览程序的实现部分

设计页面如图6-5所示。

图6-5 好友博文浏览设计页面

    博文信息管理模块是博客用户接触比较多的部分,为此设计了几个浏览页面,有博文首页、个人主页、个人博文,同时为了实现这个功能而设计了相应的数据库文件发表博文信息表(tb_publish_bowen),博文分类信息表(tb_bowen_fl),博文最近来访信息表(tb_bowen_zjlf),博文评论信息表(tb_bowen_reply),好友信息表(tb_friend_list)。所有浏览页面的数据都是从数据库里提取出来的,当用户点击相应的链接时,就会跳到相应的页面。

6.2 好友信息管理模块

6.2.1 模块简介

此模块提供给用户显示全部好友和查询好友两种功能。

6.2.2 模块体系结构

本模块分成两个子模块:全部好友,查询好友,各模块之间关系如图6-6所示。

图6-6 好友信息管理子模块体系结构图

6.2.3 设计说明

1.全部好友

    全部好友是对相应的数据库文件好友信息表(tb_friend_list)进行访问。

    (1)全部好友程序流程图

系统就是根据下面的运行流程来实现全部好友的,程序流图如图6-7所示。

(2)全部好友程序的实现部分

设计页面如图6-8所示。

图6-7 全部好友程序流程图

图6-8 全部好友设计页面

    2.查询好友

查询好友是对相应的数据库文件好友信息表(tb_friend_list)进行访问。此部分的信息是先通过添加好友,然后才能查询好友。

    (1)查询好友程序流程图

系统就是根据下面的运行流程来实现查询好友的,程序流图如图6-9所示。

图6-9 查询好友程序流程图

(2)查询好友程序的实现部分

设计页面如图6-10所示。

图6-10 查询好友设计页面

好友信息管理模块首先是由用户添加好友,考虑到在好友比较多的情况下,为了方便查找设计了这样一个功能,为了实现这个功能而设计了相应的数据库文件好友信息表(tb_friend_list)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值