基于模板技术的CMS在高校信息化建设中的应用
时间:2016-01-09
内容管理系统(CMS)具有管理方便、易于维护等特点,在信息化建设中得到广泛应用。针对国内流行的JECIS表示层标签的调用构架,结合建立信息中心部门网站的案例,阐述如何自定义内容管理和模板,从而完善页面的二次开发。一方面可以满足个性化定制页面的需求,另一方面减少了高校信息化建设中与软件企业合作所需的经费。信息化, 基于, 模板, 高校, 应用, 建设
0 引言
信息化与互联网的发展推动着高校的信息化建设,开源内容管理系统(CMS)由于具有统一创建、管理信息发布、内容采集等功能,并具有安全机制防护等优点,近年来在企业、金融等领域有着广泛应用。在教育行业,哈佛大学、北京大学等高校的部分应用也是基于开源CMS搭建的。CMS的种类繁多,国外比较著名的CMS系统有Drupa、Jooma,国内比较著名的有DEDECMS、JEECMS等。 根据构建语言和使用框架不同,又可分为基于PHP技术的CMS和基于Java技术的CMS。
高校信息化建设目前面临着开发人员与经费不足等问题,利用开源CMS进行信息化建设,一方面可快速进行网站开发,减少人力成本,另一方面也避免了高校与软件企业合作中出现的业务需求沟通繁琐、软件维护升级成本高的缺点。对开源内容管理系统的功能构架JEECMS进行剖析,阐述了展示层Freemarker的工作机制。针对JEECMS模板标签使用的局限性,研究了如何利用模板技术,并在此基础上自定义扩展前台和后台标签,从而丰富页面模板的二次开发功能,能够针对不同业务特点开发符合实际需求的页面。
1 模板技术介绍
1.1 模板技术概要
模板技术[5,6]是解决页面开发复用性差,提升内容表现形式和组织形式的一种有效的技术手段。比较流行的模板技术有Veocity和Freemarker,相较于Veocity,Freemarker可以进行国际化处理,支持日期、数字,并可进行宏定义。
1.2 Freemarker概述
FreeMarker 是一个免费的模板引擎,是一个基于模板生成文本输出的通用工具,使用纯Java 编写,被设计用来生成HTML页面,特别是基于MVC模式的应用程序。模板由FTL语言标记而成。Freemarker具有自定义宏、自定义函数、自定义模板文件加载器、缓存处理、异常处理等功能。使用FreeMarker可以更好地实现页面表现层与业务逻辑层的分离。
2 JEECMS概述
JEECMS采用SpringMVC3+Spring3+Hibernate3+Freemarker+HTML5技术架构,基于Java技术开发,具有稳定、安全、高效等特点,JEECMS可以跨应用服务器与操作系统平台,兼容多种浏览器,支持MySQL、Orace、SQLServer等多种数据库。
JEECMS系统分为前台应用服务系统和后台内容管理系统。前台主要负责不同模块内容的呈现,后台负责系统内容的管理,包括增、删、改等。
在JEECMSV5基础上搭建信息中心部门网站的功能构架如图1所示。
JEECMS的页面多为静态htm页面,通过调用JEECMS自定义标签获得动态数据,重写CSS+DIV结构获得页面模板。现有标签采用Freemarker模板引擎,其依赖于现有的数据表结构,在此基础上针对现有框架提出自定义标签,以丰富页面展现形式。
JEECMS中前台和后台调用标签的方式不同,使用的标签也不能通用。前台是通过实现Freemarker中的TempateDirectiveMode接口来自定义标签,后台通过宏定义的方式自定义标签。以网站访问统计人数为例,后台页面中<@s。m "cms。function。statistic"/>的标签无法在前台页面中调用。
3 前台标签定义
以定义一个新标签cms_webcount为例,此标签用来实现在前台页面调用页面访问人数。自定义标签的具体流程如图2所示。
(1)自定义数据表和hibernate映射文件。建立数据表和表相对应的hibernate配置文件。由于访问人数可通过计算JEECMS案例中已存在表jcsitefow的行数算出,相应配置文件CmsSiteFow.hbm.xm也已存在,故此步可省略。
(2)定义实体类WebVisit、Dao接口和Dao接口的实现。
(3)标签名和标签类配置。在jeecms-context.xm、jeecms-servet-front.xm中定义标签名,在jeecms-context.xm中定义对应的标签类。
(4)定义标签类WebVisitDirective。WebVisitDirective实现Freemarker的TempateDirectiveMode接口类,重写execute方法。本例中对应标签较为简单,WebVisitDirective中直接调用Dao层。这也是自定义标签中最重要的一步。
pubic cass WebVisitDirective impements TempateDirectiveMode {
@SuppressWarnings("unchecked")
pubic void execute(Environment env,Map params,TempateMode oopVars, TempateDirectiveBody body) throws TempateException,IOException {
WebVisit webVisit = nu;
Map restrictions = new HashMap();
ong visitCount = webVisitdao.visitStatistic(restrictions)
webVisit = new WebVisit();
webVisit.setVisitCount(visitCount);
Map paramWrap = new HashMap(params);
paramWrap.put(OUTBEAN,DEFAULTWRAPPER.wrap(webVisit));
Map origMap = DirectiveUtis.addParamsToVariabe(env,paramWrap);
body.render(env.getOut());
DirectiveUtis.removeParamsFromVariabe(env,paramWrap,origMap);
}
…
}
(5) 在ehcach-hibernate.xm文件中配置缓存。
(6) 页面调用。在前台任何页面中调用如下标签,可获得页面访问人数。
[@cms_webcount]
${tag_bean.visitCount}
[/@cms_webcount]
4 后台标签定义
4.1 流程
后台标签获取如图3所示。
4.2 新建数据表和数据表配置文件
在本例中建立数据表jc_test和配置文件CmsTest.hbm.xm。
4.3 定义实体类业务层、Dao层、控制层
新建实体类CmsTest业务层接口CmsTestMng、业务层实现类CmsTestMngImp、Dao层接口CmsTestDao、Dao层实现类CmsTestDaoImp、控制层CmsTestAct。其中控制层的关键代码如下所示:
…
@Controer
pubic cass CmsTestAct {
private static fina Logger og = LoggerFactory
.getLogger(CmsTestAct.cass);
…
@RequestMapping("/test/v_edit.do")
WebErrors errors = vaidateEdit(id,request);
if (errors.hasErrors()) {
return errors.showErrorPage(mode);
}
mode.addAttribute("cmsTest",manager.findById(id));
return "test/edit";
}
…
}
4.4 定义其它配置文件
(1)在Spring配置文件jeecms-servet-admin-action.xm中定义控制层配置。
(2)在jeecms-context.xm中定义Dao层和业务层配置。
(3)在ehcache-hibernate.xm中定义缓存配置。
4.5 后台页面
后台页面关键代码如下所示,其中${cmsTest.id}等为新定义的标签。
<@p.tabe vaue=ist;cmsTest,i,has_next><#rt/>
<@p.coumn tite="" width="20">
<#t/>
<#t/>
<@p.coumn tite="ID">${cmsTest.id}<#t/>
<@p.coumn code="cmsTest.co1">${cmsTest.co1!}<#t/>
<@p.coumn code="cmsTest.co2">${cmsTest.co2!}<#t/>
<@p.coumn code="cmsTest.co3">${cmsTest.co3!}<#t/>
<@p.coumn code="goba.operate" aign="center">
<@s.m "goba.edit"/> | <#rt/>
')) {return fase;}" cass="pn-opt"><@s.m "goba.deete"/><#t/>
<#t/>
5 结语
通过分析JEECMS如何自定义标签,减少了对开源CMS软件企业的依赖。高校可完全利用内部技术人员进行网站系统开发,制定出符合实际需求的页面模板。如何针对现有开源CMS框架进行功能模块的二次开发,研发高校自主CMS是下一步工作的重点。
参考文献
[1]了现.聂足.基于CMS的企业网站的设计与实现[J]. 计算机工程与设计.2009.:.
