FreeMarker改进并整合企业新闻发布的应用

来源 :网友世界 | 被引量 : 0次 | 上传用户:pgzwoaini1
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】众多企业都用Web发布新闻信息,新闻信息在绝大多数时候样式固定不变。FreeMarker是一个使用纯Java编写的模板引擎,能够基于模板动态和静态生成HTML网页.本文在企业应用中,利用FreeMarker模板技术为某企业进行新闻网页改造,改造方式分为Servlet动态生成新闻、后台生成静态Html新闻,在新闻消息的整合和企业版本升级优势上得到充分体现。
  【关键词】新闻发布;FreeMarker;版本升级;Java
  1.引言
  现在大部分企业或公司都要求有自己的网站,用来发布新闻信息展示公司自己的形象、宣传自己的产品、获取客户的反馈信息等。基于Web的系统由于前台页面经常需要改版,花费在维护界面改动上的成本越来越高[1,3]。经研究表明,这些网站的网页显示风格在一段时间内不会变化。如果将网站的显示风格抽象成固定模板,而网站的信息内容独立管理,这样网站的显示和数据可分开管理和设计。通过FreeMarker引擎可将信息按照对应的模板生成所需要的HTML页面。这样一个模板可以应用到多条信息的显示上,而同一条信息也可以通过不同模板生成不同的网页,从而可以大大提高信息内容网站的建设和升级[1]。下面以FreeMarker实现某企业新闻模块的改版升级为例,讲述FreeMarker的应用过程。
  2.Freemarker简介
  FreeMarker是基于Java的开发包和类库,一种基于模板的、用来生成输出文本的通用工具。它一开始就是为MVC设计的,不依赖于Servlet,网络或Web环境,仅仅专注于展示,且程序逻辑(Java程序)和页面设计(FreeMarker模板)分离,分层清晰、易于维护,利于分工合作,支持Struts2,Springmvc等主流Web框架的集成,简单易学、功能强大,免费开源。程序员可以将它嵌入到自己的项目中,实现MVC框架中的View层组件、Html页面静态化、代码生成工具、CMS模板引擎、页面栏目动态定制等。它可以从Servlet获取的数据来动态生成HTML代码,且编译速度非常快,与普通的HTML相比也毫不逊色[2],很多采用MVC模式的软件架构都使用FreeMarker来实现模板功能,支持从任意位置加载模板;从类路径下,从数据库中等,易于定义特设的宏和函数。它的核心原理是:数据模型+模版=输出[1]。
  3.新闻发布改进并整合的设计与实现
  在企业新闻的发布中,有一些新闻用户的访问量特别多,又有一些用户访问量比较少。针对这两种情况,程序设计人员怎么做呢?又怎么加以区分这两种新闻呢?文章给出具体步骤设计并实现。
  3.1 定义Html网页模板,并用FreeMarker对其进行编程
  3.1.1 手动制作html网页
  比如:制作topimgdowntext.htm,上方显示新闻的图片,下方显示新闻的文字,网页美工人员可以事先用html做好。效果图略。
  3.1.2 对模板进行编程
  另存topimgdowntext.htm网页为topimg-
  downtext.ftl后缀文件,用FreeMarKer语言对其进行编程,原则是只对需要变动的数据进行数据替换,比如这一种上方图片、下方文字新闻,在以后的新闻发布中会用很多次,那么需要替换的部分就是图片和文字,而新闻模板的样式是没有改变的。简单实例如下:替换img标签的${image1},p标签的${content}。更复杂的需要自己动手编程,对模板进行定义。
  3.1.3 设置模板专用库templates
  模板放于工程目录templates下,这个文件夹专用于存放各类型的网页模板,动态和静态方式都需要调用这个目录下的模板,设置文件夹的目的是为了方便工程管理。还可以自定义模板,导入到模板库,方便新闻发布者预览和调用,预览时候配合原模板的Html文件。
  3.2 整合并改进新闻发布
  通过对企业单位的分析,发现在实际的网站访问中,有一些新闻用户点击率相当的高,有一些新闻用户点击率不高,于是从服务器承受访问压力的角度来看,对于那些访问不高的新闻采取Servlet动态加载模板输出新闻网页来实现;对于那些访问量特别高的新闻采取新闻发布时,用模板技术,先在后台生成静态的Html新闻网页,并按日期、分类存放在服务器端(sina,sohu大多采取这种方式),当用户访问时候直接调用html静态网页就行了,这样可以减轻因服务器编译、执行带来性能上的压力。
  3.2.1 Servlet动态输出网页实现
  WEB-INF\web.xml中的配置
  
  Hello
  logic.freemaker.Hello
  

  
  Hello
  *.to
  

  说明:在配置Servlet的时候,servlet-name名字可以任意起名,url-pattern可以不用设置,这里设置成*.to为为了和项目中用到的Struts中的*.do格式统一,servlet-class是需要手动写的java代码。关键代码片段如下:
  Configuration cfg=new Configuration();
  cfg.
  setServletContextForTemplateLoading   (getServletContext(),SystemPara.templatesAddr);设置FreeMarker的模版文件位置
  Map root=new HashMap();建立数据模型
  root.put("content",News_Content);为新闻内容赋值;
  root.put("image1",ImgAddr+imgsName);为新闻图片赋值;
  数据库设计部分内容如下:
  字段说明:News_Content,专门存放新闻的文字,New_Src是新闻图片存放位置,News_Template在templates模板目录下,具体调用的模板名。这种方式下对软件版本的改版、升级和维护比较有利。因为新闻的内容始终保持在数据库或文件服务器里面,我们只需要对模板进行修改,又可以利用原来数据重新生成新的新闻网页,缺点就是需要用数据库存储新闻的内容和图片,需要对数据库进行设计。
  3.2.2 静态输出网页Html的实现
  定义后台输出html文件的java处理类
  本系统为例:java处理类的包名目录是:src\logic\freemaker\html。里面定义了四个常用新闻模板处理的java类:多图片新闻,文本新闻,上面图片、下面文字新闻和上面两张图片,下方文字的新闻。
  举例MutiImages.java多图片新闻生成为例,核心代码如下:
  Template temp=cfg.getTemplate(News_Template);加载模板,模板不同样式。
  Map root=new HashMap();
  root.put("title",Title);
  root.put("content",Content);
  root.put("imgslist",ImgAddr);
  Writerout=newOutputStreamWriter(new FileOutputStream(OutHtmlAddr),"GBK");
  News_Template变量为加载模板的变量,这里引用的是事先在模板库目录templates下定义好的模板。
  ImgAddr为List变量,然后再以文本输出流的形式,把文件输出到工程项目规定的地址,就完成静态网页的生成。
  3.3 新闻发布策略分析
  新闻网页的设计中,我们是选择采取servlet方式输出,还是先输出静态网页html文件,再提供给用户访问呢?这需要额外的设计一个策略选择器。第一步:开发人员可以对该单位进行初步的调研,对该模块新闻的发布预先定义两种模式中的一个。第二步,对新闻网页按日,按月等进行用户访问量的统计,同时对Web服务器的性能进行同步检测,对检测的结果记录下最高和最低的峰值和出现的时间点,然后和这期间的用户访问量做比对,对比对的结果,我们可以加权求一个相对的平均值,超过这个值的这类新闻就按照html静态生成网页形式来解析,提供给用户访问;低于这个值,也就是用户访问比较少的情况下,就采取servlet来访问。这样可以相对达到一个平衡。
  4.总结
  本文用FreeMarKer模板引擎技术,对某单位的新闻发布系统进行了改造和整合。在这过程中,详细的把开发技术和流程做了介绍。通过实践表明,FreeMarKer模板技术配合servlet动态和后台静态输出html两种方式可以快速对网站的新闻版块进行升级改造,大大缩短人力和财力。
  参考文献:
  [1]屈建明,陈洁.FreeMarker模板引擎动态生成网页的应用研究[J].计算机与现代化,2011(3).
  [2]卞坤.公务员在线学习系统的设计与实现[J].大连理工大学,2012,6:6-7.
  [3]张铁头,刘磊.基于模板的WEB视图层生成技术[J].数字技术与应用,2012.
  [4]李宁.JavaWeb开发技术大全[M].北京:清华大学出版社,2009.
  [5]http://sourceforge.net/projects/freemarker/files/chinese-manual/FreeMarker_Manual_zh_CN.pdf.
其他文献
川芎嗪(ligustrazine)是中药川芎的有效成分之一,属酰胺类生物碱(amide alkaloid),化学结构为四甲基吡嗪(tetramethylpyrazine, TMP).60年代初,Kosuqe等曾从枯草杆菌(bacillu
【摘 要】从网络安全的角度出发,对有关入侵监测的概念,入侵监测的目的,入侵监测的系统功能构成,入侵监测的分类,基于网络和基于主机的两种入侵检测技术做了详细论述,最后基于现状来谈谈对未来入侵监测系统的发展方向的看法。  【关键词】网络安全;入侵检测;技术  随着互联网使用在我们日常工作生活中的使用日益频繁以及相关网络技术的飞速发展,网络入侵技术已经得到了相当程度的普及,越来越多的人使用黑客工具对网络
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
一台徐工产YZ18S型振动压路机,施工过程中突然出现无振动。经检测,振动电磁阀开闭正常,振动马达也无故障。拆除振动泵并清洗干净后发现,泵轴上的花键及与其啮合的齿套内花键
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
晚期癌症患者,气虚血瘀证较多,为研究益气活血法对肿瘤患者的治疗效果,我们在以往工作的基础上,研制了益气消(徵)冲剂,并进一步探讨益气消(徵)冲剂配合化疗治疗晚期恶性肿瘤
工程机械修理用的水气混喷式清洗机,由电动机、清洗箱、清洗筐、水气混合喷头及电气控制等部分组成。电动机驱动清洗筐在清洗箱内旋转,高压泵出水在喷头处与空气混合成水气流
沥青混凝土摊铺机是沥青路面铺筑施工中的主导机械,其性能的优劣直接影响路面铺筑的质量。然而,即使性能较好的沥青混凝土摊铺机在自动找平系统有故障的情况下,也会造成各种
一台3LAW16/3.5型活塞式空压机水平活塞缸突然出现填料密封失效,曲轴箱润滑油随活塞杆往复运动向外喷油,严重时喷油量达到125 g/h。出现故障以后,维修人员误以为是填料密封环