基于SSH框架的个性化博客系统设计与实现

2017-01-21 15:18杨阳
软件导刊 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层计算后,控制器向客户端呈现显示页面。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所示。

(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,其中T的真实类型需要通过Java反射技术获得。DAO模式使项目层次更加清晰,划清了事务界限,增加了项目的可维护性。

3.3 基于Shiro的权限安全管理

Apache Shiro是简单易用的Java安全处理框架,其提供了认证、授权、加密以及会话管理等功能。传统的用户认证授权常常采用基于URL拦截的形式,将权限操作对应的URL加入到数据表的字段中,将过滤器中获取的访问URL与用户对应角色所拥有的权限表中的url字段相比对,成功后继续访问资源。这种方式的开发效率和安全性较低,一般使用成熟的权限管理框架。Shiro作为一款轻量级框架,可以实现B/S、C/S、分布式系统的权限管理,已被越来越多的开发人员所使用。Shiro中有一个重要的概念:Realm,通过自定义的Realm可以获取数据库中的用户、角色及权限信息。通过Shiro配置式的管理方式,简化了权限管理操作,增强了系统的结构性和整体性。

4 系统实现

4.1 数据库设计

系统基本实体类包括用户类、文章类、留言类、权限类、相册类、相片类。每个实体类在数据库中都有一张对应的表结构。本系统采用MySQL数据库。鉴于篇幅有限,本文仅给出用户、文章的实体表结构,如表1、表2所示。

根据业务需求,实体类与实体类之间发生关联关系,如图2所示。

4.2 系统流程设计

系统流程如图3所示,分为浏览首页、登录注册、验证、系统管理4个部分。首先,用户输入系统网址浏览博客首页,需要进行账户注册。然后根据注册帐号登录,登录过程中涉及到基于Shiro的认证和授权过程。进入系统管理界面后,既可以对博客进行个性化自定义设置,也可以对博客文章、图片、评论进行综合管理。

4.3 系统配置文件

根据系统框架和功能,系统配置以下文件,分别是Spring容器配置文件applicationContext.xml、 Struts2配置文件struts.xml、Hibernate实体/关系映射配置文件xxx.hbm.xml、日志配置文件log4j.xml、Shiro、Spring的整合配置文件applicationContext-shiro.xml以及web.xml。下面给出web.xml配置代码:

<?xml version="1.0" encoding="UTF-8"?>

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

Blog

shiroFilter

org.springframework.web.filter.DelegatingFilterProxy

targetFilterLifecycletrue

targetBeanNameshiroFilter

shiroFilter

/*

org.springframework.web.context.ContextLoaderListener

contextConfigLocationclasspath:applicationContext*.xml

struts2

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

struts2

/*

5 结语

本文提出了一种基于SSH框架的个性化博客系统设计与实现方法,分别介绍了Struts2、Spring、Hibernate的特点及功能。在关键技术方面,提供了三大框架的整合方法、DAO设计模式以及基于Shiro的权限安全框架实施方案。在系统实现方面,对数据库设计、系统流程设计及系统配置文件进行了讨论。作为一款个性化博客系统,重在强调用户的个性化定制操作,展示个人观点的特色页面和用户交流组件。

参考文献:

[1] PRAVEEN GUPTA,PROF M C GOVIL.MVC design pattern for the multi framework distributed applications using XML,spring and struts framework[J].International Journal On Computer Science And Engineering,2010, 2(4):1047-1051.

[2] 林萍.基于SSH+DWR的高校科研管理系统研究与实现[J].计算机应用与软件,2014,31(7):164-168.

[3] 阎娟娟,陈波,高秀娥.基于SSH架构的INQAS的设计与实现[J].计算机应用与软件,2010,27(3):22-26.

[4] 刘荣辉,薛冰.基于Annotation的Spring AOP系统设计[J].计算机应用与软件,2009,26(9):264-267.

[5] 吴茂昌,阳玉琴.基于MVC模式的Java主流框架整合技术研究[J].计算机与数字工程,2009,37(10):91-92.

[6] 陈立岩.EJB组件技术及应用[J].计算机技术与发展,2007,17(3):458-461.

[7] 刘静,刑藏菊,龚凡蕾.基于SSH的高校MBA管理系统设计与实现[J].计算机应用与软件,2011,28(11):157-159.

(责任编辑:杜能钢)