设为首页 收藏本站
查看: 2155|回复: 0

[经验分享] Apache Velocity实现模板化

[复制链接]

尚未签到

发表于 2015-8-4 10:49:07 | 显示全部楼层 |阅读模式
1.参考文献
  http://www.iyunv.com/zhuboxingzbx/articles/1225103.html
  http://www.iyunv.com/amboyna/archive/2008/06/19/1225105.html

2.概述
2.1.Velocity模板引擎
  模板引擎的设计思想最早由Webmacro提出,并被应用在一个著名的搜索引擎www.altavista.com上。后来,这种思想渐渐被Apache开发小组所采用,并作为一个子项目被提出来,这就是现在的Velocity。
  模板引擎与MVC中视图部分的关系更为密切。Velocity可以应用在任何需要格式化数据显示的Java程序中。那么Velocity到底是什么呢?它的官方解释是:“Velocity是一种基于Java的模板引擎,它允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。”
  
2.2.使用Velocity的优点在于:

  • 很容易集成在各种各样的程序领域中;
  • 为网页制作人员提供了一种清晰而简单的语法;
  • 因为模板和代码是分离的,所以可以分别独立的开发和维护它们;
  • Velocity引擎可以很容易地集成到一些Java运行环境,特别是Servlet中;
  • Velocity使得模板可以访问任何环境对象中的共有方法。
Velocity的强大之处还在于它严格地区分程序开发功能的职责划分。它通过限制模板可能访问的对象(即后台程序允许其得到的对象)来实现这一点。这意味着网页设计人员可以只把精力放在数据的显示部分(View),而程序员则只要关注如何写好程序的控制层(Controller)、商业逻辑与数据管理(Model)。这就是典型的MVC开发模式,它简化了开发和日益复杂的应用和维护工作。
2.3.Velocity最擅长做的工作包括:

  • ◆ 基于Servlet的网站制作;
  • ◆ Java和SQL代码生成;
  • ◆ XML处理和转换;
  • ◆ 文字处理,比如生成trf文件等。
不过,Velocity用得最多的还是在基于Java Servlet的网页程序中做生成网页的引擎,以替代JSP等技术。除了使用比较容易外,它提供了强大的模板语言来显示和操作数据。注意,不是生成数据,这点很重要,因为生成工作应该是程序逻辑的部分。  
  Velocity非常适合在J2EE(Java 2 Platform,Enterprise Edition)的网站开发中替代JSP,做输出页面的技术工作。虽然JSP包含在J2EE规范中,但是J2EE本身并不需要JSP。

3.实例
3.1.实例1
  模板(hellosite.vm)只是提供一些静态的字符,中间加杂着一些类如$title的“通配符”,这是要在HelloWorld.java中替换的。下面是hellosite.vm的代码:
  
Hello $name! Welcome to $site world!  
  HelloWorld.java就是处理程序了,其中注释写的很清楚了,下面是HelloWorld.java的代码:

  
import java.io.StringWriter;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;public class HelloWorld {public static void main(String[] args) throws Exception {/* first, get and initialize an engine */VelocityEngine ve = new VelocityEngine();ve.init();/* next, get the Template */Template t = ve.getTemplate("hellosite.vm");/* create a context and add data */VelocityContext context = new VelocityContext();context.put("name", "xuwei");context.put("site", "http://blog.iyunv.com/xw13106209");/* now render the template into a StringWriter */StringWriter writer = new StringWriter();t.merge(context, writer);/* show the World */System.out.println(writer.toString());}}  
3.2.实例2
  这里模板和实例1的相同,java代码有所不如,代码如下。
import java.io.StringWriter;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;public class HelloWorld2 {public static void main(String[] args) throws Exception {// 初始化Velocity模板引擎VelocityEngine ve = new VelocityEngine();ve.init("D:\\Documents\\workspace\\VelocityTest\\a.properties");// Velocity获取模板文件,得到模板引用Template t = ve.getTemplate("hellosite.vm");// 初始化环境,并将数据放入环境VelocityContext context = new VelocityContext();context.put("name", "xuwei");context.put("site", "http://blog.iyunv.com/xw13106209");// 将环境变量和输出部分结合StringWriter writer = new StringWriter();t.merge(context, writer);System.out.println(writer.toString());}} 在这里,配置文件主要的作用就是提供a.properties文件的路径,不多说了,下面是a.properties的代码:
runtime.log = velocity_example.loginput.encoding=gbk  output.encoding=gbk  file.resource.loader.path=D:\\Documents\\workspace\\VelocityTest


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-94001-1-1.html 上篇帖子: apache官网怎样下载apache HTTP Server服务器 下篇帖子: apache启用gzip压缩方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表