网络博客的设计与实现
2020-03-25
来源:步旅网
总第259期 2011年第5期 计算机与数字工程 Computer&Digital Engineering Vo1.39 No.5 202 网络博客的设计与实现 王西锋张晓孪杨乐 721016) (宝鸡文理学院计算机科学系宝鸡摘要博客是近年来非常流行的一种网络应用,通过采用Java中的Struts 2、Hibernate和Spring框架组合开发了一 博客;框架;网络应用 TP315 个网络博客系统,主要功能包括文章修改、文章分类设置,文章评论管理以及系统管理等,运行后系统性能优异、稳定可靠。 关键词中图分类号Des ign and Implementation of Network Blog Wang Xifeng Zhang Xiaoluan Yang Le (Department of Computer Science,Baoji olClege of Arts&Science,p ̄oji 721016) Abstract Network Blog is very popular network applications,the paper adopt Struts,Hibernate and Spring frame in JAVA 2,implements the network blog,the mainly function of system includes revising an article,setting up article's class, manager system and manager the comments of article.After system running,its function is stability and reliable. Key Words Blog,framework,network application Class Number TP315 1 引言 随着计算机技术的快速发展和网络的普及应 用,广大用户对网络服务的要求越来越高。博客 (Blog),作为一种由个人管理、不定期发布新文章 的网络应用,不仅是展示自我、网络交友、学习交流 MVC设计模式的WEB Framework。Struts框架 具有组件的模块化,灵活性和重用性的特点,简化 了基于MVC的web应用程序开发。 2.2 Spring技术 Spring可将简单的组件组合成为复杂的应用。 在Spring中,应用对象被声明式地组合在一个 的平台,也是家庭、公司、部门之间使用的沟通工 具。目前,Blog作为一种新的网络服务形式受到 越来越多的网民的青睐。 XML文件里。此外,Spring也提供了很多基础功 能,将应用逻辑的开发留给开发人员,使开发人员 能够编写更简洁、更易管理、更易测试的代码。 2.3 Hibernate技术 2 系统开发技术分析 典型的网络博客是结合了文字、图像、网站链 接的系统l1],允许读者以互动的方式进行评论。我 们的系统采用当下最流行的JAVA中的Struts 2、 Hibernate和Spring框架组合开发,对主要技术的 分析如下: 2.1 Struts架构 Hibernate是一个开放源代码的对象关系映射 框架,对JDBC进行了非常轻量级的对象封装,可 以方便使用对象编程思想来操纵数据库。另外, Hibernate还能在应用EJB的J2EE架构中完成数 据持久化的重任。 在以上3种技术的使用中,由于配置文件很 多,需要在启动服务器时加载一些配置文件,如ap- Struts就是在JsP Model2的基础上实现了 plicationContext.xml,web.xml,struts.xml等。 收稿日期:2010年11月7日,修回日期:2010年12月23日 基金项目:宝鸡文理学院重点科研项目(编号:ZK1039)资助。 作者简介:王西锋,男,硕士,讲师,研究方向:计算机网络应用技术。 2011年第5期 计算机与数字工程 203 在实际开发中,我们的数据库开发工具选用 MySQL 5.0,使用MyEclipse进行java代码编写。 3.4业务逻辑层设计 I耋 在系统中,设计业务逻辑层的原因在于,在 DAO中设置事物控制,若一个事物要跨越多个 3系统的整体设计 3.1系统架构设计 DAO实现类的不同方法时,则无法直接使用 Spring的注解设置事物的边界。在业务逻辑层设 置事物边界的主要代码如下: @Transactional Public void delete(Integer id){ Entry entry—entryDao.findByld(id); 在系统设计时,我们采用了B/S的4层结构, 依次为表现层、业务逻辑层、持久层和数据层_2],系 统的4层模型如图1所示。 表现层 在图1中,数据层指的是 0 系统使用的数据库;持久层用 业务逻辑层 {j 来完成整个系统中数据的持久 持久层 化,可以使用一些持久层框架 0 来实现;业务逻辑层完成系统 数据层 整个业务逻辑方面的运算,通 图1系统结构图过Spring管理整个系统的事 务;表现层则主要实现与用户的交互。通过划分不 同的应用程序层次,使得各层之间相互独立,后期 维护和扩展新的功能变得更加容易[3]。 3.2数据库结构设计 经过调研,对各数据实体之问的联系分析讨 论,我们设计了6个数据实体的持久化类,具体如 表1所示。 表1持久化类设计表 持久化类名 说明 User对象代表博客的主人,也就是博主 Blog对象保存与当前博客相关的配置内容 Category对象表示博客中的分类 Entry对象表示博客中的文章 Comment对象表示博客中文章的评论 Link对象表示博客的友情链接 3.3持久层设计 在本系统中,对持久化对象的设计采用泛型的 DAO设计,系统中一共有6个持久化对象,对应着 6个泛型的DAO设计,描述如表2所示。 表2持久层设计表 DAO 接口接口对应的实现类说明 GenericDao GenericDaoHibernate 泛型的DAO接口 和实现类 UserDao UserDaoHibernate 实现对user表中 数据的操作 LinkDao LinkDaoHibernate 实现对link表中 数据的操作 CategoryDao CategoryDaoHibernate 实现对category 表中数据的操作 EntryDao EntryDaoHibernate 实现对entry表中 数据的操作 BlogDao BlogDaoHibernate 实现对blog表中 数据的操作 CornmentI)ao CommentDaoHibernate 实现对comment 表中数据的操作 If(entry!一nul1){//entryDao与commentDao是两 个不同的Dao对象,但是这两部操作应该放到一个事物中 进行控制。 entryDao.delete(entry); commnentDao.deleteByEntryId(id); }} 3.5系统功能设计 根据前面的设计,应用层的主要功能分别应用 表3的类中方法来实现其功能。 表3功能类设计表 类名 说明 HomeAetion 实现文章的分页列表显示、某一文章的 显示和对文章进行评论的功能 UserAction 实现博主的登录、注销和修改密码功能 BIogAction 实现博客设置选项的显示和修改 CategoryAction 实现博客分类的列表的显示、添加、修 改和删除功能 EntryAction 实现博客文章的分页列表显示、添加、 修改和删除功能 CommentAction 实现博客评论的分页列表显示、状态值 修改和删除功能 LinkAction 实现友情链接的列表显示、添加、修改 和删除功能 SubscribeAction 实现订阅博客的功能 3.6其他设计 分页设计:在本系统中,为了实现分页,我们专 门设计了Pagination类,用来保存分页的信息,还 使用了Pager标记库用来进行页面链接的设计。 订阅博客的功能设计:实现该技术时,我们使 用RSS技术,让用户使用浏览器查看博客内容,按 照RSS的规范,向请求的用户输出包含博客文章 内容的XMI 文件。 4系统的实现 4.1数据库的连接 系统在连接数据库时,我们没有采取传统的 JDBC连接方式,而是借助于Hibernate这个对象 关系映射框架,通过建立与数据库表之间的映射来 操纵数据库,对数据进行CRUD(增、删、查、改操 204 王西锋等:网络博客的设计与实现 …………prepare(); 第39卷 作)[ ~引。 4.2系统主要界面 //获取首页显示博文的分页大小 Integer entryNumber—blog.getEntryNumber(); if(cid一__nul1) 设计和实现系统的主要界面时,我们使用简洁 的风格力求给用户以清新的感觉和视觉的享受,系 统主界面和后台管理界面如图2、图3所示。 ■■●●——■■一 蝌 一 i¨t I… ‘ ! !… i—, ~…● ,■ 兰0 。 。。 。。 一 】 II ;…。一一~ 銎 璧嬖塑兰璧世 !~ … ~ -: ‘~… … ; = ~ …t f一…~ … I: q= := 一 ~— 制 I… 图2系统主界面 图3后台管理界面 4.3 系统实现的主要代码 ] 显示博客文章列表方法的关键代码如下: public String list(){………… Integer pageSize—blogManager.get(Const.BLOG—ID). getBackendPageSize(); pagination—entryManager.getI istByBlogId(Const.BL()G —ID,null,pageSize,p);} 浏览者书写评论的关键代码: public String comment(){//对一篇博文撰写评论 blog—blogManager.get(Const.BI OG ID): ……●…●●● comment.setlp(ServletActionContext.getRequest(). getRemoteAddr()); comment.setCreatedTime(new Date()); //若评论需要批准后才能发布,修改status属性值 为0 comment.setStatus(Math.abs(blog.getCommentAu— dit()一1)): Integer entryld—comment.getEntry().getId(); commentManager.insert(comment,entryId); redirectCommentUrl一”/blog/load?id一”-L en— tryId+”#comment”;} 文章分页显示的关键代码: blog—blogManager.get(Const.BLOGID): if(blog.getStatus()__一O){return”closed”;} pagination=entryManager.getI istByBlogld(Const.BLOG —ID,1,entryNumber,p); }else{ pagination—entryManager.getI istByCategoryld(cid,1, entryNumber,p);}} 5 结语 本系统采用Struts 2、Hibernate和Spring框 架组合开发,实现了系统管理、文章管理、分类管 理、友情链接管理、浏览文章、评论文章等功能,系 统逻辑和层次结构清晰,具有很好的扩展性和维护 性。目前,本网络博客系统还只是一个功能完善的 单用户博客系统,下一步我们将继续完善为多用户 的网络博客系统。 参考文献 [1]Eric A.Meyer.CSS权威指南[M].北京:中国电力出 版社,2001 f23覃征,杨利英.软件项目管理[M].北京:清华大学出版 社,2004 [3]黄敬仁.系统分析[M].北京:清华大学出版社,2002 E4]刘中兵.开发者突击:java web主流宽假整合开发I-M]. 北京:电子工业出版社,2008 Es3邬继成.Struts与Hibernate实用教程一构建基于 MVC模式的高效Java Web应用[M].北京:电子工业 出版社,2006 [6]李红.数据库原理与应用EM].北京:高等教育出版社, 2004 [7]史济民,顾春华.软件工程一原理[M].北京:高等教育 出版社,2002 C8]孙卫琴.精通Hibernatei,M].北京:电子工业出版社, 2005