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

时间:2019-05-15 11:07:39下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于java的博客网站设计与开发毕业论文》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于java的博客网站设计与开发毕业论文》。

第一篇:基于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 网站,在毕业设计中接触过不少开源框架。开源框架的强大让我觉得还有很多技术需要去学习,这也让我明白,要不断地学习新知识才会利于自己各方面的发展。还让我体会到在项目小组里没有比沟通更重要

致谢

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

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

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

第二篇:Java网络通信专题学习网站的设计与开发

Java网络通信专题学习网站的设计与开发

摘 要:本文结合“151工程”项目――Java网络通信专题学习网站,阐述网站的体系构架、专题结构化知识设计、基于资源规范的资源管理平台设计和网站的主要功能模块,重点阐述教育资源元数据属性的XML统一描述、教育资源的XML绑定和CSCL协作小组分组算法等开发关键技术。该网站具有知识体系完备、学科特色鲜明、原创资源丰富、资源建设符合规范、多方位学习支持服务以及跨平台应用等特性,可为Java及相关IT类课程的信息技术与课程整合提供技术和平台支持,对于促进大学生自主学习、协作学习和可持性发展以及企业IT培训和继续教育具有积极的意义。

关键词:专题学习网站;网络通信;教育资源规范;Java.net类库;XML;CSCL

中图分类号:G434文献标识码:A文章编号:1673-8454(2010)17-0075-05

一、引言

经过10多年的发展,Java在网络通信领域中的应用大放异彩,并得到学术界和产业界的认可,形成了举世瞩目的Java经济。近年来许多高校已开设“Java程序设计”及其相关课程,华南师范大学教育技术本科专业是首批国家级特色专业,也将其列为主修课程,而“Java网络通信”内容恰是其重点难点。其目标是使学生通过课程学习, 掌握面向对象程序设计和网络通信程序开发, 具备小型项目开发能力。然而由于该课程内容零散、自身难度大等特点,加上学生基础较弱,致使他们明明晓得课程重要,但学起来费力,缺乏信心和兴趣,而以教师讲授为主和学生被动接受的传统教学的最大弊端就是学生难以进行系统的网络编程和多层次自主学习和探究学习,可持续性发展能力较差。专题学习网站作为一种基于网络环境的协作式学习系统,可以让学生进行自主学习、分布式协作学习,提高其利用信息的实践能力,培养其良好的信息素养与创新意识,是IT类课程的信息技术与课程整合的新方向。本文结合广东高校“151工程”项目――Java网络通信专题学习网站,阐述该网站的设计与开发。

二、网站设计

1.网站体系架构设计

本专题学习网站是一个基于网络资源的Java面向对象程序设计与网络通信程序开发专题研究、协作式学习系统,它通过网络环境,向学生提供大量的Java编程与网络开发专题学习资源和网络学习交流工具。在教师指导下,学生选择学习专题,通过主体性的探究、协作,收集、分析并选择资源,应用知识和开发工具去解决实际问题,培养Java网络通信程序开发能力。根据“151工程”专题学习网站建设要求,本文提出基于教育资源建设技术规范的专题学习网站的体系构架,如图1所示。它由专题学习知识库、网络学习工具(含协作学习和专题学习评价)、资源管理和系统管理组成,涵盖专题学习网站主要模块并弹性拓展,具体包括学习专题、专家讲坛、项目实践、Java精品、资源天地等 12个功能模块。

网站以专题结构化知识库和资源管理平台为核心,采用统一身份认证对用户进行管理。用户角色包括:学生、教师和系统管理员。学生可利用专题学习知识库和网络学习工具进行各种专题学习,并可进行资源发布、搜索、浏览、上传/下载、收藏和评价;教师除具有学生的权限外,还可以对资源进行在线审核、发布以及资源与元数据编辑、导入、修改和删除;管理员除具有教师和学生的权限外,还可以进行系统设置与维护、动态信息管理和用户管理。

2.专题结构化知识设计

采用分层法设计专题结构化知识,层次间采用树型结构表示,将专题学习划分为4层:模块层、专题层(T)、子专题层(ST)和知识点层(K),如图2所示。模块层是最大的复合型学习对象(由多个学习目标组成的学习单元)、专题层由子专题层组合而成,子专题层由知识点聚合而成,知识点作为原子型对象(由单个学习目标所建立的信息块)是粒度最小的。

网站按学生认知规律及专题规划知识点,通过基础、进阶、核心和拓展的学习阶梯对学习内容进行有机整合。基础模块包含Java程序设计基础;进阶模块是基础模块的延伸;核心模块涵盖Java网络通信与编程内容;拓展模块承载着Java最新网络通信技术及其动向。4个模块包括18个专题学习内容,涵盖Java程序设计基础、OOP、GUI、多线程、网络通信基础、Java通信协议、Java.net类库、网络通信编程、无线网络通信、Java与网格技术、Java与云计算等专题,专题学习界面,如图3所示。

3.基于资源建设规范的资源管理平台设计

资源管理平台可实现对多媒体素材、课件、源代码、文献、常见问题解答、试题等资源及其元数据的动态管理。该平台可通过图1中的“资源天地”链接,依据“151工程”相关技术规范构建,以实现异构教学环境下资源共享和互操作。为达此目标,采用文件管理系统与关系数据库相结合的方式实现对教育资源的储存和管理。文件系统中存放着丰富的学习对象资源,通常是一些通用性较强的组件,可以被修改、组合、拆分和重用,以适应不同的教学需要。同时,描述每种教育资源的元数据也对应地存在文件系统中,在数据库中存放描述资源的核心元数据。资源管理平台可完成教育资源与元数据编辑、导入、修改、删除等功能,此类操作都会与相应的文件系统及数据库中的表发生关联。

文件系统中存储教育资源及其属性描述的XML文档。为了科学、高效和方便地管理资源及其属性描述的XML文档即元数据,平台采用层次结构来存储资源及XML文档。在文件系统中物理的资源及其属性描述的XML文档存在同一文件夹中,如图1所示。

数据库设计则采用文件管理系统和关系数据库相结合的手段,以保证元数据信息的完整性和管理平台的快速查询和科学管理。按照“151工程”相关规范对教育资源属性进行描述,有通用、技术和分类3大类17小类,绑定后有70余项,每种资源都有自己的扩展属性。[3]为避免数据冗余,将每种资源通用的核心元素存入数据库中。数据库采用支持XML的MySQL以便于在XML与数据库间互换。

4.网站的其他主要功能模块

(1)专家讲坛:提供与课程相关的专家和教师的电子讲稿,并进行有机整合,学生可在专题学习基础上针对重点难点做深入学习,并可浏览和下载。

(2)项目实践:提供项目实践案例,包括网络聊天室、网络信使服务等网络通信工具的开发案项目,体现“做中学”和“学中做”的教育理念,以培养学生项目规划和创新能力。

(3)协作学习:将分组教学引入到教学活动中,以异质分组为原则,内置CSCL小组分组模块,以实现协作学习功能,通过教学方法多样化,激发学生的学习兴趣,提高学生的综合编程能力。

(4)Java精品:提供Java典型例程,含Java网络课件、网络通信和网络游戏等资源,供学生赏析和下载,为信息技术与课程整合提供深层支持。

(5)资源天地:为教育资源Web应用端,可链接到教育资源管理平台。

(6)疑难解答:提供Java技术问题库,学生遇到问题时可通过答疑系统进行搜索、查阅。

(7)在线测试:包括网上在线测试和考试管理两部分。前者提供专题知识的相关练习,分为形成性测试和总结性测验两种类型,配有及时反馈功能,题型有选择题、填空题、判断题和简答题。利用前者学生可针对专题内容进行测试与评价;利用后者,教师可实现考生管理、试题管理和考试监控。

(8)词汇列表:提供与Java相关专业术语的解释,学生可浏览和检索。

(9)系统管理:具有系统设置与维护、动态信息管理和用户管理的功能。

三、网站开发关键技术

1.开发技术路线

网站开发采用Java+ JavaScript +JSP+XML 组合技术,并使用混合JavaBeans、Flash和Real Network视频流媒体等技术,开发工具选择Dreamweaver+ Elipse 等,数据库采用MySQL5.1.5或更高,网站服务器采用Tomcat,采用B/S应用模式,支持目前主流浏览器。

2.开发关键技术

(1)资源元数据属性的XML统一描述方法

资源元数据处理采用“151工程”相关规范对资源属性进行统一描述,并对外提供XML描述文档。该规范是根据学习对象元数据规范(LOM)CELTS-3和教育资源建设技术规范CELTS-41.1,结合广东高校资源建设的实际而制订的,是一个较为宽泛的规范,目的是使得各高校的资源能在大范围内共享和互操作,其核心是按资源类型不同制定相关资源属性标注标准。下表给出资源基本信息部分属性描述。

在上述基础上,采用XML对资源进行统一描述,下面以一个动画素材为例,给出其XML描述的方法。

00042

二维动画

Socket双向握手通信过程动画

……

马祖英

.swf

127k

http://eitc.scnu.edu.cn/javasite/res/ani/

SocketShakeHand.swf

……

信息技术

……

教育资源属性的XML统一描述是为了便于资源存储、搜索、绑定和编码入库,采用SOAP技术实现异构环境下教育资源共享、交换和互操作。

(2)教育资源的XML绑定技术

“数据绑定”是一种把数据绑定到用户界面元素(组件)的通用机制,数据绑定体系包括:数据源对象(Data Source Object,DSO)、数据显示对象(Data Consumers)和两个代理器(Binding Agent与Table Repetition Agent)等4个部分。数据源对象向网页提供数据,数据显示对象就是显示数据的HTML元素,代理器则保证前两者工作的同步。

实现XML数据实例到Java和JSP对象模型的绑定通常有两种解决方案:一是自编数据绑定应用程序;二是使用数据绑定框架。本研究采用后者,在具体方法运用上,主要利用XML数据岛进行数据绑定。

XML数据岛是指Web页面直接包含的XML文件或标签数据。它使HTML和XML真正地融合在一起。利用数据岛绑定技术可以很方便地在一个 HTML 文档中插入 XML 数据,并在浏览器中显示出来。数据岛绑定技术适用于结构规则的 XML 文档,它对 XML 文档的数据用类似于关系数据库的技术进行处理。通过Web服务器返回的是XML数据流,因此必须利用XML数据岛绑定技术把XML格式的数据流绑定在HTML格式的文件中,再通过浏览器显示出来。以下是在HTML页中直接嵌入XML数据岛的示例:

00042

二维动画

Socket双向握手通信过程动画

……

马祖英

.swf

127k

http://eitc.scnu.edu.cn/javasite/res/ani

SocketShakeHand.swf

……

信息技术

……

00086

视频流媒体

面向对象程序设计的多态性

……

王咸伟

.asf

4.3M

http://eitc.scnu.edu.cn/javasite/res/video/

Polymorphism.asf

……

信息技术

……

……

对于数据量较大的XML数据可使用外部引用方式链接数据岛。标签的ID属性定义了数据岛的ID而SRC属性指向被嵌入的XML文件:

在HTML文档中嵌入数据岛后,即可将XML数据岛和HTML元素绑定在一起。每个DSO条目(即数据岛)都有唯一ID号。先将HTML元素中的DATASRC属性设置为相应的ID,把HTML元素和数据岛联系在一起,再设置DATAFLD属性值来确定所提取的XML元素。目前,支持DSO绑定机制的元素包括A、BUTTON、DIV、FRAME、IFRAME、IMG、INPUT、LABEL、TABLE和TEXTAREA等。

(3)CSCL协作小组分组算法关键技术

专题学习网站中CSCL协作小组分组是协作学习的关键,分组基本原则是异质同组,所要解决的问题是尽可能将差异度最大的学生分在每个小组中,并使得小组间差异度减小到最低程度。解决问题的关键是先通过将学生的每个特征量化,抽象成特殊属性值,利用数学计算方法加以对比,找到特征差异度间的量化比较,再利用某种确定的遍历方式进行分配,最后根据某种目标函数来计算每个小组内的特殊属性数目和组与组间的绝对差异,使得该目标函数在最大范围的计算中执行效率最高、方法最优。其中涉及的算法关键技术包括初始数据量化、最优化理论算法、遍历算法、目标函数选择、学生特征值的数据量化和稀缺特征值选择。[1]

四、网站的特色

1.体系结构较为先进,知识体系完备,充分体现学科特色

网站的体系构架、系统设计和关键技术较为先进,功能模块划分合理、设置丰富;以网络通信专题为导向,提供丰富的专题结构化知识,形成一个符合认知规律的结构体系,便于学生对新知识进行有效的意义建构;开辟 “项目实践”、“Java精品”等栏目便于学生从事开发实践;采用虚拟仿真和程序运行与跟踪技术,可动态输入数据、跟踪程序运行结果,充分体现了程序设计类课程教学的特点。此外,还采用“样例学习”和“做中学”等教学方式,提供多种网络学习工具,融入协作学习的先进教育理念,体现了信息技术与课程整合的思想。

2.丰富的原创资源,资源建设符合规范

网站提供丰富的教育资源,其中原创超过60%。专题资源库构建符合资源建设技术规范,资源管理平台可实现资源与元数据的编辑、导入、修改和删除,并可实现异构教学环境下资源共享和互操作。

3.多方位的学习支持服务

网站提供了良好学习导航、自主学习和协作学习环境,具有完备的学习评价和CSCL小组分组系统,并提供实用性强的网络学习工具和资源管理平台,可多方位地为学生提供学习支持服务。

4.专题学习网站具有跨平台特性

由于网站采用Java、JSP和XML等技术实现,加上MySQL的开源特性,因此本网站可实现跨平台应用。该网站完成后经过不断改进与完善,已先后用于我校多届教育技术专业的本科教学,实践表明:利用该网站获得良好的教学效果,对于促进“Java程序设计”及相关IT类课程的教改以及信息技术与课程整合具有良好的现实意义和应用前景,可以用于教师课堂辅助教学,也可以用于学生自主学习、分布式协作学习以及企事业单位的IT培训和继续教育。

参考文献:

[1]李洁,王咸伟.CSCL中小组分组算法及系统设计与开发[J].华南师范大学(自然科学版),2007.2.[2]教育部信息化技术标准委员会.教育资源建设技术规范CELTS-41.1,2002.12.[3]广东高教电教中心.广东省高等学校现代教育技术“151工程”建设规范[S],2004.4.[4]郑维勇,王萍.基于学习对象元数据的教育资源管理系统的设计与实现[J].中国教育信息化.2007.11

[5]Faye P Teer, S.E Kruck.The Java programming course in accredited business schools in the United States.Information Technology, Learning, and Performance Journal.Morehead: Spring 2005.Vol.23, Iss.1;pg.1, 11 pgs.[6]Liang,Y.D.(2004).Introduction to Java programming, comprehensive(5th ed.).Upper Saddle River, NJ: Prentice Hall.(编辑:杨馥红)

第三篇:JAVA网站开发工程师面试题

JAVA_WEB开发人员面试题及答案

面试人:面试时间:

一.选择题(每题1分,共20分)

1.jsp 有几个内置对象?(c)(单选)

A 5个B6个C9个D8个

2.在JAVA中,如何跳出当前的多重嵌套循环?(ab)(多选)

A breakBreturnCforwardDfinally

3.四种会话跟踪技术,哪个范围最大?(d)(单选)

A pageBrequestCsessionDapplication

4.java中有几种方法可以实现一个线程?(b)(单选)

A1种B2种C3种D 4种

5.同步有几种实现方法(b)(单选)

A 4种B2种C3种D 1种

6.xml有哪些解析技术?(abcd)(多选)

A DOMBSAXCSTAXD JDOM

7.下列说法正确的是(bd)(多选)

A 构造器Constructor可被继承

BString类不可以继承

C 判断两个对象值相同用“==”

D char型变量中能不能存贮一个中文汉字

8.下列关于线程说法正确的是(abc)(多选)

A调用sleep不会释放对象锁。

B调用wait方法导致本线程放弃对象锁

C当一个线程进入一个对象的一个synchronized方法后,其它线程不可进入此对象的其它方法

Dnotify():唤醒全部处于等待状态的线程。

9.给定JSP程序源码如下,该JSP运行后输出的结果是(b)。(单选)

<%int Count=1;%>

Count:<%= Count%>

ACount:1BCount:2C1:2 DCount:

10.在J2EE中的一个JSP文件中,有表达式<%=2 3%>,它将输出(b)(单选)

a)2 3b)5c)23d)不会输出,因为表达式是错误的11.在J2EE中,编写Servlet过滤器时,(c)接口用于调用过滤器链中的下一个过滤器。(单选)

a)Filterb)FilterConfigc)FilterChaind)Servlet

12)关于视图的描述正确的是(c)(单选)

a)视图是一种特殊的表,它存储了用户定制的数据。

b)视图仅用于用户进行查询,不可以通过视图对数据进行修改。

c)在sql server中可以通过用T-sql语句来创建,也可以通过企业管理器。

d)创建视图只能操作本机器上的数据库表。

13)STRUTS框架中,(c)类在视图层和控制层之间传递HTML表单数据。(单选)a)Actionb)ActionForward c)ActionFormd)ActionServlet

18)Struts控制器的主要任务是接受用户请求、根据用户请求调用对应的模型组件、获取业务逻辑执行结果的根据处理结果选择适合的视图组件返回给用户,实现Struts控制器的类中不包括(c)。(单选)

a)ActionServletb)Actionc)ActionFormd)ActionForward

14)以下关于SessionFactory的说法哪些正确?(bc)(多选)

A)对于每个数据库事务,应该创建一个SessionFactory对象

B)一个SessionFactory对象对应一个数据库存储源。

C)SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源只需要创建一个。

D)SessionFactory的load()方法用于加载持久化对象

15)下面那些是Hibernate的查询方式(abc)(多选)

A)sqlB)hqlC)Criteria

18)以下数据结构不属于线性结构的是(c)(单选)

A)队列B)线性表C)二叉树D)栈

16)下列是文件读写的类是(ac)(多选)

A)File ReaderB)FileC)FileWriterD)InputStream

17)数据库技术中的“脏数据',是指(c)的数据。(单选)

A)错误B 回返C 未提交D 未提交的随后又被撤消

18)在计算机中,—个字节是由多少个二进制位组成的(b)(单选)

A).4B).8C).16D).24

19.下列不属于面向对象的方法是(d)(单选)

A).对象B).类C).继承D).过程调用

29.设正x、y均为整型变量,且x=10 y=3,则以下语句printf(“%d,%dn”,x--,--y);的输出结果是(d)(单选)

A).10,3B).9,3C).9,2D).10,2二.填空(每空1分,共10分)

1.String s = new String(“xyz”);创建了__2__个String 对象?

2.Math.round(9.5)等於__10___Math.round(-9.5)等於__-9____

3.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会被执行,什么时候被执行,在return____前_____(前还是后?)

4.如何现实servlet的单线程模式 ______<%@ page isThreadSafe=“false”%> _________

5.类变量必须带的修饰符是 ______ static _________

6.final类可以修饰在属性 , 方法和___类___前面

7.Java默认的包是______ java.lang.*_________

8.Hibernate里面怎样实现类与类之间的关系__________表映射_______________

9.Socket 编程服务器端用____ serverSocket ____类来创建socket对象。

三. 判断题(每题2分,共10分)

1.依赖注入即是“面向接口”的编程。错

2.Overload和Override都是java多态的不同体现形式。对

3.String是最基本的数据类型。错

4.启动一个线程是用start。对

5.接口可以继承接口。对

四.简答题(每题5分,共30分)

1、网页设计采用div css有什么好处?

答:布局实现了表现与内容的分离,大大缩减页面代码,符合W3C的标准,兼容性更好;易于后期网站的更新、维护;SEO的优化:对搜索引擎更加友好,更容易被搜索引擎收录。

2、前端页面有哪三层构成,分别是什么?作用是什么?

答:网页分成三个层次,即:结构层、表示层、行为层。

网页的结构层(structural layer)由HTML或 XHTML之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P 标签表达了这样一种语义:“这是一个文本段。”

网页的表示层(presentation layer)由CSS负责创建。CSS 对“如何显示有关内容”的问题做出了回答。

网页的行为层(behavior layer)负责回答“内容应该如何对事件做出反应”这一问题。这是 Javascript 语言和 DOM 主宰的领域。

3、如何区别display:none与visibility:hidden?

答:相同的是display:none与visibility:hidden都可以用来隐藏某个元素;

不同的是display:none在隐藏元素的时候,将其占位空间也去掉;而visibility:hidden只是隐藏了内容而已,其占位空间仍然保留。

4.购物网站的主色调应该是什么样色?交友网站?体育网站?软件网站?年轻的互联网? 答:购物:暖色;交友:粉红之类的;体育:酷一点;软件公司:无所谓;年轻互联网:有朝气的颜色,比如绿色。

5. 一个网站最多有几种色彩

答:一到两各种主色彩。

6.如果背景是黑色,那么字体用什么颜色能突出字体,且不显得刺眼?

答:红色。

五.编程操作题(每题6分,30分)

注:有上机机会上机操作,没有就手动把代码写出来;

1.一个表td中的部分Id有多个记录,把所有有多个记录的id查出来,并显示共有多少条 记录数。

2.写出冒泡排序的实现

答:代码如下:

public void fun9(){

int[] a = {1,3,5,61,2,123,12,}

Conica.print(a);

for(int i=0;i

for(int j=0;j

{

if(a[j]>a[j 1]){

int temp = a[j];

a[j] = a[j 1];

a[j 1] = temp;

}

}

}

}编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,应该输出为“我ABC”而不是“我ABC 汉的半个”。

答:代码如下:

package test;

class SplitString {

String SplitStr;

int SplitByte;

public SplitString(String str,intbytes){

SplitStr=str;

SplitByte=bytes;

System.out.println(“TheString is:′” SplitStr “′;SplitBytes=” SplitByte);

}

public void SplitIt(){

int loopCount;

loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte

1);

System.out.println(“WillSplit into ” loopCount);

for(int i=1;i<=loopCount;i){

if(i==loopCount){

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));

}

else {

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));

}

}

}

public static void main(String[]args){

SplitString ss = newSplitString(“test中dd文dsaf中男大3443n中国43中国人

0ewldfls=103”,4);

ss.SplitIt();

}

}

注:另外关于美工操作,如果有photoshop等软件可以任选择两题考下:

1.手写 html 能力

描述一个不规则表格,一定要有跨列和跨行的,让他把 html 代码写出来;

2.让他用 Photoshop 或 Fireworks 设计一个页面布局,或者指定一个效果(比如半透明的按钮),让他画出来,在或者,提供一幅人物照片,要求他抠掉背景,这是平面软件能力的一种体现方式;

3.如果要涉及 Flash,让他做一个两种形状(方形、圆圈)的渐变,要求过渡平滑、美观,新手都直接用 shapemotion,很难看,高手知道加过渡。

第四篇:个人博客网站的设计与实现

摘 要

最近几年博客在国内发展的非常迅猛,它可以作为其使用者个人或者工作中的文章、日记、照片等分享的平台,其渐渐成为新兴的网路媒介,并且扩展至营销、商业推广等商业应用,越来越多的人们建立了属于自己的博客来展示自己的风采。

该博客网站设计的目的旨在建立以ASP.NET和SQL Server 2005数据库为工具,功能简洁、结构灵活且精致、轻巧的个人博客网站系统。其中网络日志的管理作为本系统的主要目标,且同时可以满足用户对于图片,相册,留言,个人信息等的管理和展示,并且可以设置博客的背景音乐等功能。

该设计的开发环境为Microsoft Visual Studio 2005,使用C#编程语言进行编码,采用的是SQL Server 2005数据库。

关键字:DotNet;C#; 个人博客; 数据库; SQL Server 2005

ABSTRACT

In recent years, The Blog develops rapidly in China.It can be used as a platform which shares its user's articles for daily life or for work, and also shares diaries and musics.Blog has become an emerging media on the Internet gradually, and it has extended to be business applications such as marketing and promotion.More and more people have established their own blogs to show themselves.The design for this blog website aims to build a personal blog system which based on ASP.NET and SQL Server 2005, having advantages such as its concise functions, flexible structures, exquisite but simple looks.The management of cyber diaries is the main objective for this system.The system can also meet the requirements such as managements and displays for user's pictures, photos, messages and personal information.Yet it can set background musics.This design is developed by Microsoft Visual Studio 2005, coded by C#, and based on the database of SQL Server 2005.Keywords: Asp.Net;C#;Personal Blog;Database;SQL Server 2005

目 录

第一章 系统概述...................................................1 1.1研究背景........................................................1 1.2研究现状........................................................1 1.3设计内容........................................................2 1.4 课题研究意义...................................................3 第二章 系统开发环境...............................................4 2.1 ASP.NET概述....................................................4

2.1.1 ASP.NET和ASP.NET结构.....................................4 2.2 C#概述..........................................................7 2.3 动态网站技术介绍................................................8 2.4数据库技术......................................................8 2.5 ADO.NET连接数据库..............................................9 第三章 需求分析..................................................11 3.1 可行性分析.....................................................11

3.1.1 技术可行性.................................................11

3.1.2 经济可行性.................................................12

3.1.3操作可行性.................................................14 3.2 功能需求.......................................................14 3.3 性能需求.......................................................15 3.4系统用例.......................................................15 第四章 系统概要设计..............................................17

4.1概述...........................................................17 4.2系统结构.......................................................17 4.3 数据库设计.....................................................18

4.3.1 数据库设计概述.............................................19

4.3.2 数据库概念设计.............................................20

4.3.3 数据库实体设计.............................................22

4.3.4 数据库设计表...............................................24 第五章 系统详细设计..............................................28 5.1用户登录模块的实现.............................................28 5.2留言板模块的实现...............................................29 5.3相册模块的实现.................................................31 5.4图片管理模块的实现.............................................34 5.5背景音乐的实现.................................................37 5.6日历模块的实现.................................................39 第六章 总结......................................................41 参考文献.........................................................42 致谢.............................................................43

基于Asp.Net的个人博客网站的设计与实现

第一章 系统概述

1.1研究背景

BLOG一词耳熟能详,把它翻译成我们所熟悉的意思就是“网络文章”,现在一般叫做“博客”。具体说来,使用浏览器或者某些程序,在互联网上去创作、书写、发贴和刊登自己的文章、照片等信息的人就是博客(BLOGGER)。

每一个BLOG都是一个网页,其通常是由简单短小并且经常更新的Post来构成;这之中所贴的文章全都以年份、日期为依据排列。BLOG的内容与目的大相径庭,其包含网站的相关链接、灌水、评论,对有关组织以及个人所构想的文章、图片、绘画、歌曲,乃至实时消息、构想的故事的发表和出版应有尽有。很多博客是个人对心中的感情和一些奇思妙想的抒发方式,而其它的博客则是一些人按照一些特定的主题或者共同爱好的领域进行的自发性的集体创作。BLOG可以理解为向整个网络传达实时的讯息。而创作这些blog的作者便被称为博客或者博主。

Jorn Barge在一九九七年的十二月第一次提出了BLOG一词,但到当年互联网上的博客屈指可数,直到进入新世纪博客才真正的流行起来。最开始,博客们每天把他们其浏览互联网的的感受和想法记录下来,然后发表出来,以供其他人参考和借鉴。但随着BLOG的快速发展,其目的与最初的时候已经大相径庭。现如今互联网上面数以百万计的博客们所创作并且发表出来的难以计数的BLOG有着各种各样的目地。但是,因为其沟通方式较E-mail、聊天室更简洁、容易上手,更加快捷和广泛,BLOG已经成为个人、团体、公司和政府部门之间越来越流行的沟通工具。

1.2研究现状

BLOG,把它翻译成我们所熟悉的意思就是“网络文章”,现在一般叫做“博客”。具体说来,使用浏览器或者某些程序,在互联网上去创作、书写、发贴和刊登自己的文章、照片等信息的人就是博客。是一个急速发展的网络活动,现在博客一词已经被现代汉语词典所收录,标志着这种新兴事物已经被人们所接受。BLOG是在E-mail、BBS、IM之后的所涌现出的新一种互联的社交形式,是在这个新时代的属于个人的一个交流平台,是以迅猛发展的网络技术为基础的网络日记,是新时代的生活与工作方式的体现,同时也是新时代的学习方式的体现。

每一个BLOG都是一个网页,其通常是由简单短小并且经常更新的Post来

构成,这之中所贴的文章全都以年份、日期为依据排列。BLOG的内容与目的大相径庭,其包含网站的相关链接、灌水、评论,对有关组织以及个人所构想的文章、图片、绘画、歌曲,乃至实时消息、构想的故事的发表和出版应有尽有。传统意义上的日记带有着很强的隐私性。与此不同的是BLOG同时具有着隐私性质与公开性质,并且将二者有机结合了起来,博客绝不只是单纯的去表达个人的思想与记录日常生活中的流水账,博客所展示的内容可以用来沟通、展示自我并且可以为他人提供参考和帮助,它存在于整个互联网,可以极大程度的展示自我,极广泛的进行交流。

博客出现于九七年底,在九八年“DrudgeReport”这一blog成为披露克林顿绯闻案的先锋;

2000年博客开始走入中国,并且得到迅速发展,但并没取得突出业绩; 2001年博客在911事件的报道中发挥了巨大的作用,从而步入主流; 2003年在对伊拉克战争的报道中,美国众多传统媒体所具备的公信力遇到博客的重大挑战;

2004年是对于中国博客的发展至关重要的一年,木子美事件使很多中国人了解了博客,并学会了使用用博客;

2005年,像搜狐,新浪这样的很多起初对博客这一事物不抱期望的的国内各门户网站,也纷纷加入到发展博客的行列,从此国内博客的发展进入了战国时代。最近几年,芙蓉姐姐等网络名人的一炮走红也使得博客更加深入人心。

博客们每天把他们其浏览互联网的的感受和想法记录下来,然后发表出来,以供其他人参考和借鉴。但随着BLOG的快速发展,其目的与最初的时候已经大相径庭。现如今互联网上面数以百万计的博客们所创作并且发表出来的难以计数的BLOG有着各种各样的目地。但是,因为其沟通方式较E-mail、聊天室更简洁、容易上手,更加快捷和广泛,BLOG已经成为个人、团体、公司和政府部门之间越来越流行的沟通工具。

如今,门户网站已经普遍有了自己的大型博客站点。目前,国内发展较好为人们所熟知的相关网站有:新浪,搜狐,腾讯,百度等。

1.3设计内容

网站的界面很友好、明快、舒适;操作起来容易、快捷;查询资料快捷、准确。本个人博客网站在很大程度上实现安装的简易性、操作的简单性与维护的最小化。系统运行有较高的稳定性、安全性和可靠性。在功能上游客身份可以用不注册,直接通过匿名访问的方式在博客前台进行查看用户的博客日志,发表留言,查看用户的相册图片等操作。博客用户可以在前台的页面登录,然后进入后台页

面。在后台可以进行发表日志和管理日志以及日志的留言,添加相册,删除相册,上传、删除图片等操作。博客的主人在登录之后可以修改自己的个人信息,也可以设置自己博客的背景音乐。

1.4 课题研究意义

根据上面所介绍的相关信息我们已经知道如今博客的发展已经到了比较成熟的阶段了,它已经被人们所广泛接受。博客在改变着人们抒发情感与人际间相互交流的方式,它拉近了人与人的距离,改变着人们社交的方式;博客极大的扩展了着人们对于信息世界的想象,它影响着整个互联网的发展趋势,甚至对社会的发展会起到想当重大的影响。

博客这样一种有着巨大影响的新的信息传播方式的发展,必将有利于社会的进步。但同时也应看到,由于博客所具有的快速广泛传播信息的功能,一旦为不法分子所利用将带了严重的后果。所以我们要把这种好的作用尽可能的发挥到最大,并且通过技术、法律和道德的力量来避免不好的作用,在这过程中必然就需要通过开发新的技术来让博客的用户们活动更好的体验。

现在各个大中型的门户网站都退出了博客、空间等服务,令广大用户能够在互联网上有属于自己的一席之地。为了满足广大用户们在使用博客的过程中所追求的个性化要求,本个人博客网站尽量采用了.NET中的新方法,该个人博客采用.NET的可视化开发环境,所见即所得。从而让开发人员可以更加高效快捷的得到开发内容的实际效果,并且进行相关调试。3 基于Asp.Net的个人博客网站的设计与实现

第二章 系统开发环境

2.1 ASP.NET概述

DOTNET也就是我们通常所说的.NET,准确来说它叫做.Net框架。作为Windows系统的的一种组件,NET框架将会支持未来会出现的各种应用程序和XML Web业务。.Net框架刚刚提出的时候,微软确定要实现以下目标:给程序开发者统一的面向对象的编程环境。提供一个控制软件的布置和协调不同版本之间矛盾的执行环境,尽可能的减少矛盾,提供了更加安全可靠的的代码运行环境,提供一个可以避免脚本运行或者解释运行环境所引起的整体性能降低,使开发人员面对的操作系统的应用程序与网络应用程序相协调。

.Net框架在通过初步发展之后,在.Net 框架l.0以及它的升级版.Net 框架l.l中,更好地支持移动ASP。净监控及支持ODBC和Oracle数据库。后.Net 2.0中出现了越来越多不同的API。API允许管理.Net执行时的非实例.Net应用程序能够将其实现。不同以往的API.Net里面有着丰富的本领,比如:多线程,分配内存,代码的载入,给予了有效的管理,其次.Net 3.0里面加入了四个WPF。为开发Windows窗体和浏览器应用程序提供更好的用户体验的WCF。给予用户SOA(应用于服务软件的架构),以支持安全的网络服务框架。Windows工作流基础(WF):提供面向工作流的设计和开发(面向工作流程)的应用基础设施,以支持应用程序接口。Windows CardSpace的:提供的SSO解决方案,所有使用者都拥有属于自己的CardSpace。在这个项目后,所使用的.Net框架3.5,这个版本包括一款支持C#和VB的网络中心编译器的语言功能的支持。同时,.Net 框架3.5的自动.Net 框架2.0 SPⅠ.Net 框架3.0 SPⅠ,用于这两个版本提供安全修补程序,以及少量额外的库的。2.1.1 ASP.NET和ASP.NET结构

ASP.NET是.NET 框架的一个组成部分:它给了用户大量的用于编程的类,以满足各种编程需要。

.NET 框架类库

假如你是Microsoft。假如你必须支持大量的编程Language,比如Visual Basic、C#和C++。这些编程语言的很多功能相互重叠。例如,对于任何程序语言,必须包括的文件系统的访问,与数据库和操作系统的字符串的操作方法。

并且,虽然语言不同,但是实现相同功能时的程序结构是相似的。就像任何

程序语言都能够使用循环结构与条件结构的语句。写在Visual Basic语法的使用条件语句是写在C + +中是不一样的,程序的功能却是一样的。

此外,对于绝大多数的程序语言来说来都有着类似的数据类型。绝大多数的程序语言,都有能够定义整数型和字符型的数据。虽然由于程序语言的种类不同,整数型数据的最大值和最小值不尽相同,但是它们都是对应着用一种数据类型。

同时向多种语言来提供这种功能要耗费很多的资源。为什么继续重复工作呢?对所有的语言只创建这种功能一次,然后把这个功能应用在每一种语言中岂不是更容易。

.NET Framework类库正是这么做的。它包含一个庞大的集合,旨在以满足任何可以想象的编程需要的类。举例来说,数据库访问,文件协同,操作文本,生成图像等工作.NET Framework类库所提供的的类型足以将其实现。刨去以上的内容,本框架中有着众多专业的类型应用在处理网络协议的执行任务和正则表达式上。

此外.NET Framework包含所有基本的变量数据类型。

相比于之前的脚本语言,ASP.NET优越性集中表现在下面几个特性上:

(一)高效性

以.NET框架做为基础来制作的的ASP.NET,应当使用VB,C++这些高度模块化的编程语言,只要执行一次编译器后便可以直接运行,因此ASP.NET的速度和效率比ASP这种只能依靠VBScript和JavaScript这样的脚本编程语言,增强了很多。

(二)可重用性

ASP.NET比起以前的ASP来是大相径庭的。ASP中ASP的代码与HTML是混在一起的,而ASP.NET中是代码与内容是完全分离的,可重重复使用性大大提高。

(三)代码量小

在ASP中,要实现的功能是通过编写代码来实现,但ASP.NET只是事先,可以自动实现,因此,当实现相同的功能,小于ASP的ASP.NET代码量。

(四)ASP.NET不是解释性的而是编译型的

ASP.NET编译器由两个阶段组成。在第一阶段,当一个ASP.NET页面是第一次访问或早期编译ASP.NET网站,包含语言代码江北编译成微软中间语言中间语言代码,像ASP.NET网站的编译模型可以在不使用背景语言的混合编程。第二阶段,ASP.NET页面执行时,MSL IL代码可以由即时编译(时间,JIT)的形式被编译成机器语言。

ASP.NET页面的编译过程为:

如果是VB.NET代码,则使用这种语言所编译器;若使用的是C#代码,则使用C#对应的编译器;如果是其他语言代码,则使用其对应的编译器。统一将

其编译为MSIL代码,之后进行JIT变编译,随后编译为机器语言代码最终进行执行。6 基于Asp.Net的个人博客网站的设计与实现

2.2 C#概述

C#是一种Microsoft为了实际应用.NET而根据其特点和需要所创造的不同于以前出现过的的的编程语言。C#同.NET Framework存在密切相关的关系,C#中所包含地类型便是.NET里面所能提供地所有类,而且C#可以直接使用.NET 框架所提供地类库。此外,C#中所包含地理性的安全检查和结构化异常的处理等全部由CLR来处理。事实上,ASP.NET 3.5便是使用C#语言来进行开发的,因此C#这种编程语言不进十分适合Web应用程序的开发,而且还适合用于强大的系统程序的开发。

C#这门语言具有着如下的特点:

在.NET 框架所提供的环境中执行C#的代码的时候,无法对内存直接进行操作,从而使得程序的安全性能大大提高。C#中并不推荐使用指针,如果想要使用指针的话,需要添加unsafe修饰符才行,并且在编译的时候需要采用/unsafe这个参数。

采用C#编程语言可以构建出健康高效的应用程序。C#中的垃圾回收功能将会自动的回收那些不再被使用的对象所占用的内存。而异常处理功能则提供了结构化的并且可扩展的错误检测与恢复的方法。独有的类型安全的设计从根本上排除在读取未被初始化过的变量和未被初始化过的数组的时候导致溢出上限的可能性。

C#编程语言有着整合的类型系统。全部的C#类都继成于唯一一个根类——object。所以,全部的类型都能够共享同一组通用操作。

C#编程语言完全支持使用组件编程。现在软件设计越来越依靠有着自包含与自描述功能包形式的软件组件,通过属性,方法和时间来提供编程的模型。而C#恰恰可以轻而易举的创建并且使用这些软件组件。

通过上面的介绍,可以想象.NET Framework会是非常庞大的。它有着三千四百个的类。幸运的是,类不会简单的堆在一起。.NET Framework通过鲜明的层次结构将类组织在命名空间中。

例如在先前的ASP中,你只有五个标准类的访问,而在ASP.NET中所提供的类超过三千四百个!

命名空间是一个逻辑分组,像是,有关工作在System.IO的文件系统类型设置。您通过完整的类的命名空间,可以唯一识别在the.NET框架位置的任何一类。默认情况下,ASP.NET页面,在一些选定的命名空间中包含的类,在ASP.NET里普遍应用类被系统初始化。

基于Asp.Net的个人博客网站的设计与实现

2.3 动态网站技术介绍

鉴于博客网站系统的操作界面均为Web页面的形式,并且需要对各种用户的请求实时进行处理以及返回结果,而这些是一般的静态Web页面所无法实现的,因此需要使用动态网页技术。现在动态网页技术有很多,例如CGI、SP.NET、JSP、ASP、ASP.NET等。本设计将以ASP.NET为主要技术。

ASP.NET是ASP版本的下一代,它不仅仅是ASP Four,而是一种新的Web开发框架,包含了许多新的功能。不像ASP,ASP.NET是完全基于模块化和组件,它的可扩展性和定制是用ASP技术无法比拟的,在数据处理方面引入了许多令人振奋的新技术,为Web开发人员提供了更多的灵活性,网络是有效的改善应用程序的开发效率。ASP技术相比,ASP.NET的进展是革命性的。ASP.NET和Windows2005 Advanced Server的完美结合,为小型和中型企业用户和企业用户的网络商务活动提供了更好的稳定性,安全性,高效的运行环境。

2.4数据库技术

该个人博客网站所具有的存储用户信息,文章,图片,音乐等功能必然要通过数据库技术来实现。

统一的SQL Server 2005中的语言风格,可以完成这项工作的数据库活动,包括创建数据库,数字模式,改变和查询数据和整体安全的保障和数据库的维护。数据库应用系统的发展提供了一个良好的环境。即使系统在实际使用之后,用户仍旧能够根据需要来改变系统的结构,同时保证数据的正常运行,这一特点令系统有了非常优异的扩展性能。

在使用SQL语言访问数据库时,用户不需要像C语言那样具体的写出如何实现操作,而只需要写清楚要做的事情,SQL语言就可以将要求提交给数据库管理系统,然后由数据库管理系统自动全部工资。

自二十世纪八十年代以来,SQL便是DBMS这一系统所采用的规范化语言。最早的SQL标准是ANSI(American National Standards Institute)于1986年10也颁布的。ISO(国际标准化组织)于一九八七年六月正式通过了国际标准,并在此基础上补充,****年四月,ISO发布有着全部功能的SQL,SQL-89。SQL-89标准的颁布,对数据库技术队发展和数据库的应用都起到了巨大的推进作用。尽管如此,SQL-89依然有相当多不足之处。因此,SQL-89的基础上,研究和修订3年以上后,国际标准化组织与ANSI于1992年8月颁布了新的标准

——SQL-92 亦或是SQL2。值得注意的是它依然没有很全面,因此于一九九九年有颁布了SQL-99或叫做SQL3。

SQL语言就能够实现所数据库活动的工作,包括数据库的创建,修改和查询数据和安全管理和维护数据库,使用户可以继续死对数据库结构根据修改后还需要数据库系统投入使用。同时不会影像数据库的运行,从而使得系统具有良好的可扩展性。

在使用SQL语言访问数据库的时候,用户无需告诉计算机怎样一步步的达成操作,只需要描述清楚所要实现的目的。SQL语言之后便会将用户的要求提供到数据库管理系统,然后其将自动将剩余的任务达成。

尽管SQL语言有着强大的功能,但是它并不复杂,通过很少的几条命令便能实现众多功能。而且,SQL语法和日常语言比较相似,十分便于学习。

SQL语言能够通过到命令的模式直接应用,同时能够嵌入在使用的编程语言之中。如今数据库制作工具普遍的直接将SQL语言变成自己的语言,它是使用起来非常方便。贴现使用,为用户提供了一个灵活的选择。但不管是什么样的应用,SQL语言都会采用大体相同的格式。鉴于SQL 2005所具有的功能可以方便高效的实现本次工作的目的,本系统将使用SQL 2005。

本网站的开发工具使用的是Visual Studio 的二零零八版,使用的是C#语言作为编程语言,用到的技术有ASP.NET这一微软推出的先进技术,在数据库开发方面使用的则是SQLServer数据库,版本为二零零五。

2.5 ADO.NET连接数据库

在网站的开发过程中,如何存取数据库是最常用的部分。.Net 框架提供了多种存取数据库的方式。

ADO.NET这种数据访问技术虽然比较先进,但也存在着需要编写大量重复代码的问题,为了提高工作效率,ASP.NET 2.0进行来大胆的改进,增加来许多数据源控件和数据绑定控件。数据源控件包中的所有接入和数据处理功能,包括连接到数据源头,使用选择,更新,delete和插入SQL代码来获取数据和管理。数据绑定控件是用来显示数据在多种方式。把数据来源相关的控件和绑定上数据的空间有机整合起来,用户只需要轻点需要的属性,基本上不用依靠任何代码就都可以访问数据库。

System.Data命名空间管理专业类在ADO.NET中,数据处理是一个关键部分。所有依靠ADO.NET的软件的实现方法的关键都是数据集。该数据集是一个内存库中的副本。一个数据集包括许多数据表,每个数据表一般都会对应着一个数据库的表或者视图。有些特定的命名空间便是用来提供处理数据集,数据表和

视图的类。通过这些类能够方便的以编程的方式与数据库中的数据进行交互。

System.Data命名空间中的类,涵盖了所有的内容和关系数据库,如某些特定的类的外键查找和修改数据视图的数据关系表。

使用System.Data能够将数据库中的数据进行缓存,方便客户端进行读取,从而打到提高数据交互性能的目的。

System.Data是数据操作的关键,System.Data命名空间中包含的类负责着协调整合修改并且提供数据交互的一些常用功能:

通过使用共同System.Data命名空间中的类和接口的连接,可实现连接数据库。在这之中最关键的是DataSet类,它管理者数据库中的多个表。这些表在第一次读出来之后就保存在内存中,在此读取的时候可以直接从内存中读取,因此一般会把DataSet放在内存的缓存里边。10 基于Asp.Net的个人博客网站的设计与实现

第三章 需求分析

3.1 可行性分析

技术可行性:如今主流的计算机配置水平均可以实现平台的安装和稳定运行;SQL数据库和VS2008等编程工具提供了可靠的编程环境;凭借以前所学的软件开发方法和编程的知识,并且查阅相关资料和书籍可以为网站的开发提供足够的技术保障。

社会可行性:目前互联网上已经有很多成功的博客网站,博客系统的存在完全符合国家的相关法规和普遍的社会价值观,不存在严重的障碍。此外,博客的的操作方式简便,门槛低,适合大多数人使用,其内容符合大众的价值观,有利于提高人们学习、交流的效率,因此本设计具有可行性。

经济可行性:本设计基于ASP.NET开发,完全可以实现免费、开源,用户可以直接浏览博客信息和留言,并且可用通过免费注册来获得更多的功能,便于为人们接受。3.1.1 技术可行性

技术可行性是本设计最关键的部分,也是其他可行性的基础。需要根据用户所提出的各种功能要求和限制条件,在技术的角度上研究本系统实现的可行性。系统的开发涉及多个方面的技术。包括了系统的软件和硬件,网络的环境,人员的技术水平,系统开发的各种相关理论。在

在技术可行性方面需要考虑的有很多,首先是技术人员,无论任何工作,都是以人为本的,由人来完成,最后面向的用户也是人。而不管是个人还是团队,如果要开发一款产品都需要相应的技术基础。对于个人来说必须要掌握相关的技术或者确定可以在可接受的时间范围内掌握该技术才能够去进行开发。对于团队来说,团队之中至少要有一个人能够完整的掌握相关的技术,不能这个人会一点那个人懂一点来东拼西凑,这样会大大的降低开发效率。而且对于团队来说,良好的团队协作是成功的必要条件,如果一个人所写的代码虽然能顺利运行,但是不具有很好的规范性兼容性,那么这个团队也是无法协同工作的。

之后要提到的就是采用的技术,从信息革命爆发以来所涌现出的新技术新理念层出不穷,但是为人们所广泛接受的技术同庞大的总量比起来就显得九牛一毛了。很多技术或者是不成熟,或者是不完善或者是不符合大多数人的价值观。总

之因为各种各样的原因导致它们没有广泛的应用。我们在开发的过程中确定了产品的功能之后要做的便是选择合适的技术来实现它,这其中的大多数技术应当是成熟的可靠的,因为作为一款产品首先应该是可靠的,不能总是出现问题。但是也应当采用一些具有新特点的技术,令本产品同其他类似产品比起来有所独特的地方,能够在众多同类产品中脱颖而出。当然,如果技术实力足够强大,也可以更加大胆和广泛的采用新技术新理念。

博客作为一款网络应用,需要注意的还有网络环境的问题,如何降低网络环境的波动对博客系统性能产生的影响。比如博客在只有少数用户的时候能够流畅的运行,但是在面对大量的用户时原有的资源就可能捉襟见肘,如何在低谷和高峰之间进行切换,在面对大量用户时不会导致明显的性能能下降,在面对少量用户时避免资源的浪费。

最后要注意是硬件条件,有些程序在正常运行的时候看起来效果很好,但是它要求的硬件条件非常高。像是核爆炸的模拟程序,它已经各个大国所使用,它能够为相关领域的科技发展提供极大的便利。但是由于它庞大到令人惊叹的运算量,世界上也只有着为数不多的超级计算机能够运行它。再比如一款游戏,在刚推出的时候如果只能在那个时期顶尖的旗舰级电脑平台上才能流畅运行,那么能接受它的用户面就会仅仅限制在一些游戏发烧友上,失去广大的用户群体,从而导致无法获得理想的经济回报。因此,对于博客这种需要依靠大的用户群体来支撑的事物,必须用尽可能地的硬件要求便能实现好的用户体验。

技术成熟性方面本系统的软件方面采用ASP.NET技术,而.NET技术已经投入实际应用很长时间,如今已经成为来计算机领域一门非常有前途的技术,它成熟、稳定。并且本网站的开发开发工具使用的是Visual Studio 的二零零八版,使用的是C#语言作为编程语言,用到的技术有ASP.NET这一微软发明的先进技术,在数据库开发方面使用的则是SQLServer数据库,版本为二零零五。通过ADO技术将其与.NET有机结合起来开发出一个适应性强,稳定并且高效的系统,在相关的技术方面不存在不成熟,缺乏实际检验,缺乏实用性和适应性的问题。其硬件方面由于采用的是较老版本的软件平台,其对硬件的要求较低,现在绝大多数个人电脑均能运行。在技术人员方面,我之前在课堂上学习过ASP.NET网站的开发和SQL数据库,并且通过在图书馆查阅相关资料,网上参考类似的成熟的相关产品,和老师同学的交流等掌握了所需的技术。预期整体开发过程所需时间小于毕业设计所规定的时间,能够独立按时完成任务。3.1.2 经济可行性

经济可行性是指可以使用的资源的可能性,经济可行性研究的核心是成本效益分析,主要是估算开发成本是否会高于预期利润。要关注开发设计所投入的资

本与软件所带来的经济效益是否对称,要关注软件是否能够给用户创造经济效益并且带来好的体验。对于一款产品来说,经济可行性是至关重要的。我们开发产品的最终目的是为了产生经济效益,如果这个最高目标无法得到实现,其他的努力都将是徒劳的。所谓经济效益就是最后能产生的直接利益加上间接利益再减去开发成本和运行维护的成本所得到的收益。现有的博客的盈利方式主要有植入广告,用户个性化需求等方面。植入广告已经成为了互联网行业的一个主要盈利方式,比如谷歌公司百分之九十以上的经济收入来自于广告。而广告盈利的前提是有这大量的点击量,现在很多网站上有大量的恶意广告和不友好的广告,比如要实现点击某个连接或者看到某些内容就必须点击若干个广告。这种方式在短期来看是能够为网站提供大量的点击率,但是随着同类网站的发展,用户会趋向于简单友好的网站,而不是下载个文件都需要机械性的点击关闭多次广告的网站。好的广告植入方式应该是在尽量不引起用户反感并且能够吸引用户的注意力,用户应该对广告的内容有一定的选择能力,而不是那些闪耀到晃眼的模式单一的广告。并且由于不同人的博客有着不同风格主题,针对某一风格主题也有着特定的人群。比如CSDN中主要的用户都是计算机领域相关的人员,而关注刘慈欣博客的人大多是科幻小说的爱好者。对于不同风格主题的博客应该投入不同类型的广告,从另一个角度来说,采用某些技术可以记录人们在浏览互联网时所关注的信息,在这些信息中选择出一些具有代表性的产品在特定用户浏览博客时以图片连接的形式呈现在其面前也是一种被广泛使用并且十分有效的方式。

对于另一种盈利方式,也有着十分广泛的市场,比如腾讯空间中有有少量的比较死板的主题和皮肤。而腾讯空间的主要使用者又是喜欢追求个性的年轻人,而在腾讯空间的商城中有着十分丰富并且符合年轻人喜好的各种付费产品,并且其又推出了各种钻来以优惠为吸引人的方式让用户对其产生长期的依赖,使为其投入一定的金钱成为交水电费一样的生活习惯,从而为产品带来长期稳定的用户群体。并且通过收取一定的费用可以提供一些特权服务(会员),比如更低廉甚至免费的个性化装饰,在更大限度上放宽带宽的限制,提供去除广告的功能,使得浏览更加简洁和流畅,并且可以扩展一些受限的功能(好友数量的限制,图片最大数量的限制等)。并且将其付费方式与时下迅猛发展的新付费方式所结合,让客户足不出户轻点鼠标或者发几条短信就能购买到所要的功能和产品。在成本方面需要考虑的有开发的成本和运行与维护的成本。

开发成本是指在开发产品时所花费的人力,物力和时间。人力成本与开发人员的数量,层次有关,对于大型的高端的开发需要大量高端人才,其成人力本无疑将是巨大的。而对与小的点单的产品开发则往往只需要个人便能独立完成,其目的又多以兴趣爱好,验证自身技术和较小的盈利为目的,这种开发的成本相对来说是很低的。在物力投入和花费方面也与所开发的产品是密切相关的,对于所

要开发的产品应该事先进行评估,确定其开发中所需要投入的各种成本,并且对今后的运行维护做出比较准确的预期。从而避免出现系统自身问题导致耗费大量人力物力来解决后期运行中的问题。

而我们所开发的这套博客网站系统正式基于提高用户使用效率,节省工作时间,简化操作管理的理念来设计的。并且本系统是个人独立设计开发的,并不需要投入大量经费,系统今后的运行和维护也相当简便,无需投入额外的资金,其成本不会出现超于预期的可能。并且在其过程中也可以提高个人的开发水平,因此在经济上是完全可行的。在系统运行的过程中将定期进行系统备份,在遇到突发事件时只需将备份的系统在另外一台具有所需环境的计算机上即可还原,并且重新运行,系统的可靠性高,风险小。3.1.3操作可行性

在当今这个信息技术迅猛进步的时代,信息技术早已深入到社会中的每个地方,它为人们带来来便利的工作方式,优越的工作环境,因此也对人们的工作效率和操作水平提出了更高要求。在这种发展趋势下,减少费时费力的人工操作,通过各种智能化软件来提高工作效率和工作精度就成为了一个很重要的方向。

对于用户来说一个可以轻而易举上手的产品显然比那些要读完冗长的说明书甚至进行一定的学习培训才能操作的产品受欢迎的多。一个成功的博客应该是

很友好的,对于任何一个熟悉上网方式的人都应该能够无障碍的使用它。同时它的功能又应该是全面的,用户可以用符合日常习惯的方式来实现所要达到的目的。对于一些新颖的功能,应该通过给予用户一些奖励的方式使用户对其产生兴趣,并且试用它。若是使用起来有一定的难度则应该给予一定的说明和引导。比如腾讯微博在更新出新功能时会通过种种奖励和优惠积极像广大用户推广,并且用很详细的方式来一步步引导用户学会使用新功能。

本博客网站系统的用户平台同时面向游客、普通注册用户和管理员,其界面简洁,采用web的可视化界面,普通注册用户只需要轻点鼠标和键盘就可以使用博客;而数据的输入和维护均由博客的管理者来完成。正是由于这些特性,本博客系统十分适于新手使用,无须学习复杂的教程便可以获得好的体验。故,本博客网站系统在操作上是可行的。

3.2 功能需求

用户管理模块:注册(游客用户)、登入(注册用户)、修改资料(注册用户)系统管理模块:用户管理(管理员)

文章管理模块:添加(注册用户)、删除(注册用户,管理员)

留言管理模块:张贴评论(游客用户,已注册用户,管理员)、删除(注册用户,管理员)

相册管理模块:添加相片(注册用户)、删除(注册用户,管理员)音乐管理模块:添加音乐(注册用户)、修改(注册用户)、查询(注册用户)、删除(注册用户,管理员)

3.3 性能需求

数据精度要求:数据需要遵循严格的格式,否则系统将不会予以响应。时间要求:运行环境方面的连接响应时间应小于等于10秒,对大于180秒没进行任何操作的用户其访问认证将失效,需要重新进行登入。

数据管理要求:即数据库系统管理,其包括:

注册信息表包含用户名,密码,住址,爱好,职业等基本信息。并且要求数据库的自动增长比例为2%。

日志记录:包含标题,时间,内容,作者等信息。留言管理:包含回复人,内容,时间等信息。相册管理:包含评论人,内容,时间等信息。

控制:用户在进入博客首页面后,可以以三种身对博客网站系统进行浏览——游客身份,普通用户身份(需要通过登录)和管理员身份(需要以特定的帐号来登录),在访问over后关闭所浏览的网页的同时也就退出了博客,3.4系统用例

根据以上需求分析,总结出个本人博客系统的基本功能需求。如图3-1所示: 15

日志管理<><><><>图片管理留言管理相册管理<><>用户管理系统管理员音乐管理用户注册<><><><><>浏览日志用户登陆<>浏览相册文章评论个人档前台用户图3-1 系统总用例图

基于Asp.Net的个人博客网站的设计与实现

第四章 系统概要设计

4.1概述

本博客系统采用B/S结构,即Browser/Server或浏览器/服务器结构;建立在两种Web服务模式之上,本模型结构适用于Internet环境下。用户只需要连上Internet,便能够在任何时间、任何地点使用本系统,本网站工作的原理如4-1:

执行过程请求客户端回发验证Web服务器传送数据库检索 图4-1 系统工作原理图

4.2系统结构

本博客网站系统基于B/S架构,分为用户前台和管理者后台这两大模块。

前台的关键任务是:查看日志、查看相册、大家评论、音乐背景、用户登录、用户资料等功能模块。

后台的主要功能为:日志管理、相册管理、图片管理、留言管理等功能模块。本系统的功能部分结构如图4-2所示: 基于Asp.Net的个人博客网站的设计与实现

系系系系系系系系系系系系系系系系系系系日背日日发志留相添上景用日相历志布类言册加传音户志册浏留管日别管管相图乐登查浏览言理志管理理册片设录看览文板理置章图4-2系统功能结构图

从上图可以看出本个人博客系统由前台和后台这两个功能模块组成。前台功能模块包括:

用户登录:用户通过自己所注册的账号和密码登录成功后便能进入属于自己的博客管理界面。

日志查看:日志查看可以分为对日志的列表进行查看和对日志的内容进行查看,并且日志可以根据类别进行浏览。

相册浏览:相册浏览包含首页最新相册和相册列表这两项,点击相册的类别便可以看到该类别的所有图片。

留言板:本博客系统具有留言板功能,游客和用户能均可以到留言板发表留言。

用户资料:对于登录之后的的用户来说,在这里能够修改自己的个人信息,对于么有登录的用户则只能浏览个人信息。

后台功能模块包括:

日志管理:即发布日志,更改日志,deleted日志,并可以对日志类别进行区分和修改。

留言管理:博主可以在留言板以博主身份回复前台的留言信息。相册管理:可以进行添加相册,修改相册,删除相册等操作。图片上传:用户可以选择指定的相册,将上传图片至该相册中。音乐设置:博主能够在后台对博客的背景音乐进行上传、删除等操作。

4.3 数据库设计 个人档基于Asp.Net的个人博客网站的设计与实现

4.3.1 数据库设计概述

数据库设计是使用现有的数据库管理系统,针对特定应用的简历数据库模型,建立数据库来满足它所要实际使用的环境。因此,它可以快捷的采集数据,进行内存操作和管理数据,实现使用者对信息需求和处理的要求。从另一个角度来看,数据库的设计是在现实世界的数据库管理系统的紧密结合,有机的过程,结合相应的。

在数据库的设计过程之中,我们将会遇到的关键难题会是:

懂得计算机与数据库的人往往缺乏应用业务的只是和实际经验。而熟悉应用业务的人一般又不懂得计算机和数据库。两者兼具的人很少。

在项目的一开始旺旺不能明确应用业务的数据库系统目标。能普遍适用的工具与设计方法几乎不存在。

用户的要求一般情况下并非在一开始就是鲜明的,而是在设计的过程中不断的提出新要求,甚至在数据库完全建立之后还会要求修改数据库或者增加新的功能。应用业务系统成千上万,难以找到一种广泛试用于各种应用业务的工具和方法,隐刺增加里研究数据库自动生成工具的难度。由此可见,研制一种适合所有应用业务的全自动的数据库生成工具是不可能的。

要设计数据库首先要明确系统目标。这样可以确保开发工作得以顺利实施,提高工作效率,保证数据模型的准确和完整。数据库设计的终极目标是数据库必须满足使用者对数据的存储和处理的要求。一个成功的数据库应该是功能强大的。能够准确的显示工作数据。使用方便,易于维护。在系统实际投入使用的时候,对于用户的请求能够在合理的时间内给与响应。方便在投入使用之后根据实际情况对数据库结构进行再次的改进。便于对数据的查找和编辑。维护数据库的工作较少。具有可靠的安全措施可以保证数据的安全。冗余的数据尽可能少。便于数据的备份和恢复。数据库的结构对于最后使用的用户应当是可视化的。

新奥尔良方法。这种方法是一种比成熟的数据库设计的办法。其主要包括对需求进行分析,之后根据需求建立概念结构,以之前的工作为基础简历逻辑结构,最后设计系统的物理结构等肆大部分。这种方法注重于数据库的结构设计,而不太考虑数据库的行为设计。

数据库设计方法——E-R模型是以第三范式作为理论基础的,抽象的语言规范世纪的方法,设计方法的基础上,使用在数据库设计的各个步骤中的的实际的技术和方法。

数据库设计的实现方法,从根本上来讲依旧是靠手工分析来设计的,他的基本思想是通过不断的反复带入和不断的精益求精来实现的。

在数据库设计过程中,首先要做的是需求分析,在这个部分要做的是对我们

所生活的世界中要实现的目标进行详细调查,通过之前的调查中所得到的有用的信息,来确定系统的新功能,基本数据和处理方法收集支持系统目标。需求分析是基于用户进行的调查,通过分析逐渐清晰的用户需求的系统,包括数据本身和以这些数据为根本的各种处理工作。

用户调查,获取信息的用户需求,其中的加工要求,安全性和完整性的要求和其它要求。在需求分析,通过顶部,逐步分解的方法分析系统,系统可以抽象为数据流程图的形式,在这个阶段,没有确定具体的数据存储。处理二字将系统要求的的功能在数据流图中抽象的表达出来,整个函数对系统的要求能够被逐步以多个子系统来实现主系统的功能要求,通过一步步用多个子系统等价代替的方法,将系统工作过程逐步划分为可以清楚描述的N个子系统。

数据库的需求分析是数据库最重要也是最困难最麻烦的一步,如果这一步做得不好,那么后续的设计花费再多的时间,再怎么优化也无法从根本上改变之前的问题。

在明确了数据库的需求之后要做的就是数据库的结构设计。4.3.2 数据库概念设计

设计数据库的结构,需要以需求分析的结果作为基础,一步步归纳总结出数据库的概念,逻辑,物理结构。结构概念设计的概念模型,形成数据库层,语义层模型。如ER模型的逻辑结构设计的模式和模式的数据库,形成层结构模型,如基本表,视图。物理结构设计的结果在设计结果的形成模式数据库,使用的话,是属于的描述,如数据库文件或目录,索引。

数据库结构设计的第一步要做是确立概念性的结构,其顶部的信息结构的设计,会要求根据对使用者需求的研究出的结果,抽象出系统的信息结构,也就是概念模型,建立数据库系统的结构是最重要的工作,独立的逻辑结构设计,数据库管理系统。

数据库概念结构需要具有丰富的语义表达能力。表达各种用户的不同需求,包括各种现实世界中的物体的描述,它们之间的连接,可满足用户数据处理的需求。容易沟通和理解。结构的概念是设计师和用户之间沟通的主要工具。容易修改。当这个系统所使用的地方和应用中遇到的要求发生变化时,可以很容易地修改的概念结构,以反映这些变化。轻松转换模型的各种数据,很容易推导出的DBMS的逻辑模型。

其设计的方法是采用E-R图,其过程可以分为三步:

(一)在E-R模型的设计

设计内容包括当地的ER模型确定本地的ER模型范围内,定义实体,关系和它们的属性。主要核心是实际的现实情况是,加工,共同的特征提取,忽略不

重要的细节,而将这些需要的特征描述为概念。抽象的方法有聚蔟,概括,分类这三种。

(二)设计整体E-R模型

将所有部分E-R模型图融合为一个整体E-R图,即整体E-R模型。其方法主要有一次性将所有E-R模型有机融合在一起的方式和逐步累加的方式。在把部分E-R的模型集成为一个整体的E-R模型的过程中,消除各个部分E-R模型合并时所产生的冲突是其关键所在。这些矛盾一般分为三种情况:实体的属性互相矛盾,即属性的范围矛盾和属性的取值单位矛盾。命名的矛盾,是指同一个名字具有不同的意义与不同的名字有着相同意义这两种情况。对于属性和命明矛盾一般采用讨论协商的方法进行结局。另外,结构的矛盾,它是指多个的属性来对应有且仅有的一个对象,或者多个对象却共同使用着一个属性,不一样的的排列顺序的E-R模型并非是完全一样的。对于前者可以通过把属性转换为实体或者将实体转换为属性的方法,使同样的对象具有相同的抽象。后一种解决方案的方法是使该实体的属性和ER模型的各部分的属性,然后在属性,以调整适当的。

(三)优化整体E-R模型

通过对相关实体的合并减少数量的实体,通常具有相同的原代码实体合并。此外,如果多个实体之间存在1:1的关联,那么你可以考虑把他们整合成一个实体,同时适当把多余的属性和多余的链路消除掉。

通过对现实世界信息的抽象,建立概念模型,可以有效提高数据库设计的效率。根据以前所学的知识,可以依靠系统E-R图来描述概念模型,并且易于该图所体现的系统中各个实体间关系来建立数据库。相关的内容如图4-3所示:

编号相册名称1管理N相册相册封面登录账号添加时间编号管理员信息11管理N登录账号登录密码登录密码管理编号用户信息出生年月N电子邮件标题描述爱好星座编号日志信息内容类别发布时间

图4-3系统E-R图

4.3.3 数据库实体设计

在概念设计完成的是进行E-R模型转化为一个特定的数据库管理系统在支持数据模型的组织,这是在一定条件下所限定的数据库管理系统。它能够对数据库中所包括的信息的逻辑结构进行处理。

数据库管理系统的具体数据支持的组织层形式有四种。层次的形式,网络的形式,关系的形式和面向对象的形式。

在本设计中将用到的是E-R模型想关系模型的转换。

其包含有两个步骤:

(一)E-R模型向关系模型的转换

从ER模型转换关系模型中面对的问题是如何将实体和关系模型之间的关系,如何确定主代码和属性模型之间的关系。

(二)数据模型的优化

逻辑结构的设计结果并非是唯一的,因此应该根据实际需求对逻辑数据模型进行适当的调整与修改,即数据模型的优化。

在完成了以上工作之后,便到了物理结构设计的阶段。物理结构依靠数据库管理系统为基础建立存储结构,是把已经确定的数据库逻辑结构性能尽可能提高的方法和技术。数据访问,访问和存储分配设计合理高效的数据的路径,数据库结构和可行的。

其一般方法为确定数据库的物理结构,用于选择适合对数据库进行物理访问的方法和数据库信息储存的结构;对物理结构的时间效率和空间效率做出评价。

相册信息实体,相册包含编号;相册的名字;相册的封面图;建立的时间这四个属性,具体如图4-4:

相册名称编号相册相册封面添加时间

图4-4相册信息实体图

用户信息包含有编号;登录帐号;登录密码;出生年月;电子邮件地址;星

座;爱好;个人描述等属性,如图4-5:

登录账号登录密码编号用户信息出生年月电子邮件描述爱好星座

图4-5用户信息实体图

日志信息包含编号;标题;具体信息;类别;发布时间等属性,如图4-6:

编号日志信息标题内容类别发布时间

图4-6日志信息实体图

日志类别包含编号和类别名称这两个属性,如图4-7:

编号日志类别类别名称 图4-7日志类别信息实体图

留言信息包含有编号;留言人;留言时间;留言内容;回复内容等属性,如图4-8: 23 基于Asp.Net的个人博客网站的设计与实现

编号留言信息留言人回复内容留言内容留言时间

图4-8 留言信息实体图

图片信息包含有编号;图片名称;图片描述;所属相册;上传时间;图片地址等属性,如图4-9:

编号图片信息图片地址上传时间图片描述图片名称所属相册

图4-9 图片信息实体图

4.3.4 数据库设计表

在完成了数据库的结构设计和行为设计,并且编写了实现用户需求的应用程序之后要做的边上利用DBMS提供的功能实现之前所做的设计,并且选择尽可能好的方法。然后夹在数据并且调试和运行应用程序。

下面将介绍本博客系统所需要的数据库中各个表的详细信息。

Album信息表包含编号(ID),相册名称(AlbumName),相册封面(AlbumPic),添加时间(addTime)。在这些字段中编号是该表的主键。如表4-1所示:

表4-1 相册信息表

字段名 ID AlbumName AlbumPic addTime 数据类型 int nvarchar nvarchar datetime

长 度 4 50 50 8

主 键 是

否 否 否

述 编号 相册名称 相册封面 添加时间

Music信息表包含编号(id),音乐标题(MusicPath)。其中编号作为该表的主键。如表4-2所示:

表4-2 背景音乐信息表

字段名 id MusicPath 数据类型 int int

长 度 4 50

主 键 是 否

述 编号 标题

Picture信息表包含编号(id),图片地址(imagePath),相册编号(AlbumId),相册名称(AlbumName),图片描述(ds)。在这些字段中编号是该表的主键。依表4-3所示:

表4-3 相册内容信息表

字段名 id imagePath AlbumId AlbumName ds 数据类型 int nvarchar int nvarchar text

长 度 4 50 4 50 16

主 键 是 否 否 否 否

述 编号 图片地址 相册编号 相册名称 图片描述

Article信息表包含编号(id),日志标题(Title),日志内容(Contents),发布时间(addtime)。在这些字段中编号是该表的主键。如表4-4所示:

表4-4 日志信息表

字段名 id Title Contents addtime 数据类型 int nvarchar text datetime

长 度 4 50 16 8

主 键 是 否 否 否

述 编号 日志标题 日志内容 发布时间

UserInfo信息表包含编号(id),帐号(Username),用户密码(Userpwd),用户生日(BirDay),电子邮件(Emal),星座(httpweb),爱好(address),注册时间(addtime),用户描述(ds)。在这些字段中编号是该表的主键。如表4-5所示:

基于Asp.Net的个人博客网站的设计与实现

表4-5 用户信息表

字段名 id Username Userpwd BirDay Emal httpweb address addtime ds 数据类型 int nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar datetime text

长 度 4 50 50 50 50 50 50 8 16

主 键 是 否 否 否 否 否 否 否 否

述 编号 账号 用户密码 用户生日 电子邮件 星座 爱好 注册时间 用户描述

userliuyanban信息表包含编号(id),发布时间(Date),留言姓名(Name),回复内容(Reply),留言内容(Message)。其中编号作为该表的主键。如表4-6所示:

表4-6 留言信息表

字段名 id Date Name Reply Message 数据类型 int nvarchar nvarchar Text Text

长 度 4 50 50 16 16

主 键 是 否 否 否 否

述 编号 发布时间 留言姓名 回复内容 留言内容

ArticleType信息表包含编号(id),类别名称(Name)。其中编号作为该表的主键。如表4-7所示:

表4-7 日志类别信息表

字段名 id Name 数据类型 int nvarchar

长 度 4 50

主 键 是 否

述 编号 类别名称 基于Asp.Net的个人博客网站的设计与实现

第五章 系统详细设计

通过将ASP.NET技术与SQL 2005数据库系统的有机结合,通过科学的计划方法实现了个人博客网站的建设工作。在这次设计的过程中,运用了很多在课本上学过的理论知识,但是经过实际操作发现仅靠这些并不足以实现目标。在开发的过程中,我认识到好的开发方法起着至关重要的作用,只有先做好前期的工作才能少走弯路,高效的达成目标。由于自己的实际经验不足,在过程中出现不少考虑不周的地方,导致在后期的测试中花费了较多的时间,因此导致比较仓促,所设计的界面比较简单,主要精力投入在功能的开发和调试中。尽管如此,系统依旧具有完整的功能和比较友好的界面。

5.1用户登录模块的实现

实现用户登录的过程由以下几个部分组成,第一步是对用户所输入的信息进行保存,之后利用ASP.NET程序在数据库中检索是否存在用户输入的信息,如果存在则返回正确的结果,否则就返回错误的结果。若返回正确结果,则显示登陆成功,否则将显示登录失败,请重新登录。在这之中将使用验证码技术防止短时间内重复提交登录请求。在这之中使用了GetDataReader方法,CheckCode验证。

登录页面的页面效果如图5-1所示:

图5-1 用户登陆 基于Asp.Net的个人博客网站的设计与实现

用户登录过程的主要代码如下:

protected void Button2_Click(object sender, EventArgs e)

{

string sno = TextBox1.Text.Trim();

string pass = TextBox2.Text.Trim();

SqlDataReader dr = data.GetDataReader(“select * from UserInfo where txtUsername='” + sno + “' and txtUserpwd='”+pass+“'”);

if(dr.Read())

{

if(string.Compare(Session[“CheckCode”].ToString(), TextBox3.Text, true)!= 0)//判断所输入的验证码与系统随机生成的验证码是否相同

{

Label2.Text = “验证码错误。”;

return;

}

else

{

Session[“User”] = dr[“txtUsername”].ToString();

Session[“UserName”] = TextBox1.Text.Trim();

Response.Redirect(“loading.aspx”);

}//将用户名和密码与数据库中的信息进行比对

}

else

{

Response.Write(“”);

} } 5.2留言板模块的实现

本博客网站为用户提供了留言板功能,所用用户均可在留言板进行留言,博客拥有这在后台可以查看和删除留言信息。

留言的页面效果如图5-2所示:

图5-2 用户留言

留言的主要代码如下:

protected void Page_Load(object sender, EventArgs e)

{

if(!IsPostBack)//页面首次加载

{

rptMR.DataSource = data.GetDataReader(“select * from Message”);

rptMR.DataBind();

}

}

protected void btSubmit_Click(object sender, EventArgs e)

{

string sql = “insert into [Message](Name,Message)values('” + tbName.Text + “','” + TextBox1.Text + “')”;

data.RunSql(sql);

Alert.AlertAndRedirect(“感谢您的留言”, “Message.aspx”);

} 下面是留言板的后台部分,博客拥有者在后台可以进行查看和删除留言的操作。

后台管理留言的效果如图5-3所示:

图5-3 管理留言

5.3相册模块的实现

相册模块主要是对相册中信息的展示,博客的拥有者可以进行添加相册、编辑相册、删除相册等操作。

相册展示列表的实现效果如图5-4所示:

图5-4 相册信息列表

主要的代码如下: private void GetListPage()

{

try

{

DataSet ds = new DataSet();

ds = data.GetDs(“select * from Album ”, “Album”);

PagedDataSource objPds = new PagedDataSource();

objPds.DataSource = ds.Tables[0].DefaultView;

objPds.AllowPaging = true;

objPds.PageSize = 6;

int CurPage;

if(Request.QueryString[“Page”]!= null)

CurPage = Convert.ToInt32(Request.QueryString[“Page”]);

else

CurPage = 1;

objPds.CurrentPageIndex = CurPage1);

}

if(!objPds.IsLastPage)

{

hylastpage.NavigateUrl = Request.CurrentExecutionFilePath + “?Page=” + objPds.PageCount;

lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + “?Page=” + Convert.ToString(CurPage + 1);

}

DataList3.DataSource = objPds;

DataList3.DataBind();

}

catch

{

}

}

博客管理者在后台凭借相册相关介绍添加的部分可以实现对相册加入多重介绍,包括相册的名字,图片的注释。添加相册信息实现的效果如图5-5所示:

图5-5 添加相册信息

主要代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

string res;

upload up = new upload();

res = up.Up(file1, “../UpLoadImage/”);

this.Label1.Visible = true;

this.Label1.Text = up.Resup[Convert.ToInt32(res)];

this.pic.Text = up.s;

Image1.ImageUrl = “../UpLoadImage/” + pic.Text;

}

protected void btnAdd_Click(object sender, EventArgs e)

{

string AlbumName = this.txtAlbumName.Text;

string AlbumPic = pic.Text;

data.RunSql(“insert into Album(AlbumName,AlbumPic)values('”+AlbumName+“','”+AlbumPic+“')”);

Alert.AlertAndRedirect(“添加成功”, “MangerAlbum.aspx”);

} 首先我们将采用一个图片上传类来对图片的上传进行操作,用户先获取所要

上传图片的路径信息,之后窝们将都用日期时间对图片进行重命名,从而避免由于图片重名而导致无法上传的问题,然后采用Server.MapPath方法取得图片将要存放的文件夹路径,将图片上传到该文件夹中,最后将图片的相对路径信息保存到数据库中。

5.4图片管理模块的实现

图片管理模块主要包括前台图片信息的展示,后台对图片信息的添加和管理以及上传图片等功能模块。

图片展示效果如图5-6所示:

图5-6 图片信息展示

主要实现代码如下:

private void GetListPage()

{

try

{

DataSet ds = new DataSet();

ds = data.GetDs(“select * from Pic ”, “Pic”);

PagedDataSource objPds = new PagedDataSource();

objPds.DataSource = ds.Tables[0].DefaultView;

objPds.AllowPaging = true;

objPds.PageSize = 6;

int CurPage;

if(Request.QueryString[“Page”]!= null)

CurPage = Convert.ToInt32(Request.QueryString[“Page”]);

else

CurPage = 1;

objPds.CurrentPageIndex = CurPage1);

}

if(!objPds.IsLastPage)

{

hylastpage.NavigateUrl = Request.CurrentExecutionFilePath + “?Page=” + objPds.PageCount;

lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + “?Page=” + Convert.ToString(CurPage + 1);

}

DataList3.DataSource = objPds;

DataList3.DataBind();

}

catch

{

}

} 在后台可以实现图片信息的添加、修改和上传图片等功能的操作。上传图片界面运行效果如图5-7所示:

图5-7 上传图片

主要实现代码如下:

protected void Button1_Click(object sender, EventArgs e){

string res;

upload up = new upload();

res = up.Up(file1, “../UpLoadImage/”);

this.Label1.Visible = true;

this.Label1.Text = up.Resup[Convert.ToInt32(res)];

this.pic.Text = up.s;

Image1.ImageUrl = “../UpLoadImage/” + pic.Text;

}

protected void btnAdd_Click(object sender, EventArgs e)

{

string imagePath = pic.Text;

int AlbumId = int.Parse(DropDownList1.SelectedValue);

string AlbumName = DropDownList1.SelectedItem.Text;

string ds = this.txtds.Text;

data.RunSql(“insert into Pic(imagePath,AlbumId,AlbumName,ds)values('”+imagePath+“',”+AlbumId+“,'”+AlbumName+“','”+ds+“')”);

Alert.AlertAndRedirect(“添加成功继续上传”, “UpLoadPic.aspx”);}

5.5背景音乐的实现

背景音乐管理模块包含两个方面——在后台添加背景音乐的功能和在前台读取背景音乐并且播放的功能。

博主进入后台后可以电击背景音乐设置按钮选定背景音乐,然后上传到数据库中,这样便成功实现了设置背景音乐。

背景音乐设置效果如图5-8所示:

图5-8 背景音乐设置

主要实现代码如下:

protected void Button3_Click(object sender, EventArgs e)

{

string res;

upload up = new upload();

res = up.Up(file1, “../UserMusic/”);

this.Label1.Visible = true;

this.Label1.Text = up.Resup[Convert.ToInt32(res)];

this.pic.Text = up.s;

}

protected void Button4_Click(object sender, EventArgs e)

{

string sql = “update Music set MusicPath='” + pic.Text + “' ”;

data.RunSql(sql);//将音乐和说明信息上传数据库

Alert.AlertAndRedirect(“上传背景音乐成功”, “SetMusic.aspx”);

} 这样数据库中便以存储了背景音乐的路径和名称,在前台登陆后便可以采用微软自带的音乐播放器来自动加载和播放背景音乐。

背景音乐的主要代码如下:

width=“260”>

“>

5.6日历模块的实现

为了便与检索文章,我们在博客中加入了日历模块,用户可以点击日历模块上的日期便能够直接查询该日期当天所发布的所有日志信息。其原理是在选择日期后系统会把所选择的日期值传到文章页面,通过检索将结果显示到页面中。

日历效果如图5-9所示:

图5-9 日历效果

主要实现代码如下:

protected void Calendar1_SelectionChanged(object sender, EventArgs e)

{

Response.Redirect(”CalendarArticleList.aspx?addtime=“ + Calendar1.SelectedDate.ToShortDateString());}

DataSet ds = new DataSet();

string sql = ”select * from Article where Addtime = '“ + Request.QueryString[”addtime“].ToString()+ ”'“;

ds = data.GetDs(sql, ”Article");经过一段时间的实际测试证明,该博客网站系统有着较高的稳定性,其操作简单,功能齐全,所采用的技术成熟并且有很好的发展预期,故本设计基本达到预期。

由于自身的实践水平不足,导致在后期调试中花费较多时间,因而时间比较仓促,很多地方不够完善。比如其网站界面不够美观,对于一个网站来说,网站的页面是用户第一个看到的方面,其给用户的印象对整个网站来说是至关重要的。

对于一个访问量较大的网站来说缓存技术的应用也很重要,当网速较慢或者同时在线用户数量很大的时候采用缓存技术可以有效的保证用户的体验。并且本系统由于没有采用Ajax技术,导致在后台添加动态信息的时候需要刷新,这也影响到了用户的体验。凭借对ASP.NET有效的发挥,以VS2008与SQL2005为平台进行开发。从多方面说明了基于DotNet的个人博客网站的设计与实现的可行性。本博客系统的的搜索功能比较简单,仅能够按照日志的类别和日期来搜索,在本次设计的编程阶段,由于之前所写过的代码量不多,编程经验不足,导致容易出现问题。比如命名空间的错误,语法结构的错误,支持的浏览器的错误等问题。在很多细节的地方出现的错误往往导致整个程序无法运行,因此养成良好的编程习惯是至关重要的。只有通过不断的实践才能提高实际操作的水平,只有不断学习成功的案例才能发现自身的不知。尽管有很多不尽如人意的地方,但是总体来说,所预期的功能基本达到了实现,设计之初的目标已经达成。40 基于Asp.Net的个人博客网站的设计与实现

第六章 总结

经过近三个月的努力,终于完成了这项程序设计及论文的撰写。设计成品能够符合我的设计初衷,即为特定年龄层用户以及博客初次使用者编写一款简单方便的个人博客系统。

本系统所实现的具体目标如下:

1、界面简洁、操作方便:使用完全控件式的页面布局,上用户在使用博客时更加简单方便;用户在使用博客的一些功能时只需按流程点击鼠标即可,不存在复杂的操作功能,实现博客易操作的目标;系统风格朴实简单,避免因花俏缭乱给人以不实之感。

2、即时可见:对博客进行的操作,包括发布、修改、删除等,一旦操作成功将立该在系统的相应位置出现,实现系统消息的提交与发表之间的零时差性。

3、功能完善:本系统包含一般博客系统所具备的三个模块:一般用户浏览、注册用户操作、管理员管理。不仅具备每个博客都有的写日志、上传照片、回复留言、修改信息等模块,甚至后台管理员可以对管理系统注册用户,对用户发布的日志、照片、视频进行审核,违反发布原则的可以立刻进行删除。

4、动态管理:能够动态的完成对数据库作息的存储、搜索、修改等操作,实现对系统的动态管理。

在查阅了大量的书籍资料后,将书本上的理论知识同我制定的基本目标与功能想结合,设计出一套理想的实施方案。这样不但将以前所学过的知识进行了巩固,而且为今后从事软件开发工作做好准备。

本系统的界面采用简洁清爽的风格,系统功能让人一目了然,操作简单易上手。在系统功能实现方面主要使用ASP.NET、SQL Server 2005 数据库等开发技术。在设计早期由于对一些知识有些欠缺,在老师的帮助下参考有关书籍、解答相关疑问、纠正设计错误等,使我能够顺利的完成程序的设计。

经过这几个月的学习,我现在已经基本掌握了ASP.NET、SQL Server 2005、C#等网站开发技术,完成了从入门到运用的阶段跨越。除此之外,在程序设计过程中我还学会了做事要态度严谨、心思细腻,不然在过程中出现任何一个微小的错误都可能造成最后失败的结果。

由于时间和能力有所限,本系统必然不是完美的,程序和论文都存在不足之处。我今后将会更加努力学习软件开发方面的知识,争取将这个设计尽可能的改进完善。

参考文献

[1]Roger S.Pressman.软件工程实践者的研究方法(英文版第4版)[M].机械工业出版社.1999.[2]American Microsoft.Microsoft SQL Server 2000 数据库编程(第一版)[M].北京:希望电子出版社.2001.[3]李海龙.SQL Server 2000 图解教程(第一版)[M].北京:希望电子出版社.2001.[4]李香敏.SQL Server 2000 编程员指南(第一版)[M]..北京:希望电子出版社.2000.[5]Michael Lee Rick Sawtell.MCSE:SQL Server Administration 考试指南(英文原版)[M].电子工业出版社.1999.[6]JD UIlman and JWidom.A first course in databasr systems[M].北京:清华大学出版社.1997.[7]Andrew.M.Fedorchek.SQL Server核心技术精解.中国水利水电出版社.2000.[8]Steve Adrien Deluca.SQL Server 7性能优化[M].机械工业出版社.2000.[9]范盛荣.Visual C#2008控件使用范例详解[M].北京:清华大学出版社.2009.[10]黄国平.使用开发参考大全 C#[M].电子工业出版社.2008.[11]沈士根.Web程序设计——ASP.NET实用网站开发[M].北京:清华大学出版社.2009.[12]刘乃丽.精通ASP.NET 2.0+SQL Sever 2000 项目开发[M].北京:人民邮电出版社.2007.[13]Hewardt.Advanced dot NET Debugging.[M].Addison-Wesley.2010.[14]郭兴峰.ASP.NET 动态网站开发基础教程(C#篇)[M].清华大学出版社.2006 [15]陈惠贞.陈俊荣.ASP.NET程序设计[M].机械工业出版社.2006.42

致谢

在毕业设计期间,老师们认真负责的工作态度、客观严谨的治学精神、深厚扎实的理论知识和为人师表的道德风范都给我留下了深刻的印象,这些都是值得我用一生学习的宝贵财富。

在本次毕业设计的过程中,我巩固了大学中所学的理论知识,提高了时间能力,通过XX老师的悉心指导我成功的将自己所学的理论知识同实际需要有机结合起来,在完成设计的过程中我独立调研,全面分析,系统的灵活的运用理论知识解决了很多实际问题,并且在这个过程中发现自身的不足,从而使自己的整体理论水平进一步提高。与此同时,老师们严谨的治学精神,认真的工作态度也深深的感染了我,我将在今后的工作学习中以此为楷模不断进取。

在此,我向给予了我巨大帮助的各位老师们和同学们致以深深的感谢与敬意,在你们的帮助下我才能取得今天的成绩。与此同时,谨向审稿的老师们致以衷心的感谢!

第五篇:博客网站设计制作策划书

博客网站设计制作策划书

一、前期调研分析:

1、创建博客网站所遵循的一般原则

(1)系统性原则。创建者要提供设计方案,还应充分了解用户的一些基本情况,并将其需求等要素融入到网站建设方案中。

(2)完整性原则。博客又称为网络日志,是一种大众化的网络载体,它是一种由个人管理、不定期张贴新文章的网站,应该为用户提供完整的信息和服务:网站的基本要素合理、完整;网站的内容丰富、有效;网站的服务和功能适用、方便;网站建设与网站运营维护相衔接、支持。

(3)友好性原则。博客网站的友好性包括以下几个个方面:对用户友好——满足用户需求、获得用户信任;对网络环境友好——适合搜索引擎检索、便于积累网络资源;对经营者友好——网站便于管理维护、能提高工作效率。

(4)简单性原则。在保证网站基本要素完整的前提下,尽可能减少不相关的内容、图片和文件等,使得用户以尽可能少的点击次数和尽可能短的时间里获得需要的信息和服务。

(5)适应性原则。博客网站的功能、内容、服务和表现形式等需要适应不断变化的网络环境,网站应具有连续性和可扩展性。

2、网站建设基本流程规范

(1)制定网站规划方案,包括网站预期目标、状况分析、网站栏目结构、用户行为分析及内容规划、网页模版设计、网站服务器技术、网站运营维护等基本内容;

(2)网站技术开发、网页设计;

(3)网站测试;

(4)网站发布和推广;

(5)网站维护及管理。

(6)网站设计对不同浏览器具有兼容性。

二、网站的功能定位:

1、个人博客网站的基本功能和内容

(1)与互联网络实现无缝链接;

(2)具有信息发布、信息分享和管理功能;

(3)详细的个人介绍;

(4)详细的联系方式;

(5)具有较强的互动性;

(6)相关的联系和服务信息;

(7)在线服务信息;

(8)持续更新的信息;

(9)相关网站链接管理功能;

三、网站技术方案:

(网站设计和制作中所采用的技术)

1.Flash特效功能;

2.使用各种常用行为;

3.调用javaScript;

4.具有一定的动态效果;

5.运用页面布局技术(DIV+CSS);

四、网站内容规划:

我的个人博客网站大体上包括以下内容:我的圈子,我的相册,我的音乐,最新动态,实时互动等模块,各模块简介如下:

1.我的圈子简介:

(1)介绍我和博客创建的同学,把同学加到我的网页中并对每个人做详细的介绍,形成一个同学录一样的子页面,在这里边每个人都可以书写个人的兴趣爱好。

(2)个人简历。首先是详细的自我介绍,然后加上个人简历,以便更多的人了解我。

2.我的相册简介:

因为只要有 QQ号的几乎都有自己的空间所以我可以加个超连接,连接到我的QQ空间、我的相册:

(1)设计个人的相册

(2)朋友的相册

(3)贴图,如果发现好的图片我收集起来可以和广大朋友共同分享。

3.我的音乐简介:

这个模块主要包括:

(1)国内最新流行的音乐

(2)日韩最新流行的音乐

(3)欧美最新流行的音乐。

4.最新动态简介:

(1)网站公告

(2)站内新闻

5.项目互动简介:

(1)请你留言,通过这个模块可以实时交流。

(2)博客论坛。

五、网页设计:

首页的设计简述为了使我的的首页美观生动、吸引人。在我的首页我还添加了形象开头动画页面,在页面上首先映入你眼帘的是美丽的图片在它的上面我添加可透明的FLASH动画,这样会使网页具有动态美感,加上合理的颜色搭配,动听的背景音乐。无论是从视觉、听觉还是感觉上都是一个不错的博客网站。在网站的右上角我还插了滚动字幕,这样可以让浏览着第一时间了解我本站的最新动态。在网页的右下角是我的网站的名称,通过点击它就可以进入我的主页。

1.网站名称:博客组团

2.网站LOGO:

3.网站作用:让别人了解我、认识我。

4.网站规模:因为是个人博客网站,以团队平均每人做1个页面的数值来建立网站,所以规模不大。由6个网页页面组成。

5.网站目标客户:学生及青年朋友。

6.网站特色:我的博客网站受众一般为学生,所以在色彩上和设计风格上追求学生的口味,以校园的学习和生活为主题,在内容上的特色表现为:

(1)内容标准化与个性化。

(2)充分体现互动性。

(3)内容实用性。

(4)多媒体技术专业性。

(5)网站平台延展性。

7.网站的宣传标语:展示自我,分享快乐。

8.网站的风格及配色方案:

网站标准色:整个网站以橙黄色为主基色,配以黑白色,我认为配这种色代表年轻人的激情。

9.网站标准字体:在字体上我主张采用默认字体,因为这种字体无论在那种浏览器上都能正常显示。所以我采用系统默认字体。

10.网站的栏目设计(画出栏目结构图):

主页布局示意图

子页示意图

六、网页测试:

博客网站在本地和服务器有无图片和动画无法显示或链接失效等情况。

七、网站发布与推广:

通过广泛发布邮件信息获得第一注意力,有效加注搜索引擎是注意力推广的必备手段之一。加注搜索引擎既要注意措辞和选择好引擎,也要注意定期跟踪加注效果,并做出合理的修正和补充。通过确定博客形象、宣传标识、口碑传递、公益活动、市场调查、相关单位机构合作等,并且切实履行承诺,在活动中宣传网站形象,获取忠实访客和同行的口碑,是推广网站的重要办法,也是汇聚博客人气的最直接办法。博客社区是博客网站的核心,大力营造博客活动社区,推陈出新的倡导文化建设、开辟博客生活新时尚,吸引用户眼球。

八、博客网站设计日程表:

1.小组分工与合作:

前期策划制作:许青

主页制作:(index.html)郑周勇

子页制作:(如图所示)

(第1张:1.html)许青

(第2张:2.html)冯俊驰

(第3张:3.html)唐辰

(第4张:4.html)潘俊标

(第5张:5.html)张旭光

项目测试报告:许青

项目汇报:郑周勇

2.博客网站策划书:2012年5月26日

博客网站设计与制作:2012年5月28日---6月

博客网站测试:2012年5月31日

博客网站测试报告:2012年6月2日

博客网站项目汇报:2012年6月4日

九、费用明细:

1.网页制作人员工资:

3000(元/月/人)/30(天)*6(人)*8(天)=4800元

2.为了达到最好的视觉效果,现推荐使用10000298 整机租用-酷睿2 Q8400型(推荐)server108服务器,租赁价格为:3200元/季。

下载基于java的博客网站设计与开发毕业论文word格式文档
下载基于java的博客网站设计与开发毕业论文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    网站开发毕业论文(共5则范文)

    SUSAN CLARK: And now, the weekly VOA Special English program of American stories. (MUSIC) Our story today is called "A Municipal Report." It was written by O. H......

    毕业论文开题报告(ASP网站开发)

    开题报告填写要求 1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意......

    JAVA网站开发与优化如何提高代码运行效率

    JAVA网站开发与优化如何提高代码运行效率 可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,网站优化的目的就是让程序用尽可能少的资源完成预定的任务。网站优化通常......

    网站设计毕业论文5篇

    目录 摘 要 .................................................................................................................. 1 Abstract .............................

    网站设计 毕业论文 毕业设计

    (论文设计(论文)题目 JSP动态网站设计 学 院 教 学 系 班 级 姓 名 指导教师 毕业设计) 毕业论文 JSP动态网站设计 摘要 随着Internet技术的发展,人们的日常生活已经离不......

    毕业设计-博客网站

    第一章绪论 1.1 系统开发背景 随着计算机技术的发展和普及,blog得到了极大的发展。Blog,是Weblog的简称。blog是一种新的生活方式、新的工作方式、新的学习方式和交流方式。它......

    JAVA开发个人简历

    个 人 简 历 个人信息 姓名:xxxxxxx性别:x 电话:187-xxx7-xxxx年龄:22 邮箱: lxxxxxxx@xxx.com专业:软件技术应聘职位 Java软件开发工程师 专业技能 熟练掌握CoreJava编程,具有扎实......

    java开发面试题

    1、 编写程序 题目:古典问题:有一对公母猪,从出生后第3个月起每个月都生一对猪,小猪长到第三个月后每个月又生一对猪,假如猪都不死,问每个月的猪总数为多少? 答案: public class li......