基于java的博客网站设计与开发毕业论文

2024-05-05

基于java的博客网站设计与开发毕业论文(精选6篇)

篇1:基于java的博客网站设计与开发毕业论文

编号

中央广播电视大学计算机与科学技术专业

学生姓名:黄志刚

学 号:14360012501

专 业:计算机与科学技术

班 级:

指导教师:李慧

2016年04月

目录

目录

I V VII VIII 1 1 1 2 2 2 3 3 3 4 5 6 6 7 摘要

前言

文献综述

第1章 绪论

第1节 第2节 背景

研究的目的与意义

第2章 设计简介及设计方案

第1节 第2节 第3节 设计原则 运行架构 设计方案

第3章 相关技术介绍

第1节 第2节 第3节 MVC简介

Spring 的起源和背景 Hibernate 概述

第4章 需求分析

第1节 第2节 注册博友 普通用户

I 9 10 10 11 11 12 12 14 15 15 15 15 17 18 20 第5章 系统架构设计

第1节 第2节 系统架构说明: Hibernate层

5.2.1 设计持久化对象(PO)5.2.2 实现DAO 层 5.2.3 DAO组件的定义 5.2.4 实现DAO组件 5.2.5 部署DAO 层

第3节 第4节 实现Service 层 MVC 层实现

5.4.1 1.Model 部分 5.4.2 View 部分

5.4.3 3.Controller部分 5.4.4 采用Ajax加深用户体验

设计结果及对设计结果的分析

全文总结

致谢21

目录

目录

I V VII 摘要

前言

II

VIII 1 1 1 2 2 2 3 3 3 4 5 6 6 7 9 9 10 10 11 11 12 文献综述

第1章 绪论

第1节 第2节 背景

研究的目的与意义

第2章 设计简介及设计方案

第1节 第2节 第3节 设计原则 运行架构 设计方案

第3章 相关技术介绍

第1节 第2节 第3节 MVC简介

Spring 的起源和背景 Hibernate 概述

第4章 需求分析

第1节 第2节 注册博友 普通用户

第5章 系统架构设计

第1节 第2节 系统架构说明: Hibernate层

5.2.1 设计持久化对象(PO)5.2.2 实现DAO 层 5.2.3 DAO组件的定义 5.2.4 实现DAO组件

III 14 15 15 15 15 17 18 20 5.2.5 部署DAO 层

第3节 第4节 实现Service 层 MVC 层实现

5.4.1 1.Model 部分 5.4.2 View 部分

5.4.3 3.Controller部分 5.4.4 采用Ajax加深用户体验

设计结果及对设计结果的分析

全文总结

致谢21

IV

摘要

越来越多的网络用户希望能够在网络平台上更多地展现自己的个性,更方便地与他人互动交流,拥有一个自己独立的空间,随着Web2.0时代的到来,一个新的概念出现了——博客。

首先介绍了博客网站设计的意义和背景,主流博客网站的主要功能。重点介绍了基于J2EE架构的博客网站设计方案,实现的主要功能。

其次,重点讲述了博客网站的业务逻辑层和持久层的设计与开发过程中所涉及的技术及开源框架。系统如何以Spring 框架为核心,向下整合Hibernate进行持久层访问,向上整合Struts 按清晰的MVC 模式控制,怎样划分应用的层次。简述了页面的请求的分发及流程。

最后对BLOG网站开发中所碰到的一些问题,并针对这些问题提出一些解决方案,最后对系统性能作出一些简要评估,阐述了一些个人想法。

关键词: 博客,J2EE, Spring,Struts,Hibernate

Abstract More and more network users hope to unfold there characteristics in the network platform and interact with people more conveniently.From the begining of Web 2.0, a new concept of blog emerged.Firstly, we introduce the meaning and background of designing of blog site, and then introduce the main function of the blog site briefly.We also introduce the designing scheme of blog site which is based on the architecture of J2EE.The main function carried out in our blog project is presented.Secondly, we introduce the designing of logic and permanent layer of the blog site.The technic and structure refered in the process of developing are presented.We also depict how to be around with frame of Spring, how to work with Hibernate to visit permanent layer below, how to work with Struts to control the clear MVC model up and how to divide layers of application.We also give the brief introduce of distribution and flow of pages’request.Finally, we discuss some problems about the blog realization and show schemes of solving problems.Brief evaluation on the performance of system is given.We give a comment on problems occurring in our work.V

Keywords: blog, J2EE, Spring, Struts, Hibernate

VI

前言

本文介绍了基于轻量级J2EE开发博客网站。同时利用Spring、Struts、Hibernate、Ajax等框架整合开发。本文主要分为七章。

第一章主要介绍了进行博客网站的背景及意义。第二章对博客网站设计方案做了简要介绍。第三章介绍了博客网站的需求分析。

第四章详细介绍了系统的架构设计,并详细讲述了通过Spring 框架,向下整合Hibernate 进行持久层访问,利用DAO模式隔离业务逻辑层与具体持久层,向上整合Struts按清晰的MVC模式构建系统。

第五章简单讲述了系统设计时遇到的问题及解决方案,另外对系统的性能作了一个简要的评论及设计结果和设计结果分析。

第六章对全文所使用的方法、结果以及目的和意义做了全面的总结,展望java技术在Web上的一些应用。

本文的完成得到了戴祖旭博士的帮助和指导,在此向他表示衷心的感谢。

VII

文献综述

Hibernate相关文献介绍

文献错误!未找到引用源。围绕着ORM,讲述了对象映射配置,对象关系映射、集合映射、对象的操作和查询。及详细如何利用Hibernate 构建DAO层,怎样根据PO的关系。面向对象操作数据库,怎么配置数据库映射文件。Java基础文献概述

文献错误!未找到引用源。讲述了java基础知识,如控制流程、初始化和清理、接口和内部类等。并讲述如何利用对象提供服务,并通过接口隐藏具体实现。J2EE相关文献概述

文献错误!未找到引用源。论述了在J2EE平台中在各层经常遇到的问题,该文献详细讲解如何解决J2EE平台所遇到的问题。

文献错误!未找到引用源。将述了如何构建轻量级的J2EE企业应用程序,并讲解MVC在Web中应用,怎么将请求控制并转发,Struts标签。

文献错误!未找到引用源。详细讲述了Spring 的控制反转、AOP编程思想。及其怎么利用Spring整合Hibernate,利用Spring提供IOC容器管理DAO组件,利用事务管理SessionFactory。

文献错误!未找到引用源。以8 个小型J2EE项目讲述怎么利用Struts、Hibernate、Spring等框架构建J2EE Web应用。并且也详细讲述各个框架的在项目中应用。文献错误!未找到引用源。这本书是有3个具有15以上的开发经验的企业java架构师或首席架构师所著。本书讲述了J2EE的3层所涉及的核心模式。通过通用模式可以更快构建稳定的J2EE应用。

文献错误!未找到引用源。这本书详细讲述了架构设计的方法。架构设计应该包括那些方面。

怎么应用架构模式。Ajax技术文献概述

文献错误!未找到引用源。讲述了JavaScript、CSS、DOM、XML的在Ajax上一些应用。如何利用这四个技术实现html片段的替换。并结合一些实例讲述如何利用Ajax 实现友好用户体验。Eclipse文献概述

文献错误!未找到引用源。讲述了如何利用Eclipse开发java应用程序。该文献主要讲如何构建java开发环境,如何安装Eclipse插件。并利用Eclipse自动生成一些代码。Jsp文献概述

文献错误!未找到引用源。围绕着实例讲述Jsp的各种技术。比如Servlet,JavaBean 在Jsp中的应用。本文中的图片播放器和音频播放器是基于这书上实例改进的。

VIII

第1章 绪论

第1节 背景

商业网站设计的主要目的一般是通过网站的推广,实现更多网络用户的关注,从而吸引更多的企业用户投入更多的宣传经费到网站上。

长期的战略目标,商业网站不仅是公共产品信息和服务的推广,它还是将买家与卖家、厂商和合作伙伴紧密结合的平台,借助这些商业网站可以消除企业与客户之间时间与空间带来的障碍。

Blog博客网站致力于为广大博客提供优质博客页面服务的商业网站。每个博客都希望借助自己的博客页面宣传自己,而博客数量越多,网站的点击率越高就越能够吸引广大的企业客户选择该商业网站作为媒介,将自己的产品展现给客户。可以说,对这些博客网站而言:为博客提供良好的服务就意味着为网站带来更多的商业客户。因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能。

1.博客的注册、登录验证功能

2.网络用户通过关键字搜索博文功能 3.最热门博客页面推荐浏览

4.文章详细内容及相关评论显示 5.博客页面访问量统计

6.博客个人文章管理维护功能

7.博客个人文章分类管理维护功能 8.博客个人友情链接维护功能

9.博客个人基本信息管理维护功能 10.博客图片上传及个人相册管理

11.网络用户写留言,博主查看留言。第2节 研究的目的与意义

Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同时又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog。随着博客人数的增加,Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一的思想和群体的智慧结合变的更加有效,个人出版变成人人都可以实现的梦想—— Blog 正在影响和改变着我们的生活。

第2章 设计简介及设计方案

在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。第1节 设计原则

在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际需求,选择合适的开发工具及软件架构。

blog对系统的可靠性、稳定性有比较高的要求。本系统设计时,比较主流的B/S设计有基于JSP、ASP、PHP、CGI及J2EE等模式。相比较而言PHP的功能相对简单,不适合做大程序;而CGI效率相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。第2节 运行架构

为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL错误!未找到引用源。

该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下:

1.服务器端操作系统:独立于操作系统的跨平台系统,客户端MicroSoft Windows 2000及以上;

2.数据库:MySQL 5.0.27版本; 3.Web服务器:Tomcat 5.5及以上版本,配合MVC设计模式及 Hibernate开发架构; 4.客户端运行环境:能运行IE 5以上或Netscape 5以上浏览器的操作系统,配合

使用Ajax技术;

5.客户端运行工具:目前的系统采用浏览器作为客户端,为了支持Ajax开发框架,应该选择使用IE 5以上版本浏览器。

本网站以NT为Web平台,JSP+Ajax+Servlet+JavaBean+Hibernate为网站实现技术,建立基于MySQL数据库系统的核心动态网页,实现博客网站前台及博客个人维护管理等功能模块。第3节 设计方案

为了在更短的时间内实现博客网站,我们采用J2EE架构。集成开发环境我采用对于插件即插即用的Eclipse,JSP运行环境我们采用Tomcat应用服务器,数据库管理系统我们采用的是MYSQL,博客网站主要实现注册用户可以在 服务器上开辟自己的空间,也可以发布消息,上传文件,回复消息,从服务器发送客户端的数据应用XML来封装.本系统采用的是经典的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。并利用Spring、Hibernate、Spring等轻量级框架实现三层结构的设计。即采用的是贫血模式,业务逻辑对象正面封装了全部的业务逻辑方法,Web 层仅与业务逻辑组件交互即可,无须访问底层的DAO 对象。Spring 的声明式事务管理将负责业务逻辑对象方法的事务性。在贫血模式下,其分层非常清晰。Domain Object 并不具备领域对象的业务逻辑功能,仅仅是ORM 框架持久化所需的POJO,仅是数据载体。贫血模型容易理解,开发便捷,但严重背离了面向对象的设计思想,所有的Domain Object 并不是完整的Java 对象。

第3章 相关技术介绍

第1节 MVC简介

MVC 是Model、View、Controller 三个词的缩写,三个词分别代表应用的三个组成部分:模型、视图与控制器。三个部分以最少的稿合,协同工作,从而提高应用的可扩展性及可维护性。起初,MVC 模式是针对相同的数据需要不同显示的应用而设计的,其整体的效果如图1 所示:

图1 MVC结构

在经典的MVC 模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。具体地说,模型维护一个视图列表,这些视图为获得模型变化通知,通常采用观察者模式登记给模型。当模型发生改变时,模型向所有登记过的视图发送通知:接下来,视图从对应的模型中获得信息,然后更新自己。概括起来,MVC 有如下特点。.多个视图可以对应一个模型。按MVC 设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。

1.模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如使用JSP 页面、Velocity 模板或者直接产生Excel 文档等。

2.应用被分隔为三层,降低了各层之间的稿合,提供了应用的可扩展性。

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

4.MVC 更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。第2节 Spring 的起源和背景

2002 年wrox 出版了《Expert one on one J2EE design and development》 一书。该书的作者是Rod Johnson。在书中,Johnson 对传统的J2EE 架构提出深层次的思考和质疑。并提出J2EE 的实用主义思想。2003 年,J2EE 领域出现一个新的框架: Spring,该框架同样出自Johnson 之手。事实上,Spring 框架是«Expert one on one J2EE design and development» 一书中思想的全面体现和完善,Spring 对实用主义J2EE 思想进一步改造和扩充,使其发展成更开放、清晰、全面及高效的开发框架。一经推出,就得到众多开发者的拥戴。传统J2EE 应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE 的应用并没有真正实现Write Once 及Run Anywhere 的承诺。Spring 作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。Spring 致力于J2EE 应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring 是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring 并不想取代那些已有的框架,而与它们无缝地整合。总结起来,Spring 有如下优点: 1.低侵入式设计,代码污染极低。

2.独立于各种应用服务器,可以真正实现Write Once, Run Anywhere 的承诺。3.Spring 的DI 机制降低了业务对象替换的复杂性。

4.Spring 并不完全依赖于Spring,开发者可自由选用Spring 框架的部分或全部。

第3节 Hibernate 概述

Hibernate 是目前最流行的ORM 框架,其采用非常优雅的方式将SQL 操作完全包装成对象化的操作。其作者Gavin King 在持久层设计上极富经验,采用非常少的代码实现了整个框架,同时完全开放源代码,即使偶尔遇到无法理解的情况,也可以参照源代码来理解其在持久层上灵巧而智能的设计。目前Hibernate 在国内的开发人员相当多,Hibernate 的文档也非常丰富,这些都为学习Hiberante 铺平了道路,因而Hibernate 的学习相对简单一些。下面通过对比来了解Hibernate 和传统JDBC 操作数据库持久层之间的差异。

第4章 需求分析

Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为上网用户提供按博文主题搜索,查看注册用户的博文及提出相关评论,并为注册用户写留言,游览注册用户的相册、注册等功能的系统。下面就以两种不同的用户来分析博客网站的需求。第1节 注册博友

首先必须在博客首页中登录填写用户名和密码,这样才能执行一些相关操作,不然就是普通用户只能查看一些信息,而不能发表博文。可以在管理页面上添加博文的分类,可以上传图片和游览自己的相册,在上传过程中可以将一张图片定义为自己的签名,在个人管理页面中注册用户还可以修改自己的个人信息。博文管理,友情链接管理及博文分类管理,用例图2。

图2 博客管理页面的用例图

在博客主界面中发表博文时可以选择博文类型,这样可以更好管理自己的博文。并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间。更好交流,在信息时代人们通过个人空间沟通也用来但不能在自己的博客主页面中提交评论和留言。这样在本系统中就可以为博友提供更多的个人色彩。在管理页面中添加和删除友情连接。这样博友可以在自己空间中快速定位自己的关心的网站。这样还可以让网友看到自己的一些信息。友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。博客主页面的用例图如图3所示:

图3 博客主页面的用例图

第2节 普通用户

在博客注册页面注册成为博客的注册用户,才可以拥有自己独立的空间,进入某一博客页面查看相关文章信息时,可以随时对自己所感兴趣的文章发表评论,同时也可以查看到其他人针对该博文的评论。普通用户在阅读博文时可以在最后留下自己的一些评论。他也可以留下更多的信息。这样他可以写留言。这样他留下的信息就更快地被博友所看到。普通用户进入博友的用例图如图4所示:

图4上网博友在博客主页面的用例图

普通网友可以搜索自己关心的一些数据。并且在搜索结果中提供在结果范围内再次搜索。这样就可以将范围缩小。首页向注册用户提供登陆模块,注册用户在博客网站首页跟上网网友一样可以查看博客和博文推荐。上网网友可以注册成为博客用户,拥有自己独立的空

间。这一模块的用例图如图5所示:

图5 博客首页的用例图

第5章 系统架构设计

本系统采用严格的J2 EE 应用结构,主要有如下几个分层。

1.表现层:由JSP 页面组成。2.MVC 层:使用Struts框架。

3.业务逻辑层:主要由Spring loC 容器管理的业务逻辑组件组成。

4.DAO 层:由7 个DAO 组件组成,实现类必须继承Spring提供的HibernateDaoSupport。

5.Hibernate 持久层:由7 个PO 组成,并在Hibernate Session 管理下,完成数据库访问。

6.数据库服务层:使用MySQL 数据库存储持久化数据。系统的具体分层如图5 所示。

图6 系统结构图

在图6 黑色大方框内的MVC 控制层、Service 层及DAO 组件层的组件,都由Spring IOC 容器负责生成,并管理组件的实例(实例必须是单身模式的,本系统中的bean基本上是单身的)。

第1节 系统架构说明:

本系统不仅严格按MVC 模式设计,还按J2 EE 分层设计,将中间层严格分成业务逻辑层、DAO 层及数据持久层等。MVC 层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现。表现层采用传统JSP 技术。

本系统采用的是典型的J2EE 三层结构,分为表现层、中间层(业务逻辑层)和数据服务

层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。Jsp广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。

Web 层,就是MVC 模式里面的C,负责逻辑层和表现层的交互。调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架。

Service 层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO 层为基础,通过对DAO 组件的正面模式包装,完成系统所要求的业务逻辑。

DAO 层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。

PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate 作为ORM 框架。Spring 的作用贯穿了整个中间层,将Web 层、Service 层、DAO 层及PO 无缝整合,其数据服务层用来存放数据。

第2节 Hibernate层

通过使用Hibernate 持久层,可以避免使用传统的JDBC 操作数据库,对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据库。保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、设计及编程,透过Hibernte 对PO对象持久化操作,不管插入还是查询都是通过PO。5.2.1 设计持久化对象(PO)面向对象分析,是指根据系统需求提取应用中的对象,将这些对象抽象成类,再抽取出需要持久化保存的类,这些需要持久化保存的类就是持久化对象(PO)。该系统并没有预先设计数据库,而是完全从面向对象分析开始,设计了7 个持久化类。本系统一共设计了如下7 个PO。

1.Blog: 对应博客网友的一些基本信息,必如id、username、password、sex、picturename、name、address、uid、subject。还包括一些集合,博友的博文(Articles)、图片(Pictures)、留言(Messages),这样在系统中我们可以随时通过getXxx()访问博客的一些属性就不用编写sql语句来访问博友的些属性,2.Picture: 对应博友的图片,包含name、blog,filename,这样我们可以将图片 的路径名保存到数据库中,在根据路径名访问博友上传的图片,就不用用到数据库中的Blob类型,将图片数据格式转来转去,不过这样服务器直接存储客户的图片。

3.Messages: 对应网友留下的留言,属性有id、username、Blog、注册用户可以查看别人写的留言,但不能在自己的空间内留言。

4.FeedBack: 对应回复,包括id、article、username、content。他对于一篇博文,是网友阅读博文后对博文的评论。该评论无论是谁都可以看到。

5.Sort: 对应博文分类属性有Id、Blog、name、Articles,注册用户可以在自己的空间定义一些分类,这样可以更好管理自己的博文,一个分类对应一个Blog,一个分类可能有很多分类。

6.Article: 博客系统的核心 对应有 title,Id、blog、content、sort,一个博文属于一种分类,可以有很多回复,7.Links: 对应有情连接,包括id、url、name、blog博友通过添加有情连接可以在自己的空间中提供快速的自己关心的网站。

客观世界中的对象不是孤立存在的,以上7 个PO 也不是孤立存在的,它们之间存在复杂的关联关系。分析关联关系也是面向对象分析的必要步骤,这7 个PO 的关系如下。Blog除了FeedBack外,与另外5个都是1-N的关系,在blog类里对应有个集合。比如messages,是SetArticle 和FeedBack之间存在I-N 的关系,每篇博文可以被很多人评论。Article和sort 之间存在N-1 的关系,即每篇博文只能属于一种分类中,并且只属于一个博友,在Hibernate框架中它提供了以xml文件形式出现的映射文件,完成从PO到数据库表映射后,即完成面向对象的程序设计语言与关系数据库的映射。以面向对象的方式操作关系数据库。5.2.2 实现DAO 层

在Hibernate 持久层之上,可使用DAO 组件再次封装数据库操作。通过DAO 层,可以让业务逻辑层与具体持久层技术分离,一旦需要更换持久层技术时,业务逻辑层组件不需要任何改变。因此,使用DAO 组件,即意味着引入DAO 模式,使每个DAO 组件包含了数据库的访问逻辑:每个DAO 组件可对一个数据库表完成基本的CRUD 等操作。DAO 模式的实现至少需要如下三个部分。1.DAO 工厂类。2.DAO 接口。

3.DAO 接口的实现类。DAO 模式是一种更符合软件工程的开发方式,使用DAO 模式有如下理由。

1)DAO 模式抽象出数据访问方式,业务逻辑组件无须理会底层的数据库 访问,而只专注于业务逻辑的实现。

2)DAO 将数据访问集中在独立的一层,所有的数据访问都由DAO 对象完成,这层独立的DAO 分离了数据访问的实现与其他业务逻辑,使得系统更具可维护性。

3)DAO 还有助于提升系统的可移植性。独立的DAO 层使得系统能在不同的数据库之间轻易切换,底层的数据库实现对于业务逻辑组件是透明的。数据库移植时仅仅影响DAO 层,不同数据库的切换不会影响业务逻辑组件,因此提高了系统的可复用性。

对于不同的持久层技术,Spring 的DAO 提供一个DAO 模板,将通用的操作放在模板里完成,而对于特定的操作,则通过回调接口完成。Spring 为Hibernate 提供的DAO 支持类是: HibernateDaoSupport,5.2.3 DAO组件的定义

DAO 组件提供了各持久化对象的基本的CRUD 操作。而在DAO 接口里则对DAO组件包含的各种CRUD 方法提供了声明,但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免业务逻辑组件与特定的DAO组件藕合。由于DAO 组件中的方法不是开始

就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法是通用 的。

• get: 根据主键加载持久化实例。

• saveor update: 保存或更新持久化实例。• remove: 删除持久化实例。

上面涉及了7个PO,这样我们必须设计7个对应的PODao 7个Dao必须继承BaseDao 这个BaseDao 有对接口的一些基本的CURD操作。7个Dao 如下。LinksDao,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao。这7个Dao 分别封装对自己的持久化对象的一些操作。5.2.4 实现DAO组件

借助于Spring的DAO支持,可以很方便地实现DAO类。Spring 为Hibernate 的整合提供了很好的支持,Spring 的DAO 支持类是:HiberanteDaoSupport,该类只需要传入一个SessionFactory 引用,即可得到一个HibernateTemplate 实例,该实例功能非常强大,数据库的大部分操作也很容易实现。所有的DAO 类都继承HibernateDaoSupport,并实现相应的DAO 接口。而业务逻辑对象则面向接口编程,无须关心DAO 的实现细节。通过这种方式,可以让应用在不同的持久化技术之间切换。LinksDaoHiberante,BlogDaoHiberante、FeedBackDaoHiberante、ArticleDaoHiberante、MessageDaoHiberante、SortDaoHiberante、PictureDaoHiberante分别是LinksDao,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao的实现类,并继承HibernateDaoSupport,并通过Spring IoC容器向7个Dao 实现类注入SessionFactroy,在7个Dao 的实现类就可以通过HibernateTemplate对PO持久化操作。并借助于Spring 提供的两个工具类: HibernateDaoSupport和HibernateTemplate,可以很容易地实现DAO 组件。这种简单的实现较之传统的JDBC 持久化访问,简直不可同日而语。比如我现在要得到所有Blog对象我只需一句 return getHibernateTemplate().find(“from Blog”);则返回一个Blog对象的列表。5.2.5 部署DAO 层

HibernateDaoSupport类只需要一个SessionFactory 属性,即可完成数据库访问。SessionFactroy创建Session,而数据库的CRUD操作都是有Session 完成,并将查询结果保存在一级缓存中,每次用户提交一次会话,可能需要Session完成一些数据库的操作而实际的数据库访问由模板类HibernateTemplate完成,该模板类提供了大量便捷的方法,简化了数据库的访问。5.2.5.1 DAO 组件运行的基础

应用的DAO 组件以Hibernate和Spring 为基础,由Spring 容器负责生成并管理DAO组件。Spring 容器负责为DAO 组件注入其运行所需要的基础SessionFactory。Spring 为整合Hibernate 提供了大量工具类,通过LocalSessionFactoryBean 类,可以将Hibernate 的SessionFactory 纳入其IoC 容器内。使用LocalSessionFactoryBean 配置

SessionFactory之前,必须为其提供对应的数据源,配置代码如下: 在datasource中配置它的数据库驱动driverClass,URL,username、password、inPoolSize、maxPoolSize 不管我们采用那种数据库我就可以在修改dataSource 的一些属性而不改动程序,将程序和数据库的耦合降到最低。5.2.5.2 配置DAD 组件

在将dataSource注入到上面简述的7个Dao中,就可以用HibernateTemplate提供的大量便捷的方法。进一步简化了持久层讨问,其模板的操作大大降低Hibernate 的重复操作;Spring 提供的DAO 支持简化了DAO 开发;SessionFactory 的依赖注入简化了Session 的控制等;这些都极大地提高J2EE应用的开发效率。声明式事务的管理分离了业务逻辑和事务逻辑,将应用从特定的事务逻辑中解料,使应用可以方便地在不同的事务策略之间切换。在所有的ORM 框架中,Sping 对Hibernate 的支持最好。Spring 提供很多IoC 特性的支持,方便地处理大部分典型的Hibernate 整合问题,如SessionFactory 的注入到7个PODao中、HibernateTemplate 的简化操作及DAO 支持等,然后在7个PODao实现类继承HibernateDaoSupport,这样的话,Dao实现类就可以通过HibernateTemplment以面向对象的方式操作数据库。另外,Spring 还提供了统一的异常体系及声明式事务管理等。一旦Hibernate 处于Spring 的管理下,Hibernate 所需要的基础资源,都由Spring 提供注入。Hibernate创建SessionFactory 必需的DataSource,执行持久化必需的Session 及持久层访问必需的事务控制等,这些原本必须通过代码控制的逻辑,都将由Spring 接管:DataSource, SessionFactory, TransactionManager 等,都将作为Spring 容器中的beano 将这些bean 放在配置文件中管理,可以提供很好的解耦。Spring 提供了DAO 支持,可以大大简化DAO 组件的开发。IOC 容器的使用,提供了DAO 组件与业务逻辑组件之间的松糯合。所有的DAO实现Bean 组件,都由容器负责注入到业务逻辑组件中,其业务组件无须关心DAO 组件的实现。面向接口编程及DAO 模式的使用,提高了系统组件之间的解稿,降低了系统重构的成本。通过Spring 整合Hibernate,使持久层的访问更加容易,使用Spring 管理Hibernate持久层有如下优势。

1.有效的Session管理: Spring提供了有效、简单和安全的Hibernate Session处理。2.IoC 容器提高了DAO 组件与业务逻辑层之间的解糯。3.DAO 模式的使用,降低了系统重构的代价。

4.方便的事务管理: Hibernate 的事务管理处理会限制Hibernate 的表现,而 5.Spring的声明式事务管理力度是方法级。

6.通用的资源管理: Spring 的ApplicationContext 能管理SessionFactory,使得 配置值很容易被管理和修改,无须使用Hibernate 的配置文件。

7.异常包装:Spring 能够包装Hibernate 异常,把它们从checked exception 变为 runtimeException;开发者可选择在恰当的层处理数据中不可恢复的异常,从而避免烦琐的catch/throw 及异常声明。配置DAD 组件所有继承HibernateDaoSupport 的DAO 实现类,必须为其提供SessionFactory 的引用。由于所有DAO 组件都需要注入SessionFactory 引用,因此可以使用bean 继承简化DAO 组件的配置。本应用同样将所有的DAO 组件配置在单独的配置文件中daoContext.xml中例如:由于7个Dao 都必须利用IoC容器注入

SessionFactory。我们先配一个dao模板,然后7个Dao就继承该模板这样就可以简化daoContext.xml文件

以blogDAO为例,blogDAO 的以daoTemplate 为父Bean,属性class是Dao的实现类。

parent=“daoTemplate”/> 其余6个PODAO的配置相似。从上面的配置文件可以看出Spring Ioc容器在Tomcat启动时就可以向Dao 注入SessionFactory 第3节 实现Service 层

Service 组件采用正面模式封装多个DAO 组件,DAO 对象与Service 组件之间的关Service 组件需要实现的业务方法主要取决于业务的需要,通常需要在业务组件中包含对应的方法。

业务层组件的实现业务层组件与具体的数据库访问技术分离,使所有的数据库访问依赖于DAO 组件,定义一个FacadeManagerImpl来包装7个Dao这样就可以把逻辑层和Dao分开,达到松散耦合的效果。事务管理将推迟到Service 组件而不是DAO 组件,因为只有对业务逻辑方法添加事务才有实际的意义,对于单个DAO 方法(基本的CRUD 方法)增加事务操作是没有太大实际意义的。关于事务属性的配置,本系统使用Spring 提供的TransactionProxyFactoryBean配置事务代理。这样不必为每个目标对象配置代理bean;避免了目标对象被直接调用。部暑业务层组件单独配置系统的业务逻辑层,可避免因配置文件过大引起配置文件难以阅读。将配置文件按层和模块分开配置,可以提高Spring 配置文件的可读性和可理解性。在applicationContext.xml 配置文件中配置数据源、事务管理器、业务逻辑组件和事务管理器等bean。配置文件如下:

PROPAGATION_REQUIRED

利用SpringFrameWork的TransactionProxyFactoryBean管理业务组件的事务,对应业务的方法名调用不同的事务管理,所以在业务逻辑组件的方法取名时一定要规范化。txProxyTemplate Bean是个业务组件事务管理的一个代理的父Bean,业务组件代理继承txProxyTemplate,并注入对应目标业务组件FacadeManagerImpl的在业务控制器根据请求

调用的是一个业务逻辑事务管理的代理,这个代理把请求分发给目标业务逻辑组件去处理,业务逻辑组件根据请求调用相应得Dao去执行。这样通过FacadeManagerImpl隔离业务逻辑控制器与Dao耦合。业务不需要知道是那个Dao执行的,也不需要Dao的 实现类。我们通过 Spring向FacadeManagerImpl注入7个Dao组件,业务逻辑组件是 面向DAO 接口编程,可让业务逻辑组件从DAO 组件的实现中分离。因此业务逻辑组件只关心业务逻辑的实现,无须关心数据访问逻辑的实现。第4节 MVC 层实现

MVC 架构的核心思想是:将程序分成相对独立,而又能协同工作的三个部分。通过使用MVC 架构,可以降低模块之间的耦合,提高应用的可扩展性。另外,MVC 的每个组件只关心组件内的逻辑,不应与其他组件的逻辑混合。

本文的MVC采用Struts框架。因为Struts 是最健壮,应用最广的MVC 框架。系统使用Struts 框架可以提高系统的可控制性,保证了系统的稳定性及可用性。5.4.1 1.Model 部分

模型独立于数据的显示,博客中所涉及的Model 都是ActionForm和JavaBean组成。模型返回的数据与显示逻辑分离。应用被分隔为三层,降低了各层之间的耦合,提高了应用的可扩展性。其中ActionForm用于封装用户请求参数,所有的用户请求参数由系统自动封装成ActionForm 对象:该对象被ActionServlet转发给Action;然后Action 根据ActionForm里的请求参数处理用户请求。比如本系统中的Registfrom封装了注册用户的所有信息,但页面触发了.do结尾 的 Http请求。这Struts的核心控制器ActionServlet将填充RegistForm 即调用RegistForm的setXxx。然后RegistAction就可以向业务逻辑组件提交添加RegistForm到博客。这样就完成用户的注册。而JavaBean 则封装了底层的业务逻辑,包括数据库访问等。比如本文中FacadeManagerImpl,通过业务外观向表现层封装数据的处理部分,而ActionForm 封装了请求参数以一个值对象(VO)的形似穿透J2EE的各层。

5.4.2 View 部分

Struts 的View 部分采用JSP 实现。整个应用由客户端请求驱动,当客户端请求被ActionServlet 拦截时,ActionServlet根据请求决定是否需要调用Model 处理用户请求,当用户请求处理完成后,其处理结果通过JSP 呈现给用户。通过Jsp将业务逻辑组件返回的值对象格式化,用户和系统通过View交互的。5.4.3 3.Controller部分

Struts 的Controller由系统核心控制器及业务逻辑控制器。

系统核心控制拦截特定形式的请求,再根据请求调用相应得业务逻辑控制器处理请求,在web.xml中如下定义:

action

com.blog.webapp.util.MyActionServlet

config

/WEB-INF/struts-config.xml

action

*.do 从上面的配置文件可以看出MyActionServlet是MVC的核心控制器,一般采用Struts 的ActionServlet就可以拦截以.do结尾的请求。这里我采用自己定义一个继承ActionServlet 的控制器,在处理请求时先将request的采用的编码设为统一的UTF-8,再将请求转发。ActionServlet是继承HttpServlet类,因此可以配置成一个标准的Servlet。该控制器负责拦截所有Http请求,然后根据用户请求决定是否需要调用业务逻辑控制器,如果需要调用业务逻辑控制器,则将请求转发给Action 处理,否则直接转向请求的JSP 页面。业务逻辑控制器负责处理用户请求,但业务逻辑控制器本身并不具有处理能力,而是调用Model 来完成处理。业务逻辑控制器对应图3.4中的Action 部分。业务控制层是整个系统的核心部分,它与要实现的业务功能紧密联系,其中的各个功能模块各自实现不同的业务功能。该层在接受到来自表现层的请求和相应得数据后。通过对业务数据层的调用来实现具体的业务逻辑。Struts 与Spring 的整合

整合Struts 与Spring 只有一个要求,让Struts 将拦截到客户端的请求转发给Spring容器中的bean。也就是说Struts的业务逻辑控制器可以将从核心控制器转发过来的请求教给spring IOC容器管理业务逻辑组件处理。本系统使用DelegatingRequestProcessor 的整合策略,使用DelegatingRequestProcessor的整合策略可避免创建过多的本系统采用DelegatingActionProxy,提前将请求转发到Spring 容器内的bean。为了在应用启动时由Struts 负责创建Spring 容器,应在struts-config.xml 文件中增加如下配置:

className=“org.springframework.web.struts.ContextLoaderPlugIn”> 通常上面的配置,可让Spring 容器随系统启动时完成初始化。注意在上面的配置中,Spring 的配置文件有一个aciton-servlet.xml,该配置文件中全部是Action。使用DelegatingRequestProcessor 的整合策略时,无须确定action 的实现类。因为DelegatingRequestProcessor直接将请求转发到Spring 容器内控制器配置为了Struts 与Spring 的整合,Struts 的Action 需要在两个地方配置。

1.在struts-config且xm1文件中配置对应的Action。

2.在Spring 容器中配置实际的Action,在本文中需要与数据层交流Action必须

继承BaseAction,而BaseAction 具有一个facadeManger的属性,本文的请求不直接处理请求,而是交给业务逻辑组件处理。本文通过向Action注入相应得业务逻辑组件facadeManger,Acton 将请求交给它处理。我们在action-servlet.xml 里配置一个

这样的Bean 然后每个Action将继承actionTemplate,这样Action就可以把请求交给facadeManager 处理。而facadeManager是个业务逻辑事务处理的一个代理。这样通过Spring 将facadeManager注入到业务逻辑控制器中,Action 就可以将请求分发给Spring Ioc容器中目标业务逻辑处理。这样完成Spring 向上整合Struts。5.4.4 采用Ajax加深用户体验

为了加深用户体验,本系统在处理请求时还应用到Ajax 技术。页面提交一个非.do结尾的请求,及触发了一个文档模型(DOM)事件。Ajax处理请求如下: 1.DOM事件处理者收到事件发生的消息进行处理,即在JavaScript定义的一个函数处理。2.处理者开始创建一个XMLHttpRequest对象,并根据触发的事件对XMLHttpRequest 对象设置目标URL、http 方法(GET或POST),在本系统中URL是一个以.do结尾的请求。主要是请求交给业务逻辑组件处理,再注册服务器的回调函数。3.向服务器分派异步的Http请求。

4.异步的Http请求发出后,游览器不必等待服务器的响应,用户还可以与页面交互。5.Struts 的核心控制拦截http请求,根据请求分派Action去处理请求。

6.Action交给业务逻辑组件处理。Action 接受到业务逻辑组件处理后的结果(一般是VO或VO数组),再将返回的结果序列化成XML作为服务器的响应内容。核心控制器再将响应内容返回给游览器。

7.调用XMLHttpRequest注册的回调函数。

8.回调函数解析响应内容XML文档,在这里我们利用DOM将XML换成html格式数据流。利用DOM改变交互页面的html节点。达到用户的需求。

设计结果及对设计结果的分析

本系统是一个小组(3个人)合力设计的。我负责底层即Hibernate Dao层逻辑层,MVC层,PO 和DAO 的设计。故我们采用值对象(VO)作为我们的数据交流载体。我负责VO的处理,而胡爱梅负责数据的显示即利用Jsp格式化从我设计业务逻辑层返回的数据。陈成负责搜索引擎的设计,他主要用到我设计的PO和外观组件(Dao封装体)去查询实体。在设计的过程中沟通是非常重要的。为了更好地向胡爱梅同学提供更好的服务。在设计逻辑组件返回的数据时我利用VO或XML来封装。利用DOM将XML格式转化为html的一格节点或者将VO填充到Jsp的内置对象比如Session。在JavaScript中替换她在Jsp页面定义的Html 节点。她转发的请求参数统一利用ActionForm来封装。而Struts 的核心控制器会帮我们填充。只要Action中将ActionForm换成我在Hibernate层定义的持久化对象PO就行了。再把PO交给facadeManger处理。这样只要胡爱梅同学知道我设计的PO的结构并将PO填充的Session的那个属性,她就可以将PO显示在页面上。而我只要知道她需要完成那些功能,即知道请求格式(请求的URL,ActionForm)和需要返回何种数据就行了。我便可以设计Action应该如何处理业务逻辑,再考虑将数据格式化成何种XML结构。并举例如何解析XML数据,或者将PO(List

)填充到Session的属性告诉她。为了更容易操控数据库,及格式化查询结果。我采用Hibernate 的DAO模式,利用Hibernate 查询的结果本来就是一个对象或对象列表,这就更方便我数据系列化成xml文件了。

本系统基本上可以实现前面需求分析中所要求实现的功能。另外添加了mp3播放和像word软件一样的编辑器。

由于第一次利用Java开发程序,第一次开发web应用程序。第一次利用Spring、Hibernate、Struts、Ajax等技术或框架编写程序,第一次利用MyEclipse 编写java应用程序、第一次利用MySql作为数据库系统。种种第一次,使的我在设计本系统困难重重。下面详细讲述我在开发过程中所遇到的问题和我的解决方案。1.到处出现乱码。为次我必须统一我的编码方式。

我统一采用UTF-8作为我的编码方式。并且在ActionServlet将请求转发的时候先将request的编码统一设为UTF-8,这样还是不能将Actionform 的乱码解决。ActionForm的编码是ISO-8859-1 为此我可以采用String类提供的构造函数解决。比如ActionFom的String属性str,我通过new String(ActionForm.getStr().getByte(“ISO-8859-1”),”UTF-8”)可以将ActionForm转为UTF-8。开始装MySql 时就要设定 数据库建表时表所用到的编码。同样设为UTF-8,开始我有些Form是采用Struts的DynaActionForm,这样可以少写个ActionForm类。但DynaActionForm的编码不确定。最后我只能将DynaActionForm改为ActionForm的类。对于Struts 不能拦截的请求我们统一采用Actionform一样的方式。

利用Validator验证失败能返回到指定的页面上去。

input=“/registadmin.jsp ” validate=“true”>

这是struts-config.xml 的一个registAction 的配置文件。RegistForm 经过

Struts 失败验证后Struts 不会将请求交给registAction处理直接转到input定义下的/registadmin.jsp页面上。而事实并不能转发,而是转到一个空白页面,由于验证成功可以转发,所以,其他一切都没错,只能是Action 的配置有错。将input=“/registadmin.jsp ” 改为input=“input”,定义input为一个forward 这样可以解决问题。在input属性直接配置他jsp页面是从书上将的。从这可以得出只有实验才体验框架的工作原理。2.图片上传

图片上传需要解决两个问题,1图片以什么形式出现在MySql中?以Blob,还是图片的一个路径名。博主将 图片上传到服务器,将图片的路径名保存到

MySql数据库中。我采用Struts提供的FileForm 作为上传图片ActionForm的文件属性,在Action处理时通过FileForm.getfile()得到该文件2,怎么产生路径名?为了不使图片的名称一样我采用以时间和用户名两个参数随机产生一个字符串作为图片的路径名。激将上传图片统一保存到一个特定的文件夹内。最后在表单中必须有 enctype=“multipart/form-data”这样可以让Jsp知道表单含有大量数据要上传。3.博文字数 多时不能就博文提交。

必须把写博文的表单中method设为post而不是get,因为get只是在提交请求 时带些参数而已。

4.一个对象不能同时在两个Session中,由于我开始没有将查询作为一个事务处理。后来将曾经查询过的对象作一些修改。由于对象的修改是在一个事务管理中。查询和修改不在一个事务管理中,则修改时事务管理重新开启一个Session。将对象保存到数据库中,这时一个对象同时在两个Session中,JDBC是不支持的。要修改对象,以前需要查询操作,由于利用了Spring 的事务管理,这就必须将两次操作放到一个事务中。

5.在blog主页面的所有Jsp页面刷新后的mp3重新播放

由于在mp3播放的页面中是采用在页面中嵌入 loop=“true” autostart=“true”> src是一个mp3的播放列表。页面刷新后jsp的servlet重新运行。mp3重新播放,由于对播放器的API还不了解,现在还解决。mp3的播放资源只是嵌入到导航页面(left.jsp)。只要导航页面重新刷新后mp3就重新播放。系统的性能评价

由于本系统的jsp容器是Tomcat,系统设计也采用轻量级的Hibernate,而不是EJB所以在群集,负载均衡、安全性、事务、系统管理都不很理想。数据库的连接池也不能很大,因为tomcat 不便管理。在本系统的数据库中只采用了一级缓存Session 没有启动二级缓存SessionFactory,由于大量重复数据的查询,性能可能有所降低。对于页面的分页处理,一般有两种,一种是物理分页,利用Sql语句向数据库查询指定那个页面所需要的数据,对于种方式由于数据库的差异,数据库提供的offset也不同,对于明确数据库的项目来说,物理分页在性能上讲显然比逻辑分页要来的好。第二种是逻辑分页,通过sql语句查询所有数据,再利用for语句读取用户所需要的数据,查询数据全部提交给客户端,还是将当前页面的数据相应客户端,是不好选择,因为如果全部相应,则用户可能只关心一部分,浪费了大量带宽,将当前数据提交给客户端则客户可能还关心其他数据,便再次相应服务器,要求得到其他数据,数据都在服务器的缓存中,加重服务器的压力,我选择的是将数据全部相应客户端。

全文总结

本文从博客网站的所需要实现的功能模块开始分析,决定使用Java开发博客网站。并利用JDK,Tomcat,MyEclipse,MySQL等软件来搭建开发环境,我的主要任务利用Java技术的Spring、Hibernate、Struts等开源框架设计J2EE三层结构的中业务逻辑层和数据服务层,blog网站以Spring 框架为核心,向下整合Hibernate 进行持久层访问;向上整合Struts 按清晰的MVC 模式控制。这样可以更快开发松散耦合的blog 网站。

由于没接触过Java,还有一些软件还没用过,如MyEclipse,因此完成此次毕业并不容易。通过摸索、翻阅并购买了大量相关参考资料,让我java 技术有了一定的了解。比较圆满地完成了本次毕业设计的任务,达到了此次毕业设计的目的和要求。

通过这次毕业设计学会利用java构建Web 网站,在毕业设计中接触过不少开源框架。开源框架的强大让我觉得还有很多技术需要去学习,这也让我明白,要不断地学习新知识才会利于自己各方面的发展。还让我体会到在项目小组里没有比沟通更重要

致谢

在论文结束之际,首先要感谢我的指导老师戴祖旭教授,在我的论文设计以及实现过程中均给了我大量的帮助和指导,他严谨的敬业精神和治学态度给我留下了深刻的印象。从他身上,我学到了许多能使我受益终身的东西,再次对戴老师表示衷心的感谢。

感谢理学院领导以及老师给我们创造的良好的学习环境和诸多帮助。

感谢父母,兄弟姐妹对我学业的支持;感谢寝室同学对我学习生活的诸多帮助。感谢的人太多,只能说感谢所有给我关心、帮助和支持的人们。

篇2:基于java的博客网站设计与开发毕业论文

昆明学院2012届毕业设计(论文)开题报告

注:1.本报告由学生在接到“毕业设计(论文)任务书”后完成,并于最后一学期开学第一周交指导教师审阅;2.每个毕业设计(论文)课题撰写一份开题报告(有子课题的每个子课题撰写一份),作为指导教师、专业教研室审查学生能否承担该毕业设计(论文)课题任务的依据。

篇3:基于java的博客网站设计与开发毕业论文

关键词:java,Socket,多线程,即时通讯

即时通讯(Instant Messaging)是一种可以让使用者在网络上即时交流讯息的实时通讯服务。即时通讯服务的主要功能在与提供了文字或视讯的实时通讯,只要通讯双方同时在线,就能像多媒体电话一样,传送文字、档案、声音、影像给对方而不用考虑距离。目前在互联网上受欢迎的即时通讯软件包括QQ、MSN Messenger、Gtalk、百度HI、Jabber、ICQ等。随着互联网的发展与普及,网上即时通讯联络已经成为广大网民不可或缺的服务,作为一款即时通讯工具的雏形,JavaHi系统已经能够为网友提供基本的即时讯息交流以及语音通讯服务,它是利用当今最为流行的java语言来编写的,JavaHi本身固有的优点,比如跨平台运行,强大的网络功能以及良好的数据库接口支持在JavaHi系统中也将得到体现,同时开发过程中的很多步骤和开发出来的代码都涉及到Java语言的关键的或者具有特色的技术,比如Java的网络编程,Swing界面程序设计以及UDP打洞等等技术。

1 系统设计

1.1 网络模型结构设计

JavaHi即时通讯系统采用C/S结构模型,用户通过客户端软件连接登陆到服务器,服务器将客户端之间的文本聊天信息进行转发,即一方先将消息通过TCP连接发送至服务器,服务器再通过TCP连接将消息转发到另一方,客户端与服务器的通信内容将使用XML封装。

由于通过NAPT上网的特点决定了只能由NAPT内的计算机主动向NAPT外部的主机发起连接,这就意味着内网的JavaHi用户无法主动发起语音通讯请求。如果两位用户都处在不同的内网,语音通讯便无法进行,为了解决这个问题,在数据传输上采用UDP打洞技术来对NAPT进行穿透。由服务器协助两个客户端建立UDP直连,语音数据将采用UDP协议使用点到点方式传输,而用户对语音聊天的控制信息,如请求通讯、接受/拒绝接听、挂断通讯等同样由服务器中转。

1.2 JavaHi客户端设计

根据系统的要求,客户端应具备以下几个功能:即时通信、语音和视频通信、好友管理、账户管理等。在客户端类设计上,设计JavaHiClient为客户端主类,其中定义了实现客户端主要功能的一些方法。它包括几个重要的内部类:ReceiveThread、ChatPane、UserInfoFrame、UserInfoBean等。

内部类ReceiveThread实现服务器端所有消息的接收和解析,应用JAVA多线程技术,对来自服务器的消息单独开一个线程来监听,发送消息通过类SendThread建立到服务器的单独线程。ChatPane类为用户聊天面板,用户与每一个好友聊天时都会生成一个ChatPane对象,所有的ChatPane对象由系统中唯一的一个ChatFrame窗口对象管理。而用户个人信息管理用一个窗口类UserInfoFrame类来实现,包括个人信息的修改,好友的增删等,每个UserInfoFrame对象关联一个UserInfoBean对象。UserInfoBean类为系统中非常重要的一个类,它保存用户的所有个人资料以及此用户发送的聊天信息等内容。每段聊天信息由一个MessageBean对象保存。音频捕获和音频回放功能通过com.javahi.client.audioprocess包中有两个类:AudioCapture和AudioPlayback来分别实现。客户端类图关系如图1所示。

1.3 JavaHi服务器端设计

服务器端要求为客户端提供聊天服务管理,建立语音通讯UDP直连中介服务和注册服务,以及简单的数据库管理和参数设置功能。

在服务器端类设计上,定义JavaHiServer类为服务器端主类,此类会从硬盘上读取已保存的服务器相关参数,并初始化监控台界面ServerFrame对象,ServerFrame包括多个管理面板类,在聊天服务管理面板类ChatServerPane中通过两个重要的内部类来实现数据通信:ServiceThread和AudioServiceThread.ServerThread为监听客户端登陆连接的线程类,每当一个客户端登陆服务器的时候便生成一个ServerThread线程对象来管理与客户端的TCP连接,接收来自客户端的消息,解析消息并调用相应的方法进行处理,并将处理结果返回给客户端。而AudioServiceThread是服务器为客户端提供语音通讯UDP直连服务的线程,它接收来自客户端发送的UDP包,并提取出客端的外网IP和Port作相应记录。类图如图2所示。

1.4 数据库设计

该即时通讯系统以MySQL作为后台数据库,建立名为javahi的数据库,共两个表,user表和friend表,user表为用户的基本信息表,包括用户名,昵称,密码等,friend表为用户的好友表。包括自己的用户名和好友用户名字段。采用UTF-8编码。

2 系统实现

由于客户端实现的各部分功能主要分为事件的响应,消息的组织,发送,解析等过程,本文只选取部分功能模块作详细描述,其它模块的实现与此类似。

2.1 文本聊天功能实现

用户填写文本信息,并点击按钮发送,服务器接收消息后检查信息的目标用户是否在线,如果不在线则将发送失败信息返回给发送,如果在线则将信息转发给目标用户,目标用户接收消息后查看发送方是否在黑名单中,如果不在黑名单中则提示用户有新消息到来。文本聊天活动图如图3所示。

2.2 语音通讯连接功能实现

语音通讯的两个客户端之间利用服务器建立UDP直连以实现点对点通信的过程如下:

语音请求方向目标方发送语音请求后,经过以下步骤:

1)发送一个UDP包到服务器,里面包含源用户名和目标用户名;

2)利用与服务器的TCP连接发送语音请求到服务器,内容包括目标用户名,再由服务器转发给目标用户;

3)启动一个计时器每隔三秒循环一次,若没有收到结果则重复上面两个步骤直到用户取消请求或收到语音请求结果。服务器收到UDP包后提取出包的源IP和PORT并作相应的记录,收到语音请求后检查目标用户是否在线,如果不在线则返回给请求的用户失败消息,如果在线则检查发送用户的记录中有无与目标用户相关的IP和PORT,如果无则不做任何事情,如果有则将语音请求加上先前记录的与目标用户相关的源用户的外网IP和PORT一起转发给目标用户客户端,目标用户作出“拒绝”或者“接受”操作,选择拒绝请求则返回给发送用户相关信息,如果接受请求则同样做与开始发送用户相同的三个步骤,并发送一个不带任何内容的UDP包到开始记录过的源用户的IP和PORT,直到两用户建立UDP直连时为止。语音通讯活动图如图4所示。

3 总结

本系统设计实现了即时通讯最基本和最核心的功能,如文本讯息交流和语音通讯,运行稳定,能应用在window和linux操作系统中。后期将在此内核基础上进行功能拓展,如消息的加密传输的存储,离线消息的实现,添加丰富的用户在线状态,文件传输功能等等,使其成为一个真正完善的,强大的即时通讯系统。

参考文献

[1]张白一,崔尚森.面向对象程序设计[M].西安:西安电子科技大学出版社,2003.

[2]潘爱民译.计算机网络(第四版)[M].北京:清华大学出版社,2004.

[3]徐宝文等.UML与软件建模[M].北京:清华大学出版社,2006.

[4]陈刚.Eclipse从入门到精通[M].北京:清华大学出版社,2007.

[5]吴亚峰,纪超.Java SE6.0编程指南[M].北京:人民邮电出版社,2007.

[6]孙卫琴.Java网络编程精解[M].北京:电子工业出版社,2007.

[7]Eckel B.Thinking in Java[M].America:Pearson Education,2003

[8]Darwin I F.Java Cook Book[M].America:O'Reilly,2004.

[9]Harold E R.Java I/O,2nd Edition[M].America:O'Reilly,2006.

篇4:基于java的博客网站设计与开发毕业论文

【摘要】精品课程能够起到促进现代信息技术的应用、推动教育创新以及促进教学方式改革的作用。本文从精品课程网站的技术和建设方面对精品课程网站进行了详细的分析,对运用Java技术进行精品网站相关功能的设计和开发进行探究。

【关键词】Java技术 精品课程网站 设计 开发

前言:精品课程网站是指通过网络通信技术等新型技术在网络环境下开展一系列高质量教学活动。精品课程网站的产生解决了传统教学模式空间及时间的限制问题,并且为教育开辟了新的道路,使教育资源的利用变得更加广泛,有效地实现了对传统教学方式的补充。

1精品课程网站的分析

1.1精品课程网站的建设

从本质上讲,精品课程网站的建设其实就是某一课程电子版信息资源库的建设。精品网站课程为学生的学习提供了一个具有实时特点的平台,有效地解决了传统教学在空间和时间方面的限制问题。精品课程网站的建设重点在于对课程的收集和展示,将在线答疑、学习交流、网上自测自评、教学重点以及学术研究等信息集中于一体。

1.2精品课程网站技术方面的分析

精品课程网站系统是一个采用B/S的Web系统,对此,可以在对Java技术进行充分运用的基础上,充分结合Tomcat等技术,开发出精品课程网站系统的多种功能。在这个过程涉及到的技术主要有:第一,通过Java语言实现精品课程网站客户端数据的初步认证和过滤;第二,使用用户名和密码机制实现安全登录,通过对用户类型的不同划定不同的权限,并运用MDS技术进行加密,保证用户信息的安全;第三,加深对Web运行环境的了解,尤其是其中Tomcat的安全设置问题和操作功能;第四,运用ECIIPse集成开发平台,并运用Java语言进行相关开发操作[1]。

2基于Java技术的精品课程网站设计与开发

2.1基于Java技术的精品课程网站设计目标和设计原则

2.1.1基于Java技术的精品课程网站的设计目标

基于Java技术的精品课程网站设计目标是:设计出一个具有齐全功能的界面,它包含实用、高效、维护简单的Web框架。在设计精品课程网站时,要充分考虑数据的安全性问题,可以通过远程实时快照对数据进行及时备份,防止数据由于受到自然因素的影响产生相应的破坏。在精品课程网站的数据操作部分,应该对客户端Web垃圾攻击的安全性方面进行重点设计。由于精品课程网站的信息有一定的实时性要求,因此,在精品课程网站的管理部分,要设计成能够通过浏览器实施维护的后台管理系统,以便人们可以更加方便、快捷地通过浏览器完成信息发布、课程内容更新以及管理用户等操作。在精品课程网站的信息自主发布方面,应该注重对信息审核功能的设计,保证数据具有一定的可发布性、安全性以及合理性[2]。

2.1.2基于Java技术的精品课程网站的设计原则

精品课程网站的设计要以满足高校精品课程建设需求为原则,通过精品课程网站更好地为学生服务。精品课程网站是一个直面学生与教师的辅助教学、学习平台,因此要求精品课程网站具有便于管理、更新以及扩展的特点。

2.2精品课程网站的登录功能设计

精品课程网站的登录功能是针对学生、教师以及管理员而言的。这三者可以通过身份验证,实现对基本信息的维护以及对自己登录密码的修改。当精品课程网站的身份验证结果显示用户是学生,那么网站将允许用户进行网上实验互动、参与课程讨论、查看系统公告等行为操作;如果精品课程网站的身份验证结果显示用户是教师,那么网站将允许用户进行课程资料上传、查看系统公告、课程信息查询以及参与课程讨论等行为操作;如果精品课程网站的身份验证结果显示用户为管理员,那么网站将允许用户进行网站自测试题和答案的维护、公告信息的维护、课程信息的维护以及论坛信息的维护等行为操作[3]。

2.3精品课程网站的公告栏功能设计

公告栏的内容是由管理员进行操作管理的,管理员的管理功能主要包括对公告的撰写、修改以及删除。公告的撰写包括公告内容和公告标题两部分,这两个部分都是必填选项;当公告的内容不符合当前实际时,管理员就需要对公告进行修改。管理员在登录精品课程网站之后,对需要修改的公告进行选中,即可实现对公告信息的修改操作;当公告内容失效之后,管理员应该及时对公告进行删除。管理员在登录精品课程网站之后,对需要删除的公告进行选中,即可实现对公告的删除操作[4]。

2.4精品课程网站数据库的设计

精品课程网站的数据库要包含学生信息表、自测试题库表、自测成绩表、用户表以及章节基本信息表等方面的设计。

结论:随着计算机技术的飞速发展,精品课程网站进入各大高校已經变成一种主流趋势。基于Java技术的精品课程网站的设计与开发成为目前各大高校教学方式改革的重点,对此,应该在明确精品课程网站设计目标和设计原则的基础上,运用Java技术更好地实现精品课程网站的登录功能、公告栏功能以及数据库等方面的设计和开发,实现精品课程网站在线答疑、学习交流、网上自测自评以及学术研究的目的。

【参考文献】

[1]王昆鹏. 基于Java技术的精品课程网站设计与开发[D].华东师范大学,2010.

[2]迟浩. 基于XML和JAVA的通用课程教学网站设计与开发[D].中国海洋大学,2010.

[3]张岩,陈莲莲,张永华,孙莉. 基于Java的精品课程网站设计与实现[J]. 电脑知识与技术,2015,33:48-51.

篇5:基于java的博客网站设计与开发毕业论文

可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,网站优化的目的就是让程序用尽可能少的资源完成预定的任务。网站优化通常包含两方面的内容:减小代码的体积和提高代码的运行效率。减小代码的体积已经写过太多这类的文章了,下面就简单讨论下如何提高代码的效率。(本文由郑州亚龙软件有限公司)

一、不用new关键词创建类的实例用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法。clone()方法不会调用任何类构造函数。

在使用设计模式(DesignPattern)的场合,如果用Factory模式创建对象,则改用clone()方法创建新的对象实例非常简单。

二、使用非阻塞I/O版本较低的JDK不支持非阻塞I/OAPI。为避免I/O阻塞,一些应用采用了创建大量线程的办法(在较好的情况下,会使用一个缓冲池)。这种技术可以在许多必须支持并发I/O流的应用中见到,如Web服务器、报价和拍卖应用等。然而,创建Java线程需要相当可观的开销。JDK1.4引入了非阻塞的I/O库(java.nio)。如果应用要求使用版本较早的JDK,需要支持非阻塞I/O的软件包。

三、慎用异常异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

四、不要重复初始化变量默认情况下,调用类的构造函数时,Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和double变量设置成0.0,逻辑值设置成false。当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键词创建一个对象时,构造函数链中的所有构造函数都会被自动调用。

五、尽量指定类的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止了人们覆盖length()方法。另外,如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。

六、尽量使用局部变量调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化。请参见《尽可能使用堆栈变量》。

篇6:基于java的博客网站设计与开发毕业论文

本科毕业论文(设计)

开 题 报 告

目: 基于JSP的个人博客系统设计与实现 学

院:

商学院

业:

信息管理与信息系统

级:

号:

名:

指导教师:

开题日期:

一、选题的背景、意义 历史背景

进入21世纪信息时代后,计算机与人类之间的距离逐渐缩小。计算机的高速发展,引领人类进入了计算机网络世界。随着计算机网络的高速发展,人与人之间也出现了多种多样的交流方式,从早期的ICQ,到后来的E-Mail和BBS,都是在计算机网络的基础上诞生的。它们的出现让人类的交流变得更加的方便和快捷。之后,博客,迅速崛起。

在博客风靡全球的过程中,越来越多的人投入了博客系统的开发研究。主流开源博客系统包括WordPress,Pivotx,PJBlog,Z-Blog,oBlog,Sablog-X站上了博客发展技术尖端。博客系统的开发语言与技术平台的搭建方案层出不穷,基于各种技术语言开发的博客系统呈现百花争鸣的局面。博客系统成为了潮流风头的网络新兴文化系统。2 研究现状

博客,即Weblog,后简称blog,又译为网络日志等,是一种通常由个人管理、不定期张贴新文章的网站。在台湾,人们认为Blog本身有社群群组的涵义,通常被音译成“部落格”。Blog就是以网络作为载体,简易迅速便捷地发布个人心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。撰写这些博客的人就叫做Blogger或Blog writer。

log一开始应用,立刻就发展为继Email、BBS、ICQ之后的第四种网络交流方式,成为了网络时代的个人“读者文摘”,成为一种以超级链接为武器的网络日记,带来了生活方式和工作方式的创新表,标志着一种新的学习方式。另外,由于blog的沟通方式比电子邮件、讨论群组更为简易和方便,它逐渐被应用在企业内部网络(Intranet)中。

据有关调查数据显示,2006年11月3日,全球中文博客站点数量达到5230万,博客用户数达到1987万。有些调查数据还显示出,2006年,中国大陆博客服务商持续大幅增长,大型网络公司如搜狐、百度纷纷推出相应的博客服务,博客服务商之间的市场竞争日趋激烈。有关调查机构还发现,博客的发展规律类似于新兴科技企业发展规律中的Hype Cycle模型,开始被媒体和从业者大为炒作,后来市场预期不断下降,直到现在的理性稳步发展,成为互联网的基本应用。

博客依赖的基础平台——博客系统也随即进入开发热潮。目前主流开源博客系统主要有这么几种:WordPress,一种支持用户在 PHP 和 MySQL 数据库的服务器上建立自己的 Blog的引擎;Pivotx,blog CMS,以 PHP 编写,管理者接口采用AJAX模式运作,SEO友好,支持MySQL数据库以及文本数据库等;PJBlog,一套开源免费的中文个人博客系统程序,采用asp+Access的技术,支持简繁中文,UTF-8编码,相对于其他系统具有相当高的运作效能以及更新率,也支持目前Blog所使用的新技术;Z-Blog,一款小巧而强大的基于Asp平台的Blog程序,支持界面主题及样式更换,采用Web Standards网页设计标准,静态生成日志,支持自定义目录配置,支持FierFox、Opera、Safari等浏览器,支持Wap、Windows Live Writer等离线写作软件;oBlog,一套经过完善设计的多用户博客建站程序,是Windows NT服务环境下多用户博客程序的最佳解决方案;Bo-Blog,一款基于PHP的、以MySQL为数据库支持的免费blog程序,基于XHTML+CSS+div 布局的模板结构,可自由定制的页面模块、插件与模板,部分基于Ajax的新体验,多语言包化与UTF-8国际编码,强大的spam信息防御机制,RSS、XML-RPC、Tags支持,内置留言本、天气、表情、置顶、验证码、头像等; Sablog-X,一个采用PHP和MySQL构建的博客系统,在代码质量、运行效率、负载能力、安全等级、功能可操控性和权限严密性等方面都比较好。

而从这些主流开源博客系统的实现技术来看,最主要的还是以PHP,ASP和JSP技术为主。三种技术中,相比之下,JSP具有一次编写到处到处运行,系统多平台支持,强大的可伸缩性,多样化和功能强大的开发工具支持等强势。JSP应该是未来发展的趋势,尤其是电子商务类的网站,多采用JSP,世界上一些大的电子商务解决方案提供商都采用JSP/Servelet。但是,JSP也存在不可忽视的弱势。与ASP一样,Java的一些优势正是它的致命问题所在,正是由于为了跨平台的功能,为了极度的伸缩能力,所以增加了产品的复杂性。此外,Java的运行速度使用class常驻内存来完成的,所以在一些情况下有些“最低性价比”了。

博客系统的架构则是C/S和B/S这两种开发模式技术架构的主流技术。C/S架构软件的优势主要有两点,一是应用服务器运行数据负荷较轻,二是数据的储存管理功能较为透明。但C/S架构的劣势是需要高昂的维护成本且投资大。B/S架构软件的优势主要也是两点,一是维护和升级方式简单,二是成本降低,选择更多。但是,和C/S相反,B/S的劣势在于应用服务器运行数据负荷较重。此外,它们的区别还在于,C/S 一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。B/S 建立在广域网之上的,不必是专门的网络硬件环境,例如电话上网,租用设备,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。

博客系统的开发平台主要有MyEclipse,Netbean,ASP.NET三种。MyEclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台,主要由Eclipse Platform、JDT、CDT和PDE组成。NetBeans是一个全功能的开放源码Java IDE,可支持Java 2平台标准版(J2SE)应用的创建、采用JSP和Servlet的2层Web应用的创建,以及用于2层Web应用的API及软件的核心组的创建。ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。

除此以外,主流开源博客系统颇青睐于SQL Server、Oracle、Access及MySQL为主的数据库,其他辅助工具则有Dreamweaver,CSS脚本,CKEditor等。3 意义

话语权,是博客的最重要的作用。博客让网民们有了个体的观点,独立的品牌,自由的表达和出版。博客的公众传播,让公共知识分子有了存在的土壤和空间。除此之外,博客还具有知识过滤与积累的作用,还是一种深度交流沟通的网络新方式,也具有较高的商业营销作用,商业群体可以利用博客展示自己的企业形象或企业商务活动信息。基于博客的众多功能特点,在计算机网络高速发展的当代,认识网络的新事物,学习网络的新知识,深入了解博客,是非常有必要的。

博客系统作为博客的承载体,其研究与开发业也具有重要的意义。博客系统的功能、安装与使用、运行,博客系统的支持平台技术、数据库连接等等,都影响着博客的质量及博客发表的便捷性。综合开发语言、技术与平台搭配的效果来看,JSP技术功能较为强大,基于JSP的博客系统开发较有发展前景并且功能更为完善,但是目前各种主流开源博客系统却偏爱于PHP技术方面的开发研究,JSP技术使用并不多。因此,采用JSP技术实现个人博客系统的开发与研究是值得挑战的事情。因此,毕业系统设计最终决定应用JSP技术,搭建“MyEclipse + Dreamweaver”开发平台和“JavaBean+Servlet”的开发技术结构,使用“MySQL+Navicat”数据库工具,并应用CSS脚本进行系统美化,采用CKEditor进行博客系统的文章编辑。

二、研究的基本内容与拟解决的主要问题 研究的基本内容

本毕业设计研究的主要内容是基于JSP的个人博客系统的研究。系统初步规划为前台访问与后台操作两部分,其中功能模块图如下:

访问博客查看文章发表评论查看相册查看留言给博主留言 图1 博客网站前台功能结构图

博主登录文章管理文章类别管理相册管理留言管理发表文章浏览文章修改文章删除文章添加类别浏览类别修改类别删除类别上传相片浏览照片删除照片浏览留言删除留言

图2 博客网站后台功能结构图 拟解决的主要问题

毕业系统是一个基于JSP与数据库技术的个人博客,初步设计前台用户操作模块完成用户查看博客文章、查看评论、评论文章以及博主登录等操作,而后台博主操作模块解决用户文章管理、文章类别管理、分类管理等功能问题。具体的系统拟解决几个主要问题是:一是如何使博主可以简单的添加和删除日志;二是如何建立独立于具体的数据库平台,充分考虑数据库交互的部分兼容性;三是如何使平台容易在原先基础上进行二次开发;四是如何实现中间基础平台的无型性,采用开放的标准技术,达到跨平台运行的效果。

为解决以上问题,系统开发与设计可能要求做到:模块接口定义的清晰;基础类库和接口设计合理,尽量建立叮扩展的接口和抽象类;数据库操作使用标准SQL语句,使用有差别的SQL语句,则尽量集中在一起,以减少将来维护和移植的难度;采用开放的标准和工具等。

三、研究的方法与技术路线、研究难点,预期达到的目标 研究方法

毕业论文设计的研究方法主要有:

(1)文献研究法,即通过调查文献来获得资料,从而全面地、正确地了解掌握所要研究问题。在文献研究过程中,将会大量阅读与博客知识与博客系统开发技术相关的文献资料,了解国内外相关研究成果,在通过对文献的分析、归纳和综合,在现有研究成果的基础上形成本系统的相关理论和功能结构,并借助计算机进行信息的搜集、整理和加工,形成对论文设计有用的信息。

(2)理论与实际应用相结合的方法,分析系统的用户需求,在对各种系统开发平台、开发技术、开发环境、数据库技术等各方面的比较下,选择相对较佳方案.(3)利用UML建模方法进行分析建模以及设计建模,并进行实际操作调试,从而实现本系统的具体功能。

(4)系统分析与逻辑辩证分析相结合的方法。系统分析方法是用系统的观念来研究和处理有关对象和联系的科学方法;逻辑辨证分析法是按照事物自身的发展规律,运用判断推理的方法揭示事物内在规律及概念与概念之间联系的一种复合的科学分析方法。2 技术路线

毕业系统将在博客知识与博客系统开发技术相关的文献资料调查的基础上进行技术方案研究设计。在对目前各种主流开源博客系统使用的开发平台开发技术、开发环境、数据库技术等各方面进行比较后,拟应用JSP技术,搭建“MyEclipse + Dreamweaver”开发平台和“JavaBean+Servlet”的开发技术结构,使用“MySQL+Navicat”数据库工具,并应用CSS脚本进行系统美化,采用CKEditor进行博客系统的文章编辑。3 研究难点

在系统的技术开发设计设想过程中,个人觉的系统研究的难点之一是如何设计博客系统功能模块,使系统既能完成现有系统的基本功能,又有创新点存在;难点之二在于如何保证博客系统的安全性,即如何通过设置权限,防止系统使用者即博主的数据遭篡改;难点之三是为了灵活处理网页中的数据交换,如何采用JavaBean+Servlet结构来进行开发设计;四是CKEditor编辑器是一个比较新的开源工具,配置说明比较缺乏,而且对中文支持比较差,如何使用CKEditor编辑器来实现网页在线文字编辑还个人深入需要研究;难点之五是作为一个博客系统,随着用户博客文章及评论的增多,该如何实现分页显示。4 预期目标

本毕业设计的预期目标有两个。一是完成一个基于JSP的个人博客系统,系统预期实现效果是完成博客网站前台访问、浏览、留言等功能,后台文章管理、相册管理、留言管理等功能。预期目标二是在对相关文献资料的整合与分析及系统的实现与分析下,完成论文《基于JSP的个人博客系统设计与实现》。

四、论文详细工作进度和安排

2010.10.30—2010.11.22 完成毕业论文选题

2010.11.22—2011.1.10 查阅相关文献,了解博客的现状,完成文献综述、开

题报告及外文翻译

2011.02.21—2011.03.11 进一步阅读文献,进行系统设计,完成基本系统框架,对调查数据进行处理,完善系统,完成毕业论文初稿,确定实习单位

2011.03.12—2011.05.03 毕业实习2011.05.04—2011.05.12 毕业论文定稿

2011.05.13—2011.06.10 毕业论文评阅、修改和论文答辩

五、主要参考文献:

[1] Mark Brady.Blogging, personal participation in public knowledge-building on the web[EB/OL].http://,2010-12-28.[4] 吴德强.博客发展与公共知识分子的产生[EB/OL].http://deqiangwu.blog.chinabyte.com ,2010-12-28.[5] Smith Brian G.The evolution of the blogger [J].Public Relations Review,2010,36(2):175-177.2010-12-28.[6] 尹丽丽.DCCI:中美微型博客发展现状与商业价值分析[EB/OL].http:// ,2010-12-30.[19] 开源中国社区.集成开发环境:NetBeans [EB/OL].http://编辑器 CKEditor[EB/OL].http://www.oschina.net/p/ckeditor,2010-12-30.指导教师审核意见:

上一篇:感慨友谊的优美句子下一篇:生活记事作文550字