王跟成
(西藏民族学院,陕西 咸阳712082)
高等院校经常需要构建多个网站,这些网站除了在栏目设置、页面呈现风格和具体内容不同外,其他方面有很多共同之处,表现在栏目类型、内容类型、发布方式、数据和文件的存储、程序代码开发等方面。若这些网站分别开发,需要投入较大的人力,而且不易于统一管理。本文介绍一种基于Java EE平台的分布式站群管理系统,它可以使高校更容易地构建自己的站群系统,完成网站在多个物理服务器上的分布式部署。
高校各部门的网站经常部署在不同的物理服务器上,传统的做法是每建立一个网站就要开发一套管理系统,完成网站的用户、权限和栏目管理,而且还要独立开发网站内容的发布平台。这种做法对于构建单站系统比较实用,若构建站群系统则需要较大的代码开发量,而且不利于集中管理。本文完成的分布式站群管理系统可以解决上述问题。它有以下特点:
(1)分布式部署
系统设计完成后,每构建一个新网站,其后台管理端、内容发布端不需要重新开发代码,只需要将相应的共享代码发布成独立的应用模块直接部署,部署时根据需要可以选择不同的物理服务器。
(2)数据库集中存储
对于发布的文本内容,系统集中存放在一台或多台物理机的数据库中,这样方便数据的检索,而且易于管理和实施数据备份。
(3)文件分布式存储
发布内容中上传的图片、文件、音视频、Flash等附件会分布式地存放到网站对应的物理服务器中,这样使得各个网站的内容发布者只能管理自己网站中上传的内容,减少了由于文件误删带来的数据不一致。
(4)高度的代码共享性
系统设计了代码共享包,使用开发工具生成符合Java EE规范的WAR包,部署网站时只需要将WAR包上传到应用服务器并进行简单的配置即可,共享包中包含了网站后台管理系统和发布平台的所有代码,使得开发者省去了冗繁的重复开发。
(5)基于标签的前台开发
在开发网站前台时,基本上不需要Java代码开发,本系统设计了一套自定义标签,页面设计人员只要熟悉标签的功能和使用方法,在系统需要读取数据库数据的地方嵌入自定义标签即可完成网站的动态内容显示。
总体上,系统包含后台管理模块、内容管理模块和各个部门的前台网站。后台管理模块包括网站、栏目、用户和权限管理;内容管理模块包括内容发布、撤销、修改和删除等功能,它是整个系统设计的核心;前台网站是向普通用户呈现各个部门网站信息的平台,所有发布的内容最终要正确地显示到部门网站中才能供用户正常浏览。系统功能模块图如图1所示。
系统功能中,网站后台管理模块只有一个,是提供给站群管理人员使用的,通过该模块,可以快速地构建一个部门网站所需的基本信息,包括网站基本配置、栏目设置、内容管理员和相应权限等。每个站点都包含内容管理模块,具有该网站和相应栏目管理权限的内容管理员可以使用该模块灵活地管理网站的内容,所有发布的文件和音视频数据等都存储在网站下的相应目录中,以方便网站迁移或重新部署。普通用户通过浏览器浏览网站的前台页面,前台页面呈现通过JSP、JSTL和自定义标签实现,整个系统与数据库的连接均通过数据库连接池来实现,每个网站在打包发布时只需要将网站前台页面和相应的内容管理模块的代码打包发布即可。系统的体系结构如图2所示。
系统的网站信息、栏目信息、部门信息、用户信息、权限和内容信息集中存放在数据库中,具体表设计如下:
部门网站表(部门号,部门名称,部门职能,部门组织机构)、栏目表(栏目号,栏目名称,部门号,栏目说明,栏目类型,信息数,栏目导航)、内容表(内容号,部门号,栏目号,内容标题,内容正文,链接地址,发布时间,排序号,点击次数,发布者,内容类型,图片地址,来源)、用户表(用户账户,用户名,部门号,登录密码,用户说明)、权限表(用户号,栏目号)、系统参数表(参数号,参数名称,参数值,部门号)。
系统的ER模型如图3所示。
图3 系统ER模型图
要开发一个新的部门网站,需通过系统新增一个部门网站,然后根据网站前台页面设计要求,将该网站所需的所有栏目添加到系统中,然后创建网站的管理用户并赋予相应的栏目管理权限,最后由网站前台设计人员(美工)根据部门号、栏目号等参数,使用自定义标签完成页面制作。所有这些操作,除了网站前台页面设计时需要嵌入一些标签外,不需要开发任何代码,系统管理后台的所有代码都是公用的,只需要在网站部署时进行相应配置即可。
内容管理是分布式站群管理系统的重点,系统抽象出了7种内容:普通新闻、图片新闻、视频新闻、友情链接、滚动图片、留言板、问卷调查等,每一种内容都根据其特点设计了增加、修改、删除和发布/撤销等功能。内容管理模块运行时的系统截图如图4所示。
系统实现采用标准的MVC设计模式,使用JSP2.0标准开发,后台实现时设计了多个控制器和模型,JSP页面和自定义标签充当视图,实现框架如图5所示。
控制器包括内容管理、用户管理、栏目管理和权限管理等,都继承自HttpServlet,它完成客户请求的判断和数据封装之后,调用相应的模型处理业务数据。应用模型包括各种Java Beans和封装了数据库操作的Java类,都继承自基类Manager。视图由JSP页面和自定义标签充当,主要显示查询和处理的结果,这种基于MVC模式设计的代码具有良好的扩展性。
系统在内容管理模块中使用了开源项目FCKeditor,它是一个专门用于网页上的所见即所得的文字编辑器。它的轻量化、部署简单等特性使得它可以与PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java 以及 ABAP 等不同的编程语言相结合。站群管理系统中使用FCKeditor时对它进行了修改,主要包括修改部分源代码使其支持分布式部署,所有提示语言的汉化、对ConnectorServlet的改写使其支持汉字文件名和目录名的上传和创建、页面样式的修改等。经过运行,修改的页面编辑器在内容管理中发挥了很大作用。其发布新闻内容时的截图如图6所示。
整个后台的Java代码通过Jbuilder2006开发,代码共享率达到了98%以上,部署时使用开发平台提供的工具自动创建符合规范的WAR包,或者也可以使用工具生成JAR包,在开发平台中引入该包即可快速构建一个新的网站。
系统设计时充分考虑了各个部门网站构建和管理的特点,遵循文件分布存放,数据集中存放的原则加以实现,使系统易于扩展,在部署时可以灵活地选择服务器,分布式的思想也易于日后网站的迁移和重新部署,其基于Java EE平台的实现也使得它能部署在各种不同的操作系统平台之上。通过一年多的使用和不断完善,分布式站群管理系统已经能充分适应高校部门网站的各种功能性要求,运行情况良好。
[1]BERGSTEN H著.JSP设计[M].林琪,朱涛江,译.北京:中国电力出版社,2004.
[2]施伯乐,丁宝康,汪卫.数据库系统教程[M].高等教育出版社,2005.
[3]高大力.关于高校二级网站建设、管理的探索与实践[J].西北工业大学学报(社会科学版),2004,24(2):82-84.
[4]沈俊.高校网站群的建设和方案浅谈[J].价值工程,2010(5):200-201.
[5]张猛.内容管理系统实现的关键技术[J].电脑开发与应用,2007(8):44-46.