人人范文网 范文大全

基于JSP的博客网站系统开发(论文)

发布时间:2020-03-03 02:17:23 来源:范文大全 收藏本文 下载本文 手机版

JSP博客网站系统(论文)

摘 要

博客信息管理系统致力于为广大用户提供优质的互动交流平台,提高网站的知名度和访问量,从而获得为企业提供更多产品介绍及展示的机会,提升自己网站的价值。为了满足博客信息管理系统的要求,实现系统静态与动态页面的相互分离,系统采用JSP+JavaBean+Servlet和SQL Server2000数据库相结合的开发模式。

论文首先论述了系统的开发背景和设计目标,并对系统开发所采用的技术进行相应的简单介绍。在系统分析中,对系统的模型进行简单分析,明确系统的操作流程,并对系统进行可行性分析,确定在目前的条件下,开发博客信息管理系统是可行的。在需求分析结果的基础上,对系统的功能模块进行划分。接着对系统中的数据库进行模型设计,包括数据流图、实体联系图及数据表结构。在系统的设计与实现中,确定系统的开发思想以及开发环境,并对系统中的JavaBean和Servlet代码进行设计。最后给出了系统中模块的详细设计与实现,并对系统模块涉及到的关键源代码进行了详细的分析。

经过调试运行后表明,系统可以满足用户创建个人博客的各项要求。 关键词:MVC,设计模式,知识共享,博客信息管理系统

ABSTRACT

The blog information management system is concentrates on high-quality interactive exchanges platform for a large number of users, increasing the visits and making the website more and more famous, thereby can acquiring for the opportunity that busine enterprise providing more introductions and shows of products, promoting the value of the website.Satisfy for the functions of blog information management system, achieving the system's static page separate with dynamic page mutually, using JSP+ JavaBean+ Servlet with the mode of development that the database of SQL Server2000 combine together.The paper discues the background of development of the system and the design of the target first, and introduces the tecknique which used to develop simply.In the analyse of system, proceeded the simple analysis to the model of the system, made sure the operation proce of the system, proceed the analyse to the system, ensure that under the current term, developing blog

information management system is feasible.At the foundation of requirement with the analyse result, proceeding the providing of the function module of the system.Follow, designing the database model, including the data flow diagram, entity relation diagram and data tables.during the design and realization of the system, making sure the development thought of the system and install the environment of development,at last show the design details with realize finally an a key for of detailed design with realization, and analyzed the program which relate to the system module.

After debugging and running ,it shows that the system can satisfy with users to create personal blog.

Keywords: MVC,Design Patterns,Knowledge sharing,The Blog Information Management System

目 录

第1章 绪论 1 1.1 博客信息系统概述 1 1.2 博客发展趋势 2 1.3 系统开发的背景 2 1.4 技术路线 3 1.5 系统设计目标分析 3 第2章 基本技术方案 4 2.1 JSP中的各种技术 4 2.1.1 JSP概述 4 2.1.2 SERVLET概述 4 2.1.3 JAVABEAN概述 5 2.2 基于B/S的WEB应用体系结构 5 2.2.1 传统的两层体系结构 5 2.2.2 三层体系结构 6 2.2.3 JSP网站开发模式 6 2.3 ECLIPSE简介 7 2.4 TOMCAT简介 7 2.5 SQL SERVER简介 8 2.6 MVC设计模式 8

第3章 系统分析与总体设计 10 3.1 系统需求分析 10 3.1.1 用户需求分析 10 3.2 数据分析 11 3.3 系统流程 11 3.4 功能模块划分 14 3.5 功能模块介绍 15 3.5.1 博客注册登录管理模块 15 3.5.2 博客及文章检索查询模块 15 3.5.3 博客页面显示模块 16 3.5.4 博客个人维护管理模块 16 第4章 系统详细设计 17 4.1 数据库分析 17 4.1.1 数据库设计E-R图 17 4.2 系统数据表设计 20 4.3 数据连接 23 第5章 系统功能的具体实现 24 5.1 系统的主窗口 24 5.2 公共核心类的设计 26 5.2.1 数据库相关 26 5.2.2 编写JAVABEAN类 28 5.2.3 管理类设计 29 5.3 系统主要功能模块详述 31 5.3.1 博客管理员登陆模块 31 5.3.2 日志管理显示模块 32 5.3.3 撰写日志模块 35 5.3.4 删除日志模块 36 5.3.5 修改日志模块 38 5.3.6 日志搜索模块 39 结 论 40 参考文献 41 致 谢 42

第1章 绪论

1.1 博客信息系统概述

“博客”(Blog或Weblog)一词源于“Web Log(网络日志)”的缩写,是一种十

分简易的傻瓜化个人信息发布方式。任何人都可以像使用免费电子邮件一样,完成个人网页的创建、发布和更新。博客就是开放的私人空间,可以充分利用超文本链接、网络互动、动态更新等特点,在网络中,精选并链接全球互联网中最有价值的信息、知识与资源;也可以将个人工作过程、生活故事、思想历程、闪现的灵感等及时记录和发布,发挥个人无限的表达力;更可以以文会友,结识和汇聚朋友,进行深度交流沟通[1]。

“博客”当然是个大家都陌生的名词,博客的英文名词就是“Blog或Weblog”(指人时对应于Blogger),是一个典型的网络新事物,查阅最新的英文词典也不可能查到。该词来源于“Web Log(网络日志)”的缩写,特指一种特别的网络个人出版形式,内容按照时间顺序排列,并且不断更新。

博客是一种零编辑、零技术、零成本、零形式的网上个人出版方式。 博客概念一般包含了三个要素(当然,也不需要局限这些定义): (1)网页主体内容由不断更新的、个性化的众多日志组成。

(2)按时间顺序排列,而且是倒序方式,也就是最新的放在最上面,最旧的放在最下面。

(3)内容可以是各种主题、各种外观布局和各种写作风格,但是文章内容以“超链接”作为重要的表达方式。

因此,博客是个人性和公共性的结合体,其精髓不是主要表达个人思想,不是主要记录个人日常经历;而是以个人的视角,以整个互联网为视野,精选和记录自己在互联网上看到的精彩内容,为他人提供帮助,使其具有更高的共享价值。 博客精神的核心并不是自娱自乐,甚至不是个人表达自由,相反,是体现一种利他的共享精神,为他人提供帮助。个人日记和个人网站主要表现的还是“小我”,而博客表现的是“大我”。也许形式上很接近,但内在有着本质的差异。所有优秀博客网站中,真正表达作者个人的内容非常有限,最多只是点缀,而不像个人网站那样是核心。 1.2 博客发展趋势

趋势一:博客现在正在形成个人的信誉机制,有了博客之后就确立了一个个人虚拟身份,简单的来讲就是个人在互联网上是有名有姓的,而不再是一种匿名的行为,网民从流浪汉变成了一个定居者。以前在互联网上的各种行为都是在匿名状态中,相互之间是不认识的,但有了博客之后可以天天关注,而别的人也可以通过博客找到这个人。这样随着时间的积累就会产生一个新的东西,概括叫做“个人的信誉”,个人的信誉就是博客和博客之间发展各种关系的组合,这种信誉对每个人来讲可能是不同的,但对每个博客来讲就产生了新的评价机制,这个机制将是博客商业化的一个前提条件。

趋势二:博客越来越呈现出富媒体化,早期的博客是以文字为主,但随着多媒体发展博客相册、博客图片已经成为博客的基本配置,而现在许多博客网站已经提供了博客音频和博客视频。

趋势三:博客现在正在形成并完善精选机制,博客作为自媒体和个人媒体,产生的信息非常巨大。其中难免产生信息垃圾,随着博客的发展,博客通过精选机制精选出大家喜闻乐见的信息,像国内网摘、博客的评价系统等[2,3]。 1.3 系统开发的背景

博客的精神是:自由表达,开放宽容,个性张扬,专业精神。

在没有自己的博客之前,人们会经常进出于论坛发表贴子或者通过即时通信软件聊天,来表达自已的想法,可是这些都是零散的和杂乱的。博客的出现,让人们可以不断的把自己以前的和每天激发的一些想法或者感受整理放在自己的博客上,每次在写文章的时候,可能又会产生新的想法。虽然一些想法一些思考只是皮毛,没有什么深度,但是当下笔去写的时候每次都会对某个小小的问题有了更多的一点点思考,再写博客的时候就感觉到了一种满足感,一种想法得以释放思考得以延伸的满足感。生活中每天的一个小小的事情都会引起人们的思考,甚至是和朋友的聊天中一个小小的火花迸发。督促自己努力、把一时的想法变成观点,争取在生命中的每天里留下点什么,这也是人们写博客的目的之一。这样就能督促自己每一天不要浑浑噩噩,时光流逝无痕无声无息,写博客也是在自己的每一天上留下了一道浅浅的思考和划痕。

不仅如此,通过写博客、记录自己的想法可以帮助实现如下这些目的: (1)记录生活,在自己的每一天上留下思考的划痕。

(2)整理思路,固化知识,获得更多更好的想法。

(3)分享,将自己的想法、经验与人分享。

(4)交流、提高,通过交流产生更多的思维火花,相互提高。

(5)交友,互相鼓励,一路同行。

如果说博客网站是一个舞台,那么所有的博客都是其中的舞者,把自己有价值的真实的一面展示在网络世界中,相互交流沟通; 如果博客仅仅为了写日志,那么博客是一面镜子,镜子中展现的是真实的自己;如果博客是一个自由媒体,可以把自身感觉有价值的信息通过博客这个工具发布,与网友共享。 1.4 技术路线

本系统的开发采用的是JSP+JavaBean+Servlet模式,在该模式中,结合了JSP和Servlet技术,充分利用了JSP和Servlet两种技术原有的优点。在此模式中,JavaBean作为模型的角色,充当JSP和Servlet通信的中间工具,Servlet处理完后设置JavaBean的属性,JSP读取此JavaBean的属性,然后进行显示。该模式更加明显地把显示和逻辑分离,使得代码更容易管理,适合大型项目的开发[4]。

1.5 系统设计目标分析

本系统是用JSP实现的一个完全基于浏览器的博客系统,任何注册个人博客的人都拥有以下功能:

(1)登录博客系统的后台管理平台。

(2)更改博客账号的基本信息。 (3)撰写日志。 (4)日志管理。 (5)评论管理。 (6)留言管理。

博客访问者具有以下功能:

(1)浏览博客系统中的日志、留言、评论。 (2)发表评论及留言。 (3)检索日志。

第2章 基本技术方案

2.1 JSP中的各种技术 2.1.1 JSP概述

JSP即Java Server Pages,是由Sun Microsystem公司于1996年6月推出的新技术,是基于Java Servlet以及整个Java体系的Web开发技术。JSP已经成为开发Web动态网页重要、快速和有效的工具,是全新的网络服务器编程环境。JSP充分利用了Java的强大功能,是一种优秀的服务器端技术。随着Java技术的日益成熟和流行,JSP在网络编程中也变得越来越重要。JSP基于强大的Java语言,具有极强的扩展能力,良好的缩收性,以及与平台无关的开发特性,成为构建动态网站的主流技术之一,JSP有着其他技术所不具备的优势。其优势在于:可以将内容的生成和显示进行分离、生成可重用的组件、采用标识简化页面开发。JSP能提供所有Servlet的功能[5]。 2.1.2 Servlet概述

Servlet是Java编写的服务器端程序,是由服务器端执行和调用的Java类。Servlet是采用Java技术来实现CGI功能的一种技术,能够像CGI一样动态地扩展Web服务器的功能,并采用请求——响应模式提供Web服务。Servlet和CGI一样都是运行在Web服务器上,用来生成Web页面。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。其工作流程图如图2.1所示。

图2.1 Servlet工作流程图 Servlet工作流程:

(1)客户端发送请求信息至服务器。 (2)服务器将请求信息发送至Servlet。

(3)Servlet生成响应内容并将其传给Servlet。响应内容动态生成,通常取决于客户端的请求。

(4)服务器将响应信息返回至客户端。 2.1.3 JavaBean概述

JavaBean是Sun公司为了进入因特网、企业网以及万维网上进行分布式计算的组件结构入口。按照Sun公司的定义,JavaBean是一个可重复使用的软件部件。JavaBean体系结构是第一个全面地基于组件的标准模型之一,该组件是Java类,这些类遵循一个接口格式,以便于使方法命名、底层行为以及继承或实现的行为能够把类看做标准的JavaBean组件的方式进行构造[7]。

在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速生成新的应用程序。JavaBean具有以下特点: (1)可以实现代码的重复利用。 (2)易维护性、易使用性、易编写性。

(3)可以在Java的任何平台上工作,不需要重新编译。 (4)可以在内部网或者网络之间进行传输。 (5)可以以其它部件的模式进行工作。

JavaBean在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。 2.2 基于B/S的WEB应用体系结构 2.2.1 传统的两层体系结构

在Web发展的初期,Web应用主要是通过静态页面在Internet上发布信息。用户通过浏览器向服务器发送请求,服务器接收用户端的请求,向客户端浏览器发送所请求的页面。在这种结构下,网站上的页面是静态的,无法根据用户的实际使用情况做动态的变化。网站的信息提供者通过更新服务器上的网页来向用户提供最新的信息。用户和浏览器之间只有有限的交互,而网站和用户之间几乎没有交互。

2.2.2 三层体系结构

三层体系结构图如图2.2所示。

图2.2 三层体系结构图

CGI,ASP,PHP等技术的出现,使得开发动态交互式的Web应用得以实现。用户通过浏览器向服务器发送请求,Web服务器接收客户端发送来的请求,对请求进行分析,如果请求是静态页面,那么就将所请求的页面发送到客户端;如果请求的是动态页面,那么就执行此动态页面,并将执行结果发送给客户端。动态页面中的脚本程序可以和数据库服务器进行交互。

Web服务器可以根据用户的请求动态更新页面上的信息,Web信息提供者可以通过改变数据库中的数据向用户提供最新信息,而不需要逐个更改页面。用户可以通过这些动态页面向数据库中输入信息,从而增强了用户和服务器之间的交互性。

2.2.3 JSP网站开发模式

目前,JSP技术已经成为一种受大多数大型企业或中小型企业喜爱的动态网页开

发技术。越来越多的技术人员也逐步成为JSP技术的推崇者。JSP技术正是利用了Java的“一次开发,处处使用”的性能,成为了网站开发技术人员的首选技术。当然,JSP技术的最大优势在于能够将页面的表现形式和页面的商业逻辑分开。

JSP网站开发技术标准提供了两种开发模式:一种是JSP+JavaBean开发模式;一种是JSP+Servlet+JavaBean开发模式[8,9]。 JSP+JavaBean模型图如图2.3所示。

图2.3 JSP+JavaBean模型图

在这种模型中,JSP页面独自响应请求并将处理结果返回给客户,所有的数据通过JavaBean来处理,JSP实现页面的显示。此模型常常会导致页面被嵌入大量的脚本语言或者Java代码段,当处理大型业务时,页面程序将变得异常复杂给开发和维护带来困难。

JSP+Servlet+JavaBean模型图如图2.4所示。

图2.4 JSP+Servlet+JavaBean模型图

Servlet技术是一种采用Java技术来实现CGI功能的一种技术。Servlet是运行在Web服务器上,用来生成Web页面。Servlet技术非常适于服务器端的处理和编程。

在此种开发模式中,JSP技术用来显示页面,该页面中没有任何的商业处理逻辑,通过Servlet技术来完成大量的事物处理工作。Servlet用来处理事务的请求,充当着一个控制者的角色,并负责向客户发送请求,创建JSP需要的Bean和对象,根据用户的请求行为,决定将哪个JSP页面发送给用户。

从上面两种开发模式来说:第二种模式要好些,更适合于团队开发,速度相对较慢,但是可维护性高[6]。 2.3 Eclipse简介

Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。 Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成[10]。 2.4 Tomcat简介

如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。因此需要一个交互式的Web,于是便诞生了各种Web语言。如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。Tomcat即是一个Jsp和Servlet的运行平台。

Tomcat是一个免费的开源的Serlvet容器,是Apache基金会的Jakarta项目中

的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成[11]。 2.5 SQL Server简介

Microsoft SQL Server 2000是微软所推出的一套在Windows平台上执行的功能强大的关系型数据库管理系统,用以作为应用程序的数据来源,存放各种数据,并可以让用户很容易地达成所要进行的数据存取操作。同时,也提供了一些可视化的管理工具,协助数据库系统管理者更方便快速地管理及设计数据库的内容,以及对数据库进行维护。SQL Server 2000不仅可以实现个人数据库的管理,更适合企业级数据库的应用[12,13]。 2.6 MVC设计模式

MVC模式的基本形式图如图2.5所示。 图2.5 MVC模式的基本形式图

MVC(Model-View-Controller)模式并不是J2EE行业人士标新立异的。MVC的核心就是要做到三级甚至多级的松散耦合,MVC模式将系统分为三个部分,分别是数据模型、视图和控制器,并定义了这三个部分之间实现通信的一种模式,使每个部分不必卷入到其他部分的状态表示和方法实现的细节中去。每个部分有自己的数据管理规则,各个对象之间的通信只能使用自己定义的一个受限连接集合进行。保持这种分离性通常是面向对象编程和设计要追求的目标,让各个对象只需专注于自己的事务。

模型部分代表了商业数据的访问及修改数据的操作。当数据发生改变时,要负责通知视图部分,并且提供视图查询状态的能力。另外,还向控制部分提供应用功能。

视图部分以自己的方式显示模型的内容。访问模型的数据,并且当模型的数据发生变化时更新模型的显示。视图还把从用户那里得到的信息传给控制部分。 控制部分定义了应用的行为。分发用户请求和选择表现视图,还负责解释用户输入,进而调用模型的功能。在Web应用中,用户输入包括对Web级资源的HTTP、GET和POST请求。控制部分根据用户交互和模型的状态选择要显示的视图。一个应用程序一般为相关的功能选择一个控制部分[14,15]。

第3章 系统分析与总体设计

博客信息系统包括:前台信息显示系统、后台信息管理系统。前者是面向公众的一个窗口,通过前台信息显示系统方便访问者浏览日志、评论和留言;发表评论和留言。后者是后台信息管理系统,方便博客管理员发表日志;回复评论和留言;管理日志、评论、留言及个人信息 [12]。 3.1 系统需求分析 3.1.1 用户需求分析

用例图用来描述系统与参与者之间的相互作用,与用例图相关的几个概念: (1)角色:代表了某一事件发生的参与者,用一个小人表示。

(2)用例:代表系统可以实现的功能,通常一个用例代表一组功能,实质上规定了系统实现功能的范围。

(3)用例图:当角色和用例发生某种关系时,就可以用一个图将它们关联起来,这就是用例图。

博客信息管理系统用例图如图3.1所示。

图3.1 博客信息管理系统用例图

博客信息管理系统允许用户有三种身份:博客访问者、博客管理员及系统管理员。 博客系统参与者中每种身份操作起来都很方便、快捷。博客访问者无需登陆就可以浏览信息、发表评论或留言;博客管理员注册后再登陆,就可以发布日志、管理个人主页;而博客管理员的基本信息都由系统管理员对其统一管理。 3.2 数据分析

本系统的用户主要是博客访问者和博客管理员,下面以博客前台展示系统中的用户查询日志为例进行说明。该过程的数据流程图如图3.2所示。

图3.2 用户查询日志的数据流程图

用户查询日志的数据流程:首先,用户输入需查找的关键字,然后提交表单数据,服务器接收到关键字后,根据关键字对日志标题进行模糊查询,处理后将结果以日志标题链接的形式显示给该用户,用户点击相应的链接就可以浏览日志内容。 3.3 系统流程

根据博客信息管理系统的特点,将其分为两大模块:前台用户浏览模块和后台用户管理模块。前台用户浏览模块主要用于用户浏览日志信息;后台用户管理模块主要用于博客管理员对个人博客网站的管理,如日志管理、留言管理及评论管理等。

博客系统平台的前台用户浏览模块流程图如图3.3所示。

图3.3 前台用户浏览模块流程图

前台用户浏览模块主要用于用户浏览日志信息,用户浏览日志有三种浏览方式可以选择:一是直接点击日志标题链接进入日志显示页面浏览日志;二是点击博客主题链接进入该个人博客的首页,然后在该首页中选择所需的日志标题链接进入日志显示页面浏览日志;三是通过首页提供的搜索功能,搜索所需要的日志,然后在结果列表中选择所需的日志标题链接进入日志显示页面浏览日志。浏览日志的同时用户可以查看别人对该日志的评论,然后用户也可以对该日志发表自已的评论。

博客系统平台的后台用户管理模块流程图如图3.4所示。

图3.4 后台用户管理模块流程图

用户进入后台管理平台,首先必需进行权限验证,防止未授权的用户非法登录。若未通过验证,则显示出错提示,并跳转到登录界面。若通过验证,则进入个人博客后台管理平台。用户可以浏览已发表的日志,并对其进行相应的操作如修改日志和删除日志;可以查看日志的评论信息并对其进行回复或者删除操作;可以发表新的日志;可以新建日志分类;可以浏览个人博客的留言信息并对其进行相应的操作如回复留言和删除留言;还可以对个人信息进行修改。

3.4 功能模块划分

前台模块功能结构如图3.5所示。

图3.5 博客信息系统前台功能结构图 后台模块功能结构如图3.6所示。

图3.6 博客信息系统后台功能结构图 3.5 功能模块介绍

博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。 3.5.1 博客注册登录管理模块

博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。 该功能模块实现了以下几个子功能。 (1)新博客在线注册。 (2)博客登录管理。 (3)跳转到博客主页。

只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。 该模块实现新博客的注册及登录验证功能。其中,注册新博客时会对用户输入的

注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。 3.5.2 博客及文章检索查询模块

博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。 该功能模块实现了以下几个子功能。 (1)热门博客页面推荐。 (2)最新博客日志推荐。 (3)日志信息关键字搜索。

该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。

为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息。 3.5.3 博客页面显示模块

当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。 该功能模块实现了如下几个子功能。

(1)用户可以分页查看对应的日志内容及评论信息。 (2)用户可以针对日志内容发表评论。 (3)用户可以针对博客进行留言。 (4)用户可以分类查看日志内容。

在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。

3.5.4 博客个人维护管理模块

博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。 该功能模块实现了如下几个子功能: (1)日志及日志分类管理。 (2)评论及留言管理。 (3)个人基本信息维护管理。

借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。

第4章 系统详细设计 4.1 数据库分析

数据库是当前应用软件系统的重要组成部分,如何使基于数据库的应用系统安全、可靠、高效的运行一直是软件开发技术研究的难题。所以本系统的数据库设计基于以下几点来考虑:

(1)数据库规范化与非规范化的考虑。 (2)数据查询优化与索引的建立。 (3)存储过程与视图。 4.1.1 数据库设计E-R图

为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。描述了从用户角度看到的数据,反映了用户的现实环境。

最常用的表示概念性数据模型的方法,是实体—联系方法(Entity—Relationship Approach)。这种方法用ER图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。用这种方法表示的概念性数据模型又称为ER模型。ER模型中包含“实体”,“联系”和“属性”。 博客信息管理系统涉及的实体包括:

(1)用户:用户ID、用户名称、用户密码、博客主题、说明、E-mail、注册日期、发表日志数。

(2)类别:类别编号、类别名、类别描述、用户ID。

(3)日志:日志编号、日志标题、日志内容、类别编号、发表日期、最后修改日期、用户ID、浏览次数、评论数。

(4)评论:评论编号、评论标题、评论内容、发表日期、最后回复日期、评论人、日志编号。

(5)留言:留言编号、留言标题、留言内容、发表日期、最后回复日期、留言人、用户ID。

综合本系统各子模块要实现的功能,通过前面对博客信息系统数据的分析可以得到:用户表、类别表、日志表、日志评论表、留言表的数据库概念模型(E-R图)。 用户E-R图如图4.1所示。

图4.1 用户E-R图

日志类别E-R图如图4.2所示。

图4.2 日志类别E-R图 日志E-R图如图4.3所示。

图4.3 日志E-R图

日志评论E-R图如图4.4所示。

图4.4 日志评论E-R图 留言E-R图如图4.5所示。

图4.5 留言E-R图

4.2 系统数据表设计

(1)用户表,此表主要用于保存用户的基本信息。其结构如表4.1所示。 表4.1 用户表

列名 含义 类型 长度 缺省值 允许空 BlogID 用户编号 Int 4 无 否 UserName 用户名 Varchar 20 无 否 Paword 用户密码 Varchar 20 无 否 NickName 博客主题 Varchar 50 无 否 Description 博客描述 Varchar 100 无 是 Email 电子邮件 Email 50 无 否

RegisterTime 注册日期 Datetime 8 无 否 ArticleNum 发表的日志数 Int 4 0 否

(2)日志表,此表主要用于保存日志的基本信息。其结构如表4.2所示。

表4.2 日志表

列名 含义 类型 长度 缺省值 允许空 ArticleID 日志编号 Int 4 无 否 Title 日志标题 Varchar 50 无 否 Content 日志内容 text 8 无 否 CategoryID 类别ID int 4 无 否

PublishTime 日志发表时间 Datetime 8 无 否 LastModifyTime 日志最后修改时间 Datetime 8 无 否

BlogID 用户ID Int 4 无 否

ReadTimes 日志浏览次数 Int 4 0 否 FeedBackNum 日志评论数 Int 4 0 否

(3)日志评论表,此表主要用于保存日志评论的基本信息。其结构如表4.3所示。

表4.3 日志评论表

列名 含义 类型 长度 缺省值 允许空 FeedBackID 评论编号 Int 4 无 否 Title 评论标题 Varchar 20 无 否 Content 评论内容 Text 8 无 否

PublishTime 发表时间 Datetime 8 无 否 UserName 用户名 Varchar 20 无 否 ArticleID 日志ID Int 4 无 否

(4)留言表,此表主要用于保存留言的基本信息。其结构如表4.4所示。

表4.4 留言表

列名 含义 类型 长度 缺省值 允许空 MeageID 留言编号 Int 4 无 否 Title 留言标题 Varchar 20 无 否 Content 留言内容 text 8 无 否

PublishTime 发表时间 Datetime 8 无 否 LastModifyTime 最后回复时间 Datetime 8 无 否 UserName 用户名 Varchar 20 无 否 BlogID 用户ID Int 4 无 否

(5)类别表,此表用于保存日志类别的基本信息。其结构如表4.5所示。 表4.5 类别表

列名 含义 类型 长度 缺省值 允许空 CategoryID 类别编号 Int 4 无 否 Name 类别名 Varchar 20 无 否 Description 类别描述 Varchar 100 无 是 BlogID 用户编号 Int 4 无 否

数据表在设计完成后,指定好各数据表主键、外键,通过SQL Server 2000企业管理器中提供的新建数据库关系统图即可自动生成表与表之间的关系图。各个关联表之间通过设置好的外键连接在一起。 本系统具体的数据表之间关系图如图4.6所示:

图4.6 数据表之间关系图 4.3 数据连接

目前流行的数据库连接技术主要有:JDBC-ODBC桥、JDBC和数据连接池技术。该系统采用数据连接池技术,使用连接池的优点主要体现在两个方面:对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用程序中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。便于程序的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与程序无关。 数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接。这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。

数据库连接池的主要操作如下:

(1)建立数据库连接池对象(服务器启动)。

(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。 (3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。 (4)存取数据库。

(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。

(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

第5章 系统功能的具体实现 5.1 系统的主窗口

系统的界面按照常规的WEB界面进行设计,设计的原则是界面友好,易于操作,容易上手,尽可能的贴切用户实际。

博客信息管理系统首页图如图5.1所示。

图5.1 博客信息管理系统首页图

所有的网络用户都可以进入该首页进行登录、注册、浏览等相关的操作。在页面的上方是博客信息管理系统的导航列表,图中显示的导航条包括登录、注册、博客列表、博文全览以及站务公告。在页面的左侧是热点博客,包括博客主题及其用户名;新入博客,包括博客主题;站内搜索条,用户可以根据日志标题进行搜索;最新评论列表,包括评论标题;最新留言列表,包括留言标题;站点的统计信息,包括博客总数,日志总数。在页面的中间则是精华日志和最新日志列表,包括用户名、日志标题、浏览次数和发表时间;页面的底部是版权说明信息。 个人博客主页界面图如图5.2所示。

图5.2 个人博客主页界面图

所有的网络用户都可以进入某个人的博客主页进行浏览、留言等相关的操作。在页面的上方是个人博客日志的分类名列表,包括分类名及其该分类下的日志数量。在页面的左侧分别是登录表单,提供博客管理员进入后台管理页面;个人博客精华日志列表,包括日志标题;最新评论,包括评论标题;最新留言,包括留言标题;站点信息,包括个人日志总数、评论总数和留言总数。在页面的中间则分别是最新日志的列表,包括日志标题、所属分类名、发表时间、作者、部分日志内容及其查看日志和发表评论链接;发表留言表单,包括昵称、留言标题和留言内容。

5.2 公共核心类的设计 5.2.1 数据库相关 访问数据库相关类如下: (1)获取数据源,其代码如下: public static Connection getConnection(){ try { Context ctx = (Context)new InitialContext().lookup(Constants.ENV); DataSource ds=(DataSource)ctx.lookup(Constants.JDBC); getConnection()方法:该方法通过Context类提供的lookup()方法查找数据源,从而获得jdbc/blog数据源的引用,得到DataSource对象的引用后,就可以通过DataSource的getConnection()方法获得数据库连接对象。 (2)连接数据库和操作数据库;代码如下:

// 构造数据库的连接和访问类 public DBConnect() throws Exception { // 获得数据库连接对象

conn=DB.getConnection();

// 创建一个JDBC声明

stmt = conn.createStatement(); // 预设SQL语句

public void prepareStatement(String sql) throws SQLException { prepstmt = conn.prepareStatement(sql); } // 设置索引值位置的对应值

public void setString(int index, String value) throws SQLException { prepstmt.setString(index, value); } public void setInt(int index, int value) throws SQLException { prepstmt.setInt(index, value); } // 执行SQL语句并返回字段集

public ResultSet executeQuery() throws SQLException { if (prepstmt != null) { return prepstmt.executeQuery(); } else return null; } DBConnect()方法:该方法主要负责获得数据库连接对象。

prepareStatement(String sql)方法:该方法主要完成预设SQL语句,只有一个用来接收SQL语句的参数,如果SQL语句有误将抛出异常。

setString(int index, String value)方法:该方法用于设置预设SQL语句中的相应字段值,index表示索引位置,value表示需设置字符串类型的值。

setInt(int index, int value)方法:该方法用于预设SQL语句中的相应字段值,index表示索引位置,value表示需设置整型类型的值。 executeQuery()方法:该方法用于执行预设的SQL语句。 5.2.2 编写JavaBean类

为每一个数据库表建一个JavaBean类,完成对该表字段的获取和设置。 博客信息管理系统所用的JavaBean类列表如表5.1所示。 表5.1 JavaBean类列表 JavaBean类 说明

Blog类 博客管理员表对应的JavaBean类 Article类 日志表对应的JavaBean类 CateGory类 类别表对应的JavaBean类 FeedBack类 评论表对应的JavaBean类

Meage类 留言表对应的JavaBean类 Feedback类的代码如下: public cla Feedback { // 属性,对应数据表中的字段名 private int feedbackid; private String title; // 字段的访问和设置方法 public int getFeedbackid() { return feedbackid; } public void setFeedbackid (int feedbackid) { this.feedbackid = feedbackid; } Feedback类:通过getFeedbackid()方法获取feedbackid属性的值,通过setFeedbackid (int feedbackid)方法设置feedbackid属性的值。 5.2.3 管理类设计

上面每一个JavaBean类都有一个相对应的管理类,是在JavaBean类及数据库相关类的基础上完成对数据库表的访问、更新、统计操作。 博客信息管理系统所用的管理类列表如表5.2所示。 表5.2 管理类列表 管理类 说明

BlogMgr类 完成对博客管理员表的查询、更新及统计 Article类 完成对日志表的查询、更新及统计 FeedBack类 完成对评论表的查询、更新及统计 Meage类 完成对留言表的查询、更新及统计 FeedbackMgr类的部分代码如下: public cla FeedbackMgr { /* * 添加评论

*/ public void add(Feedback feedback){ DBConnect dbc = null; ResultSet rs = null; try { // 新建数据库连接和访问对象

dbc = new DBConnect(); // 预设sql语句

dbc.prepareStatement("INSERT INTO

feedback (title,content,publishtime,lastmodifytime,username,articleid) VALUES ( ?,?,?,?,?,?)"); // 设置对应值

dbc.setString(1, feedback.getTitle()); dbc.setString(2, feedback.getContent()); dbc.setDate(3, new java.sql.Date(new java.util.Date().getTime())); dbc.setDate(4, new java.sql.Date(new java.util.Date().getTime())); dbc.setString(5, feedback.getUsername()); dbc.setInt(6, feedback.getArticleid()); // 执行该更新语句

dbc.executeUpdate(); /* * 查询所有评论(按最后修改时间) */ public Collection getAllByLastModifyTime() { DBConnect dbc = null; Collection c = new ArrayList(); ResultSet rs = null; try { // 新建数据库连接和访问对象

dbc = new DBConnect(); // 执行SQL语句,返回字段集

rs=dbc.executeQuery("SELECT * FROM feedback order by lastmodifytime desc"); Feedback feedback = null; while (rs.next()) { // 新建评论对象

feedback = new Feedback(); // 设置评论对象相关的属性

feedback.setFeedbackid(rs.getInt("feedbackid")); feedback.setTitle(rs.getString("title")); feedback.setContent(rs.getString("content")); feedback.setStrpublishtime(rs.getString("publishtime")); feedback.setStrlastmodifytime(rs.getString("lastmodifytime")); feedback.setUsername(rs.getString("username")); feedback.setArticleid(rs.getInt("articleid"));

// 将该评论对象存入集合对象中

c.add(feedback); // 将该评论对象置为null feedback = null; // 如果结果集不会空,则循环添加该评论对象

} FeedbackMgr类:封装了对评论表的所有操作,包括添加评论、回复评论、删除评论、查询某日志的所有评论(按最后修改时间排序)和查询某用户的所有评论(按最后修改时间排序)等。 5.3 系统主要功能模块详述 5.3.1 博客管理员登陆模块

当用户需发表新日志或者是对博客进行管理时,就必须先进行登陆验证操作,然后进入博客信息管理系统后台。用户登陆界面图如图5.3所示。

图5.3 用户登陆界面图

登陆模块的客户端验证代码如下:

validateLogin()方法,用来验证是否填写了用户名和密码。一般地,在将用户提交的数据提交到数据库进行数据库操作之前,需要对数据的有效性进行验证,确保这些数据是安全的,一般是不能为空或空格,这样系统不会产生错误。另外,对于有实际意义的数据,一般有特定的形式,也可以进行有效性验证。 5.3.2 日志管理显示模块

日志管理显示界面图如图5.4所示。

图5.4 日志管理显示界面图

日志管理显示模块列出了日志编号、日志标题以及相应的操作:编辑日志和删除日志。根据选择的分类显示当前分类下的日志列表。当然,对日志进行操作的前提条件是当前登录用户具备相应的管理权限。 日志管理显示模块核心代码如下: // 新建日志管理对象

ArticleMgr articleMgr=new ArticleMgr(); // 根据博客ID,获得该博客所有日志的总数

int maxrowcount=articleMgr.getTotalByBlogId(blogid); // 新建分页处理对象,并完成相应的初始化 Page webpage=new Page(); // 为分页对象设置所有的记录数

webpage.setMaxrowcount(maxrowcount);

// 根据默认的每页显示行数和所有记录数计算出总页数 webpage.setMaxpage(); // 获取当前页码

String curpagestr=request.getParameter("curpage"); // 设置当前页码

webpage.setCurpage(curpagestr); // 根据博客ID和当前页码,获得当前页的所有日志对象集合 Collection c=articleMgr.getOnePageByBlogIdLastModifyTimeDesc(blogid,webpage); // 新建类别管理对象

CategoryMgr categoryMgr=new CategoryMgr(); Iterator iterator = c.iterator(); // 循环获取日志对象集合中的每一个日志对象 while (iterator.hasNext()) { // 获取日志对象集合中的一个日志对象

Article article = (Article) iterator.next(); %> // 显示日志的ID

// 显示日志的标题

// 显示日志的最后修改时间

// 显示日志的浏览次数和评论数 / // 日志修改和删除的链接

修改

删除

// 日志分页信息

// 获得该博客的所有发表的日志总数 共篇日志

// 返回首页链接,如果当前页就是第一页则首页链接不可用 首页

// 返回上一页链接,如果当前页就是第一页则上一页链接不可用 上一页

首页 上一页

// 返回下一页链接,如果当前页就是尾页则下一页链接不可用 下一页

// 返回尾页链接,如果当前页就是尾页则尾页链接不可用 尾页

下一页 尾页

// 显示当前页码和总页数 页次:/页

// 显示每页显示多少条记录 篇日志/页

在上述实现代码中,通过博客用户名来获得该用户ID。通过用户ID获得该用户的所有日志信息,并分页显示出来,显示该用户可以进行的所有操作,如修改和删除日志。 5.3.3 撰写日志模块

撰写日志界面图如图5.5所示。

图5.5 撰写日志界面图

当用户需要添加新的日志时,可单击日志管理显示界面中的添加日志链接,进入添加新日志的界面。在日志标题、内容输入域内输入相应的文字,以及选择分类后,单击“确定”按钮进行表单提交,完成添加新日志的操作[14]。 其关键代码如下:

// 从当前会话中获得用户名

String username=(String) request.getSeion(true).getAttribute("username"); // 获得日志标题

String title = request.getParameter("title"); // 获得日志内容

String content = request.getParameter("content"); // 获得日志分类号,并转换为整型

int categoryid = Integer.parseInt(request.getParameter("categoryid")); // 新建日志对象

Article article=new Article(); // 为该日志对象设置相应的属性,如标题、内容和日志类别号 article.setTitle(title); article.setContent(content);

article.setCategoryid(categoryid); // 新建博客管理对象

BlogMgr blogMrg=new BlogMgr(); // 根据用户名,得到该用户的ID int blogid=blogMrg.getBlogIdByUsername(username); // 为该日志对象设置所属的用户ID属性 article.setBlogid(blogid); // 新建日志管理对象

ArticleMgr articleMgr=new ArticleMgr(); // 通过日志管理对象添加该日志对象,返回日志ID

int articleid=articleMgr.add(article); 在上述实现代码中,首先从当前会话中获得该用户的用户名,从提交的表单中获得日志标题、日志分类和日志内容信息;然后通过日志对象来封装日志的相关属性,最后通过日志管理对象以日志对象为参数来完成对日志的添加操作。 5.3.4 删除日志模块

如果需要删除已发表的日志,可单击日志管理显示界面中的删除日志链接,将弹出删除日志确认对话框图如图5.7所示。

图5.7 删除日志确认对话框图

再次确认用户是否真的要进行该日志的删除操作,而不是误操作。点击确定按钮完成日志删除操作,点击取消按钮取消该删除操作。 完成日志删除操作的核心代码如下: try{ conn=DB.getConnetion(); //禁止自动提交,设置回滚点 conn.setAutoCommit(false); stmt=conn.createStatement(); //删除该日志的所有评论

stmt.prepareStatement(“delete from feedback where articleid=?”); stmt.setInt(1,articleid); stmt.executeUpdate(); //删除该日志

stmt.prepareStatement(“delete from article where articleid=?”); stmt.setInt(1,articleid); stmt.executeUpdate(); conn.commit(); //事务提交

}catch(Exception ex){ ex.printStackTrace(); try{ conn.rollback(); //操作不成功则回滚 }catrch(Exception e){ e.printStackTrace(); } }finally{ try{ stmt.close(); conn.close(); }catch(Exception e){ e.printStackTrace(); } } 由于每一篇日志允许用户进行评论,日志可能有相应的日志评论,在进行日志删除操作时,得先删除该日志的所有评论,然后删除该日志。为了保持数据库中的数据一致性,本系统采用事务来完成该删除操作。在数据库操作中,一项事务是指由一条或多条数据库更新的SQL语句所组成的一个不可分割的工作单元。只有当事务中所有操作都正常完成,整个事务才能被提交到数据库;如果有一项操作没有完成,就必须撤销整个事务。 5.3.5 修改日志模块

修改日志界面图如图5.6所示。

图5.6 修改日志界面图

当用户需要修改已发表的日志,可单击日志管理显示界面中的修改日志链接,进入修改日志界面。该模块与添加日志模块相似,不同的是先从数据库中获得该日志的信息,显示在修改表单中,然后用户在日志标题、内容输入域内修改相应的文字,以及选择分类后,单击“修改”按钮进行表单提交,完成对该日志的修改操作。

5.3.6 日志搜索模块

当发布的日志越来越多时,想要很快找到需要的日志,如果仅仅是通过浏览日志标题列表来定位,将是一件非常困难的事情。因此,提供一种快速查询的方法将是非常有必要的。该模块具有快速搜索功能,搜索的结果是根据输入的关键字,到数据库中对日志标题或日志内容项进行模糊查询。 日志搜索结果显示的核心代码如下:

日志标题:” target=”_blank”> 发表时间:

页面获取查询到的日志列表信息,然后再控制动态显示输出。当用户在该页面中单击日志标题的超级链接后,将提交附有日志编号属性的请求,以显示指定日志的详细信息。

结 论

论文研究了关于博客信息管理系统的需求分析,并完成了系统的设计与实现。归纳起来,主要完成了以下的工作:

(1)阐述了博客信息系统及其发展趋势,分析了目前我国博客信息系统的发展趋势和存在问题。确定了开发博客信息管理系统的基本技术路线。

(2)从用户需求的角度说明开发博客信息系统的可行性,并针对所收集的资料整理出系统的业务流程图、功能模块图、实体联系图和整体框架图。

(3)确定系统开发所需要的技术,结合现有的数据和编程思想,生成需要的数据库。明确各项工作的分工,数据的维护和使用权限的设定。

(4)在详细设计和编码阶段,运用了JSP最基本的开发技术,代码简单易懂,系统里网页间跳转比较清晰。完成了普通用户和系统管理员两者的功能分离,而且各自的功能操作都能得到正确数据并存入数据库中保存。

系统的开发以及论文的研究由于时间的关系,有一些地方做的还不是很完美。对MVC设计模式的研究时间不长,所以在写代码的时候还没有做到真正的得心应手,是在查询一些帮助文档的情况下才完成的。还存在着一些不足和不完善的地方。归纳起来主要体现在以下三个方面:

(1)系统功能趋于简单。真正的博客信息系统包括很多方面的信息,如可以在博客之间发送即时短消息,可以定制博客个人主页等。

(2)系统图形显示功能缺乏。目前系统中对数据的添加、删除和修改功能都没有图形快捷操作,而且整个系统的界面显得过于单调,缺乏动态图形显示效果。如果能结合其它界面美化工具,界面就能更人性化。

(3)还有就是整个系统采用JSP+JavaBean+Servlet的网页构建技术,能很好地把逻辑处理和界面显示分开来,也便于网页的维护,但如果使用当前经典的框架结构Struts框架结构,将能更好地实现逻辑代码与数据之间的分离。

参考文献

[1] 俞传正.基于博客的个人知识管理平台研究[D].天津:天津师范大学,2006.

[2] 陈明.Blog、Wiki在协作学习中的应用研究[D].武汉:华中师范大学,2006.

[3] 郭华伟.基于内容聚合BLOG学习的平台的辅助教学研究与实践[D].北京:首都师范大学,2006.

[4] 柳永坡,刘雪梅,赵长海.JSP应用开发技术[M].北京:人民邮电出版社,2005:30-32.

[5] 耿祥义.JSP基础教程[M].北京:清华大学出版社,2004:101-103. [6] 孙卫琴、李洪成.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2004:73-78.

[7] 李海峰.基于J2EE技术开发高性能BBS论坛[D].上海:华东师范大学,2006.

[8] 王夕宁,王晓平.JSP通用模块及典型系统开发实例导航[M].北京:人民邮电出版社,2006: 288-296.

[9] 赛奎春.JSP信息系统开发实例精选[M].北京:机械工业出版社,2006: 66-72.

[10] 陈刚.Eclipse从入门到精通[M].北京:清华大学出版社, 2005:416-417.[11] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004: 1-9.

[12] 胡百敬,姚巧玫.SQL Server 2005 数据库开发详解[M].北京:电子工业出版社,2006:9-13,123-125.

[13] (美)格罗夫 著,章小莉 等译.SQL完全手册(第二版)[M].北京:电子工业出版社,2006:12-14.

[14] 毕建信.基于MVC设计模式的Web应用研究与实现[D].武汉:武汉理工大学,2006.

[15] 贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:华中科技大学,2005.

论文.jsp

jsp技术网站设计外文翻译

博客营销论文

博客论文2

营销论文 博客营销

中文论文网站

个人博客网站的设计与实现

系统开发总结

系统开发请示报告

系统开发总结

基于JSP的博客网站系统开发(论文)
《基于JSP的博客网站系统开发(论文).doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档