PaperTan: 写论文从未如此简单

高等教育

一键写论文

基于模板技术的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.:.