龙源期刊网 http://www.qikan.com.cn
基于SSH框架的个性化博客系统设计与实现
作者:杨阳
来源:《软件导刊》2016年第12期
摘 要:随着互联网技术的发展,人们的互联网思维也越来越成熟,很多人期望在互联网中更好地展现自己。传统的博客系统由于功能固定而缺少灵活性。提出了一种基于Struts2、Spring和Hibernate框架的个性化博客系统,该系统能帮助人们设计自定义博客,从而达到更好地展示网民个性的目的。
关键词:个性化博客;SSH;Struts2+;Spring+;Hibernate DOIDOI:10.11907/rjdk.162409 中图分类号:TP319
文献标识码:A文章编号:1672-7800(2016)012-0074-03 0 引言
随着网络技术的发展,互联网人群网络素养越来越高。人们不再仅仅局限于在微信、微博、QQ互联等应用中作为信息的接受者,而是渴求担当信息的制造者和发布者。在这个人人都能运营自媒体的Web3.0时代,个人独特的见解和所产生的信息价值正深刻改变并指引着互联网的发展。以博客技术为代表的互联网应用,作为一种全新的载体承载着人们个性化的表达与展示。针对信息内容生产者的互联网博客应用系统有多种形式,如新浪博客,性能稳定、容量无限,但存在可扩展性较差的问题,人们只能使用系统提供的固有功能,而不能将个人的想法融入到博客设计中。鉴于此,本文提出了基于Struts2、Spring和Hibernate框架(统称SSH框架)的个性化博客系统。在SSH框架下,使用者可根据自己的需要,规划博客系统功能,制作个人特色的系统界面,从而更好地在互联网时代展示自己。 1 系统框架
1.1 基于MVC模式的Struts2
基于WebWork,Struts2发展为MVC[1]框架,它创造性地将数据库逻辑(Model层)、页面展示(View层)与逻辑控制(Controller层)分离,从而使整个应用程序代码更加健壮、优雅。当获取客户端发送的请求后,作为控制器的过滤器类StrutsPrepareAndExecuteFilter,根据struts-config.xml中的配置,调用Action类中的执行方法。该方法在经过Model层计算后,控
龙源期刊网 http://www.qikan.com.cn
制器向客户端呈现显示页面。Struts2的MVC模式有效增强了信息系统的复用性和可维护性[2]。
1.2 基于IoC和AOP的Spring
Spring是一个轻量级、一站式的Java企业级应用解决方案,它提供选择式的功能集成。本文使用Spring的IoC(Inversion of Control,控制反转)[3]和AOP(Aspect-Oriented
Programming,面向切面编程)[4]功能模块。其中,控制反转IoC主要指由宿主容器完成依赖对象的初始化和注入,而不是传统应用程序中主动去获取所依赖对象。面向切面编程AOP则是对面向对象编程OOP的重要补充,它将散布在核心功能代码周围的权限控制、日志打印、事务管理等业务功能抽取出来,形成横断切面,从而降低程序耦合度、提高内聚性。 1.3 基于O/R-Mapping的Hibernate
Hibernate是流行的对象/关系映射(ORM)框架[5],它将程序数据以类表映射的形式持久化到数据库,从而使程序数据获得JVM之外的生命周期。这种对象/关系映射支持继承、多态、关联、组合、集合等多种面向对象的特征和形式。除此之外,Hibernate还支持加载、多种抓取策略,基于自动版本和时间戳的锁机制,从而提高应用程序性能。在可伸缩性方面,Hibernate既适合内部网中小规模访问级别应用,也服务于并发量高的集群式应用;在可靠性和扩展性方面,Hibernate具有良好的稳定性和可配置性。 1.4 SSH整合
SSH指Struts2、Spring、Hibernate三大框架整合实现MVC模式架构,以达到程序系统的稳定性、安全性、高效性。与传统的EJB(企业级JavaBean)[6]相比,SSH是轻量级的企业级应用框架,强调低侵入性、组件间的松散耦合以及分层性,从而能够快速适应需求变更和问题定位,极大提高了程序开发效率。在整合过程中,由Spring起中心桥接作用,分别将Spring与Struts、Hibernate整合,并进行单元(JUnit)测试,从而完成从应用表示层、业务逻辑层、数据持久层的连接贯通。 2 系统功能
在信息量急度膨胀时代,每个人都作为一个信息源存在。如何快速保存、整理、升华个人思想,并在互联网中进行交流、沟通、传播,是目前互联网应用亟待解决的问题。针对这些问题,本文试图从个性化博客方向作一些尝试和努力。首先,博客是个人自我展示的阵地和平台,可以通过博客宣传个人观点、看法以及认识;其次,通过博客可以实现问题的开放交流、讨论;第三,用户可以定制功能模块,如相册、页面皮肤、装饰等。在安全方面,既要有认证、授权功能,也要保证会话管理中用户个性化信息安全;在性能方面,可通过反向代理服务器、连接池、一二级缓存等措施来加速应用程序。
基于以上目标,本文个性化博客系统具有以下基本功能,如图1所示。
龙源期刊网 http://www.qikan.com.cn
(1)文章编辑发布模块。该模块集成百度的富文本编辑器UEditor,支持可视化编辑和HTML代码编辑。发布前支持预览和按时间自动保存草稿功能,编辑完成后可设定文章分类和权限公开程度。
(2)文章列表展示模块。该模块分布在首页和后台管理页面中。在首页,文章列表支持分页显示和动态加载,同时支持基于主题和内容的信息检索。在后台管理页面,采用EasyUI前端框架展示文章的增删改查操作。
(3)首页界面装饰模块。该模块主要提供页面元素拖拉式排版、背景调色和页面皮肤换肤功能,同时提供首页配饰的增加,如小时钟、HTML5动态小游戏、音乐视频等。 (4)留言管理模块。该模块在于加深博主、访客及朋友之间的交流,在展现形式上支持树形列表。每当有新的留言和回复,都将以站内信息的形式通知接受方。
(5)相册上传下载模块。支持多照片和视频上传,并为上传照片增加自定义水印。在相片展示时,可设定浏览权限和相册封面。
(6)安全功能模块。根据用户权限设置操作权限,对用户进行权限分类管理。 除了以上功能外,还需要额外增加其它辅助功能,如日志管理、数据校验、多用户管理等。
3 关键技术分析
3.1 Struts2、Spring、Hibernate整合
三大框架的整合过程包括两个阶段[7]:①Struts2与Spring整合;②Spring与Hibernate整合。对于第一阶段,要在web.xml中分别加入Spring初始化容器对象的监听器
ContextLoaderListener、Struts2的核心过滤器StrutsPrepareAndExecuteFilter, 还需要加入Struts2与Spring之间的整合包,这样,在配置文件struts.xml中,配置元素action的class属性不再是类全称,而是Spring容器中已配置的bean名称。对于第二阶段,只需将SessionFactory实例交给Spring容器管理,即在applicationContext.xml中指明数据库连接池相关信息、hibernate配置文件所在位置。另外,配置声明式事务管理。在进行上述配置后,通过简单的增删改查测试完成整合检验。 3.2 DAO设计模式
DAO(Data Access Object)设计模式是J2EE中常用的设计模式。通过DAO接口和DAO实现类,将数据库底层操作和高层业务逻辑分离。针对每个实体对象,都有相对应的DAO接口和DAO实现类。而对于各个DAO接口中的重复操作,可以抽取出来形成泛型类BaseDao,