Spring MVC框架在CMS开发中的应用
2013-04-11何永太
何永太
(安徽水利水电职业技术学院,安徽 合肥 231600)
CMS全称为内容管理系统,是一种将数据(网页中的内容)与数据的表现形式(网页的显示效果与格式)进行分离,并提供对数据进行有效管理的应用系统.内容管理系统的应用使得基于信息发布类的网站建设的技术门槛变得更低、建设周期变短,网站的运行维护变得更加高效、安全、简单、快捷,网站的前端页面重构也变得更加容易.
目前,用于网站建设的CMS系统主要以基于ASP和PHP技术的居多,如PHPMyWind.这些系统有着其本身不可逾越的局限性,如语言的纯解释性执行、服务器端脚本与前端脚本混和在一起从而不利于后期的系统维护、安全性不够等,从而使得应用它们开发的网站性能不够高、安全性不强、网站可扩展性不足.JAVA技术有性能高、安全性高、跨平台、面向对象、多线程等优秀特点,在企业应用开发中成为首选的技术平台.本文论述了将MVC思想引入CMS系统的开发中,并使用基于JAVA技术的优秀开源框架Spring MVC进行开发的解决方案.
1 MVC模式与Spring MVC框架
MVC模式最初是由挪威计算机专家Trygve M.H.Reenskau提出,该模式将应用系统分成三个部分:Model、Controller和View[1].其中,Model用于封装应用状态和业务逻辑,View用于可视化界面的显示并捕获用户的操作动作,View会将捕获到的用户操作传递给Controller.Controller会根据接收到的用户操作请求决定是否要调用Model完成相关业务逻辑的处理,并决定选择相应的View来响应用户的操作.MVC三个部分的关系如图1所示[2,3].
图1 Model-View-Controller三者之间的交互
Spring MVC是使用JAVA技术、基于MVC模式而开发的轻量级的企业Web应用开发框架,相比目前其他众多的MVC框架(如Struts2)而言,Spring MVC更具扩展性和灵活性.Spring MVC框架在Web应用中的处理流程如图2所示[4].
图2 Spring MVC框架在Web应用中的处理流程
DispatcherServlet充当MVC模式中Controller,是整个框架的控制转发中心,由Spring MVC框架自动完成,View与MVC中View对应.图2中的Controller(自定义控制器)、Service、DAO三部分对应于MVC中的Model,用于处理复杂的业务逻辑功能.业务逻辑处理采用三层结构设计,Controller层对请求响应进行具体化,由DispatcherServlet进行调用;Service层提供更细单元的操作实现,由Controller层进行调用;DAO层一般用于实现对具体数据的读写访问,如数据库访问、文件读写等,由Service进行调用.这种分层设计更易于代码的模块化处理与分离,有利于团队开发过程中的分工与协作,有利于代码的自动化测试.
通过以上分析,可知应用Spring MVC框架开发CMS系统,开发关注点集中在Controller、Service、DAO及View几个部分的合理设计.
2 CMS的功能定义和系统构成
CMS系统应能够实现数据内容与其显示相分离,因此一个功能完备的CMS系统应由两大部分构成:后台数据管理和前台页面访问处理.
后台数据管理主要完成的功能有:
(1)站点管理.完成站点基本信息的管理、数据分类管理、导航管理、链接管理等;
(2)用户管理.完成对后台管理用户的添加、删除、修改操作,以及对用户进行权限分配与回收的管理等;
(3)站点各类数据的管理.完成对各类数据的添加、删除及修改操作,实现对文件的上传与下载的管理等;
(4)站点前台页面管理与配置.所有前台使用的页面要通过后台管理进行注册登记,这样前台访问的入口控制器才能识别它.每一个页面要显示(使用)的动态数据以配置页面变量的方式进行设置.
为了实现前台的数据与其显示相分离的目的,前台页面访问处理应要实现2个基本功能:(1)如何取得需要的数据;(2)如何决策由哪个页面模板来显示取得的数据.
3 实现思路
3.1 后台管理的实现
后台管理的操作界面是相对固定的,为提高用户的操作体验,使用Ajax方式提交命令及数据,实现流程如图3所示.
图3 后台管理设计实现
图3中,所有以Controller结尾的类为自定义控制器类,其内部定义了众多的方法,以响应不同的页面操作请求.MySqlDao、SqlServerDao、OracleDao是实现了 DAO接口的类,用于实现对不同类型的数据库的统一访问,这样CMS系统可以在不同的数据库系统之上进行移植,以满足不同的系统环境需求.
3.2 前台访问的实现
如前面2所述,为使访问前台页面所需的2个功能顺利实现.设计一个统一入口的自定义控制器,所有前台页面的访问必须经过该入口控制器,并附带几个参数:
w——要访问的站点id.省略时,代表访问主站点;
v——视图(View)的名称,即用于显示内容的对应前台页面文件名(不带扩展名);此参数省略时默认使用主页面视图;
i——要显示数据的标识值,一般为数据在数据库中的主键,一般不能省略;
p——如果显示的是数据列表,则表示数据列表分页的页号,省略时代表显示第1页;否则可以省略此参数;
s——如果显示的是数据列表,则表示数据列表分页的页大小,省略时由后台参数设定;否则可以省略该参数;
a——作为附加的额外数据使用,一般情况下该参数被忽略.
页面中要显示的数据通过后台管理进行配置,可以对一个页面配置多个数据变量,利用JSP的EL和JSTL技术进行数据的提取填充.
入口控制器的处理主流程如图4所示.
图4 前台页面访问入口控制器的处理流程
至此,前台页面访问的视图动态选择和数据的提取问题均已解决.
4 结束语
CMS系统已经逐渐成为网站建设的主流趋势,具有非常好的发展前景和应用市场.本文提出的基于Spring MVC框架开发CMS系统的解决方案,充分利用了JAVA平台技术的高性能、高安全性、跨平台性等特点,使得开发出来的CMS系统相对于使用其他技术的同类系统具有更出色的优势,适用于访问率高、网站集群的应用需求.应用本文提出的方案所开发的CMS系统,在安徽水利水电职业技术学院网站建设、运行维护过程中,应用效果良好.
〔1〕黄伟.基于MVC架构的Web应用系统设计[J].微型计算机与应用,2004(3):13-15.
〔2〕蒋金楠.ASP.NET MVC4框架揭秘[M].北京:电子工业出版社,2013.1.
〔3〕曾巧明,肖孟,汤伟.MVC模式在CMS中的应用及其PHP实现[C].第十三届全国青年通信学术会议,2008.
〔4〕陈雄华,林开雄.Spring 3.x企业应用开发实战[M].北京:电子工业出版社,2012.11.