基于s2sh框架的博客系统.docx
《基于s2sh框架的博客系统.docx》由会员分享,可在线阅读,更多相关《基于s2sh框架的博客系统.docx(17页珍藏版)》请在冰豆网上搜索。
![基于s2sh框架的博客系统.docx](https://file1.bdocx.com/fileroot1/2023-1/28/760ff1b9-a5b4-4133-ac18-5e7b2dc3d8e0/760ff1b9-a5b4-4133-ac18-5e7b2dc3d8e01.gif)
基于s2sh框架的博客系统
毕业设计(论文)
题目基于s2sh框架的博客系统设计与开发
学号
专业
学院
老师
目录
目录I
摘要III
前言V
第1章绪论
第1节背景
第2节研究的目的与意义
第2章设计简介及设计方案
第1节设计原则
第2节运行架构
第3节设计方案
第3章相关技术介绍
第1节MVC简介
第2节Spring的起源和背景
第3节Hibernate概述
第4章需求分析
第1节注册博友
第2节普通用户
第5章系统架构设计
第1节系统架构说明:
第2节hibernate层
第3节实现service层
第4节MVC层实现
设计结果及对设计结果的分析
全文总结
致谢
摘要
越来越多的网络用户希望能够在网络平台上更多地展现自己的个性,更方便地与他人互动交流,拥有一个自己独立的空间,随着Web2.0时代的到来,一个新的概念出现了——博客。
首先介绍了博客网站设计的意义和背景,主流博客网站的主要功能。
重点介绍了基于J2EE架构的博客网站设计方案,实现的主要功能。
其次,重点讲述了博客网站的业务逻辑层和持久层的设计与开发过程中所涉及的技术及开源框架。
系统如何以Spring框架为核心,向下整合Hibernate进行持久层访问,向上整合Struts按清晰的MVC模式控制,怎样划分应用的层次。
简述了页面的请求的分发及流程。
最后对BLOG网站开发中所碰到的一些问题,并针对这些问题提出一些解决方案,最后对系统性能作出一些简要评估,阐述了一些个人想法。
前言
本文介绍了基于轻量级J2EE开发博客网站。
同时利用Spring、Struts、Hibernate、Ajax等框架整合开发。
本文主要分为七章。
第一章主要介绍了进行博客网站的背景及意义。
第二章对博客网站设计方案做了简要介绍。
第三章介绍了博客网站的需求分析。
第四章详细介绍了系统的架构设计,并详细讲述了通过Spring框架,向下整合Hibernate进行持久层访问,利用DAO模式隔离业务逻辑层与具体持久层,向上整合Struts按清晰的MVC模式构建系统。
第五章简单讲述了系统设计时遇到的问题及解决方案,另外对系统的性能作了一个简要的评论及设计结果和设计结果分析。
第六章对全文所使用的方法、结果以及目的和意义做了全面的总结,展望java技术在Web上的一些应用。
第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[6]。
该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下:
1.服务器端操作系统:
Windows7操作系统;
2.数据库:
MySQL7.0.0版本以上;
3.Web服务器:
Tomcat6.0及以上版本,配合MVC设计模式及Hibernate开发架构;
4.客户端运行环境:
能运行IE6以上浏览器的操作系统;
5.客户端运行工具:
目前的系统采用浏览器作为客户端。
第3节设计方案
为了在更短的时间内实现博客网站,我们采用J2EE架构。
集成开发环境我采用对于插件即插即用的MyEclipse,JSP运行环境我们采用Tomcat应用服务器,数据库管理系统我们采用的是MYSQL,博客网站主要实现注册用户可以在服务器上开辟自己的空间,也可以发布消息,添加留言.
本系统采用的是经典的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。
三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。
客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。
并利用Spring、Hibernate、Spring等轻量级框架实现三层结构的设计。
即采用的是贫血模式,业务逻辑对象正面封装了全部的业务逻辑方法,Web层仅与业务逻辑组件交互即可,无须访问底层的DAO对象。
Spring的声明式事务管理将负责业务逻辑对象方法的事务性。
在贫血模式下,其分层非常清晰。
DomainObject并不具备领域对象的业务逻辑功能,仅仅是ORM框架持久化所需的POJO,仅是数据载体。
贫血模型容易理解,开发便捷,但严重背离了面向对象的设计思想,所有的DomainObject并不是完整的Java对象。
第3章相关技术介绍
第1节MVC简介
MVC是Model、View、Controller三个词的缩写,三个词分别代表应用的三个组成部分:
模型、视图与控制器。
三个部分,协同工作,从而提高应用的可扩展性及可维护性。
起初,MVC模式是针对相同的数据需要不同显示的应用而设计的,其整体的效果如图1所示:
图1MVC结构
在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。
具体地说,模型维护一个视图列表,这些视图为获得模型变化通知,通常采用观察者模式登记给模型。
当模型发生改变时,模型向所有登记过的视图发送通知:
接下来,视图从对应的模型中获得信息,然后更新自己。
概括起来,MVC有如下特点。
.多个视图可以对应一个模型。
按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。
1.模型返回的数据与显示逻辑分离。
模型数据可以应用任何的显示技术,例如使用JSP页面、Velocity模板或者直接产生Excel文档等。
2.应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。
3.控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。
因此,控制层可以说是包含了用户请求权限的概念。
4.MVC更符合软件工程化管理的精神。
不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。
第2节Spring的起源和背景
Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。
可以说Spring是企业应用开发的"一站式"选择,并贯穿表现层、业务层及持久层。
然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。
总结起来,Spring有如下优点:
1.独立于各种应用服务器.
2.Spring的DI机制降低了业务对象替换的复杂性。
3.Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。
第3节Hibernate概述
Hibernate是目前最流行的ORM框架,其采用非常优雅的方式将SQL操作完全包装成对象化的操作。
目前Hibernate在国内的开发人员相当多,Hibernate的文档也非常丰富,这些都为学习Hiberante铺平了道路,因而Hibernate的学习相对简单一些。
第4章需求分析
Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传为上网用户提供按博文主题搜索,查看注册用户的博文及提出相关评论,并为注册用户写留言等功能的系统。
下面就以两种不同的用户来分析博客网站的需求。
第1节注册博友
首先必须在博客首页中登录填写用户名和密码,这样才能执行一些相关操作,不然就是普通用户只能查看一些信息,而不能发表博文。
可以在管理页面上添加博文的分类,可以上传图片和游览自己的相册,在个人管理页面中注册用户还可以修改自己的个人信息。
博文管理,友情链接管理及博文分类管理,用例图。
博客管理页面的用例图
在博客主界面中发表博文时可以选择博文类型,这样可以更好管理自己的博文。
并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间。
更好交流,在信息时代人们通过个人空间沟通也用来但不能在自己的博客主页面中提交评论和留言。
这样在本系统中就可以为博友提供更多的个人色彩。
在管理页面中添加和删除友情连接。
这样博友可以在自己空间中快速定位自己关心的网站。
这样还可以让网友看到自己的一些信息。
友情链接及网页访问量统计显示:
在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对文章的访问量也在随时进行统计。
博客主页面的用例图
第2节普通用户
在博客注册页面注册成为博客的注册用户,才可以拥有自己独立的空间,进入某一博客页面查看相关文章信息时,可以随时对自己所感兴趣的文章发表评论,同时也可以查看到其他人针对该博文的评论。
普通用户在阅读博文时可以在最后留下自己的一些评论。
普通用户进入博友的用例图如图所示:
上网博友在博客主页面的用例图
普通网友可以搜索自己关心的一些数据。
并且在搜索结果中提供在结果范围内再次搜索。
这样就可以将范围缩小。
首页向注册用户提供登陆模块,注册用户在博客网站首页跟上网网友一样可以查看博客和博文推荐。
上网网友可以注册成为博客用户,拥有自己独立的空间。
这一模块的用例图如图所示:
博客首页的用例图
第5章系统架构设计
本系统采用严格的J2EE应用结构,主要有如下几个分层。
1.表现层:
由JSP页面组成。
2.MVC层:
使用Struts框架。
3.业务逻辑层:
主要由SpringIOC容器管理的业务逻辑组件组成。
4.DAO层:
由多个DAO组件组成,实现类必须继承Spring提供的HibernateDaoSupport。
5.Hibernate持久层:
由5个model组成,并在HibernateSession管理下,完成数据库访问。
6.数据库服务层:
使用MySQL数据库存储持久化数据。
系统结构图
黑色大方框内的MVC控制层、Service层及DAO组件层的组件,都由SpringIOC容器负责生成,并管理组件的实例。
第1节系统架构说明:
本系统不仅严格按MVC模式设计,还按J2EE分层设计,将中间层严格分成业务逻辑层、DAO层及数据持久层等。
MVC层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现。
表现层采用传统JSP技术。
本系统采用的是典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。
三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。
客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。
Jsp广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。
中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。
Web层,就是MVC模式里面的C,负责逻辑层和表现层的交互。
调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架。
Service层(就是业务逻辑层),负责实现业务逻辑。
业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。
DAO层,负责与持久化对象交互。
该层封装了数据的增、删、查、改的操作。
Model层,持久化对象。
通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。
Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及model无缝整合,其数据服务层用来存放数据。
第2节Hibernate层
通过使用Hibernate持久层,可以避免使用传统的JDBC操作数据库,对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据库。
保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、设计及编程,透过Hibernte对Model对象持久化操作,不管插入还是查询都是通过Model。
5.2.1设计持久化对象(Model)
面向对象分析,是指根据系统需求提取应用中的对象,将这些对象抽象成类,再抽取出需要持久化保存的类,这些需要持久化保存的类就是持久化对象(Model)。
Article.java(文章)、BlogInfo.java(博客信息)、Category.java(文章分类)、User.java(用户信息)、Critique.java(评论信息)。
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.3DAO组件的定义
DAO组件提供了各持久化对象的基本的CRUD操作。
而在DAO接口里则对DAO组件包含的各种CRUD方法提供了声明,但有一些IDE工具也可以生成基本的CRUD方法。
使用DAO接口的原因是:
避免业务逻辑组件与特定的DAO组件藕合。
由于DAO组件中的方法不是开始就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法是通用
的。
•get:
根据主键加载持久化实例。
•saveorupdate:
保存或更新持久化实例。
•remove:
删除持久化实例。
5.2.4实现DAO组件
借助于Spring的DAO支持,可以很方便地实现DAO类。
Spring为Hibernate的整合提供了很好的支持,Spring的DAO支持类是:
HiberanteDaoSupport,该类只需要传入一个SessionFactory引用,即可得到一个HibernateTemplate实例,该实例功能非常强大,数据库的大部分操作也很容易实现。
所有的DAO类都继承HibernateDaoSupport,并实现相应的DAO接口。
而业务逻辑对象则面向接口编程,无须关心DAO的实现细节。
通过这种方式,可以让应用在不同的持久化技术之间切换。
并借助于Spring提供的两个工具类:
HibernateDaoSupport和HibernateTemplate,可以很容易地实现DAO组件。
这种简单的实现较之传统的JDBC持久化访问,简直不可同日而语。
比如我现在要得到所有Blog对象我只需一句returngetHibernateTemplate().find("fromBlog");则返回一个Blog对象的列表。
5.2.5部署DAO层
HibernateDaoSupport类只需要一个SessionFactory属性,即可完成数据库访问。
SessionFactroy创建Session,而数据库的CRUD操作都是有Session完成,并将查询结果保存在一级缓存中,每次用户提交一次会话,可能需要Session完成一些数据库的操作而实际的数据库访问由模板类HibernateTemplate完成,该模板类提供了大量便捷的方法,简化了数据库的访问。
5.2.5.1DAO组件运行的基础
应用的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注入到Dao中,就可以用HibernateTemplate提供的大量便捷的方法。
进一步简化了持久层讨问,其模板的操作大大降低Hibernate的重复操作;Spring提供的DAO支持简化了DAO开发;SessionFactory的依赖注入简化了Session的控制等;这些都极大地提高J2EE应用的开发效率。
声明式事务的管理分离了业务逻辑和事务逻辑,将应用从特定的事务逻辑中解料,使应用可以方便地在不同的事务策略之间切换。
在所有的ORM框架中,Sping对Hibernate的支持最好。
Spring提供很多IoC特性的支持,方便地处理大部分典型的Hibernate整合问题,如SessionFactory注入到Dao中、HibernateTemplate的简化操作及DAO支持等,然后在Dao实现类继承HibernateDaoSupport,这样的话,Dao实现类就可以通过HibernateTemplment以面向对象的方式操作数据库。
另外,Spring还提供了统一的异常体系及声明式事务管理等。
一旦Hibernate处于Spring的管理下,Hibernate所需要的基础资源,都由Spring提供注入。
Hibernate创建SessionFactory必需的DataSource,执行持久化必需的Session及持久层访问必需的事务控制等,这些原本必须通过代码控制的逻辑,都将由Spring接管:
DataSource,SessionFactory,TransactionManager等,都将作为Spring容器中的bean。
将这些bean放在配置文件中管理,可以提供很好的解耦。
Spring提供了DAO支持,可以大大简化DAO组件的开发。
IOC容器的使用,提供了DAO组件与业务逻辑组件之间的松耦合。
所有的DAO实现Bean组件,都由容器负责注入到业务逻辑组件中,其业务组件无须关心DAO组件的实现。
面向接口编程及DAO模式的使用,提高了系统组件之间的解耦,降低了系统重构的成本。
通过Spring整合Hibernate,使持久层的访问更加容易,使用Spring管理Hibernate持久层有如下优势。
1.有效的Session管理:
Spring提供了有效、简单和安全的HibernateSession处理。
2.IoC容器提高了DAO组件与业务逻辑层之间的解耦。
3.DAO模式的使用,降低了系统重构的代价。
4.方便的事务管理:
Hibernate的事务管理处理会限制Hibernate的表现,而
5.Spring的声明式事务管理力度是方法级。
6.通用的资源管理:
Spring的ApplicationContext能管理SessionFactory,使得
配置值很容易被管理和修改,无须使用Hibernate的配置文件。
第3节实现Service