PC版
搜索导航
论文网 > 教育论文 > 高等教育论文

基于模板技术的CMS在高校信息化建设中的应用

  中图分类号:TP301
  文献标识码:A 文章编号:1672-7800(2015)005-0021-03
  作者简介:朱欣(1986-),女,江苏苏州人,硕士,苏州职业大学信息中心助理工程师,研究方向为软件测试、数据分析。
  0 引言
  信息化与互联网的发展推动着高校的信息化建设,开源内容管理系统(CMS)由于具有统一创建、管理信息发布、内容采集等功能,并具有安全机制防护等优点,近年来在企业[1-3]、金融等领域有着广泛应用。在教育行业[4],哈佛大学、北京大学等高校的部分应用也是基于开源CMS搭建的。CMS的种类繁多,国外比较著名的CMS系统有Drupal、Joomla,国内比较著名的有DEDECMS、JEECMS等。 根据构建语言和使用框架不同,又可分为基于PHP技术的CMS和基于Java技术的CMS。
  高校信息化建设目前面临着开发人员与经费不足等问题,利用开源CMS进行信息化建设,一方面可快速进行网站开发,减少人力成本,另一方面也避免了高校与软件企业合作中出现的业务需求沟通繁琐、软件维护升级成本高的缺点。对开源内容管理系统的功能构架JEECMS进行剖析,阐述了展示层Freemarker的工作机制。针对JEECMS模板标签使用的局限性,研究了如何利用模板技术,并在此基础上自定义扩展前台和后台标签,从而丰富页面模板的二次开发功能,能够针对不同业务特点开发符合实际需求的页面。
  1 模板技术介绍
  1.1 模板技术概要
  模板技术[5,6]是解决页面开发复用性差,提升内容表现形式和组织形式的一种有效的技术手段。比较流行的模板技术有Velocity和Freemarker,相较于Velocity,Freemarker可以进行国际化处理,支持日期、数字,并可进行宏定义。
  1.2 Freemarker概述
  FreeMarker 是一个免费的模板引擎,是一个基于模板生成文本输出的通用工具,使用纯Java 编写,被设计用来生成HTML页面,特别是基于MVC模式的应用程序。模板由FTL语言标记而成。Freemarker具有自定义宏、自定义函数、自定义模板文件加载器、缓存处理、异常处理等功能。使用FreeMarker可以更好地实现页面表现层与业务逻辑层的分离。
  2 JEECMS概述
  JEECMS采用SpringMVC3+Spring3+Hibernate3+Freemarker+HTML5技术架构,基于Java技术开发,具有稳定、安全、高效等特点,JEECMS可以跨应用服务器与操作系统平台,兼容多种浏览器,支持MySQL、Oracle、SQLServer等多种数据库。
  JEECMS系统分为前台应用服务系统和后台内容管理系统。前台主要负责不同模块内容的呈现,后台负责系统内容的管理,包括增、删、改等。
  在JEECMSV5基础上搭建信息中心部门网站的功能构架如图1所示。
  JEECMS的页面多为静态html页面,通过调用JEECMS自定义标签获得动态数据,重写CSS+DIV结构获得页面模板。现有标签采用Freemarker模板引擎,其依赖于现有的数据表结构,在此基础上针对现有框架提出自定义标签,以丰富页面展现形式。
  JEECMS中前台和后台调用标签的方式不同,使用的标签也不能通用。前台是通过实现Freemarker中的TemplateDirectiveModel接口来自定义标签,后台通过宏定义的方式自定义标签。以网站访问统计人数为例,后台页面中<@s。m "cms。function。statistic"/>的标签无法在前台页面中调用。
  3 前台标签定义
  以定义一个新标签cms_webcount为例,此标签用来实现在前台页面调用页面访问人数。自定义标签的具体流程如图2所示。
  (1)自定义数据表和hibernate映射文件。建立数据表和表相对应的hibernate配置文件。由于访问人数可通过计算JEECMS案例中已存在表jc_site_flow的行数算出,相应配置文件CmsSiteFlow.hbm.xml也已存在,故此步可省略。
  (2)定义实体类WebVisit、Dao接口和Dao接口的实现。
  (3)标签名和标签类配置。在jeecms-context.xml、jeecms-servlet-front.xml中定义标签名,在jeecms-context.xml中定义对应的标签类。
  (4)定义标签类WebVisitDirective。WebVisitDirective实现Freemarker的TemplateDirectiveModel接口类,重写execute方法。本例中对应标签较为简单,WebVisitDirective中直接调用Dao层。这也是自定义标签中最重要的一步。
  public class WebVisitDirective implements TemplateDirectiveModel {
  @SuppressWarnings("unchecked")
  public void execute(Environment env,Map params,TemplateModel[] loopVars,   TemplateDirectiveBody body) throws TemplateException,IOException {
  WebVisit webVisit = null;
  Map restrictions = new HashMap();
  long visitCount = webVisitdao.visitStatistic(restrictions)
  webVisit = new WebVisit();
  webVisit.setVisitCount(visitCount);
  Map paramWrap = new HashMap(params);
  paramWrap.put(OUT_BEAN,DEFAULT_WRAPPER.wrap(webVisit));
  Map origMap = DirectiveUtils.addParamsToVariable(env,paramWrap);
  body.render(env.getOut());
  DirectiveUtils.removeParamsFromVariable(env,paramWrap,origMap);
  }
  …
  }
  (5) 在ehcach-hibernate.xml文件中配置缓存。
  (6) 页面调用。在前台任何页面中调用如下标签,可获得页面访问人数。
  [@cms_webcount]
  ${tag_bean.visitCount}
  [/@cms_webcount]
  4 后台标签定义
  4.1 流程
  后台标签获取如图3所示。
  4.2 新建数据表和数据表配置文件
  在本例中建立数据表jc_test和配置文件CmsTest.hbm.xml。
  4.3 定义实体类业务层、Dao层、控制层
  新建实体类CmsTest业务层接口CmsTestMng、业务层实现类CmsTestMngImpl、Dao层接口CmsTestDao、Dao层实现类CmsTestDaoImpl、控制层CmsTestAct。其中控制层的关键代码如下所示:
  …
  @Controller
  public class CmsTestAct {
  private static final Logger log = LoggerFactory
  .getLogger(CmsTestAct.class);
  …
  @RequestMapping("/test/v_edit.do")
  public String edit(Integer id,HttpServletRequest request,ModelMap model) {
  WebErrors errors = validateEdit(id,request);
  if (errors.hasErrors()) {
  return errors.showErrorPage(model);
  }
  model.addAttribute("cmsTest",manager.findById(id));
  return "test/edit";
  }
  …
  }
  4.4 定义其它配置文件
  (1)在Spring配置文件jeecms-servlet-admin-action.xml中定义控制层配置。
  (2)在jeecms-context.xml中定义Dao层和业务层配置。
  (3)在ehcache-hibernate.xml中定义缓存配置。
  4.5 后台页面
  后台页面关键代码如下所示,其中${cmsTest.id}等为新定义的标签。
  <@p.table value=list;cmsTest,i,has_next><#rt/>
  <@p.column title="" width="20">
  <#t/>
  <#t/>
  <@p.column title="ID">${cmsTest.id}<#t/>
  <@p.column code="cmsTest.col1">${cmsTest.col1!}<#t/>
  <@p.column code="cmsTest.col2">${cmsTest.col2!}<#t/>
  <@p.column code="cmsTest.col3">${cmsTest.col3!}<#t/>
  <@p.column code="global.operate" align="center">
  <@s.m "global.edit"/> | <#rt/>
  ')) {return false;}" class="pn-opt"><@s.m "global.delete"/><#t/>
  <#t/>
  
  5 结语
  通过分析JEECMS如何自定义标签,减少了对开源CMS软件企业的依赖。高校可完全利用内部技术人员进行网站系统开发,制定出符合实际需求的页面模板。如何针对现有开源CMS框架进行功能模块的二次开发,研发高校自主CMS是下一步工作的重点。

相关论文

信息化基于模板高校应用建设
乡村生态治理共同体建设的农民主体性
图书馆图书资料信息化管理研讨
高校钢琴教育的多元化发展构想
写生课程融入学前教育美术教学的应用
新农村建设中强化农村经济经营管理的
浅谈乡村振兴战略的基层公共图书馆建
人事档案管理信息化建设创新路径研究
试论战略成本会计在企业管理中的应用
高校商务英语教学中的思政融入构想
新文科建设背景下管理类应用型本科人