`
fantasy
  • 浏览: 517560 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Velocity-初体验

    博客分类:
  • web
 
阅读更多

Velocity是什么

Velocity是一个基于java的模板引擎,类似与Freemarker。

为啥要用模板引擎

  • 模板引擎的速度要比jsp快,因为JSP需要编译成servlet。
  • 将数据(Date)和模板(View)分离,让不同的角色只关注自己的部分。

Velocity和Freemarker的比较

  • 功能上:FreeMarker的功能比Velocity多,是Velocity的超集。
  • 使用上:Velocity更加简单和轻量级。

Velocity Template Language (VTL)

基本原则:使用$字符开始的用于得到什么;使用#字符开始的用于作些什么。如下
a) 变量:#set( $foo = "gibbous" ) $moon = $foo
b) 属性:$customer.Address
c) 方法:$customer.getAddress()
注意感叹号!:用来强制把不存在的变量显示为空白,所以强烈建议加上!,如$!message。在Freemarker里也建议这样。
其他的在使用中可以参考文档Velocity学习指南.doc

Velocity的工作原理

三步了解Velocity的大致原理。

 
import java.io.StringWriter; 
import org.apache.velocity.VelocityContext; 
import org.apache.velocity.Template; 
import org.apache.velocity.app.Velocity; 
import org.apache.velocity.exception.ResourceNotFoundException; 
import org.apache.velocity.exception.ParseErrorException; 
import org.apache.velocity.exception.MethodInvocationException; 
  
Velocity.init(); 
//1:构建一个上下文,用来存放数据(date)。 
VelocityContext context = new VelocityContext(); 
context.put( "name", new String("Velocity") ); 
Template template = null; 
try
{ 
   //2:读取模板(View) 
   template = Velocity.getTemplate("mytemplate.vm"); 
} 
catch( ResourceNotFoundException rnfe ) 
{ 
   // couldn't find the template 
} 
catch( ParseErrorException pee ) 
{ 
  // syntax error: problem parsing the template 
} 
catch( MethodInvocationException mie ) 
{ 
  // something invoked in the template 
  // threw an exception 
} 
catch( Exception e ) 
{} 
  
StringWriter sw = new StringWriter(); 
//3:组合(control)数据和模板,最后写到sw里,sw即最终数据。 
template.merge( context, sw ); 

  

我觉得Velocity是由上至下逐行扫描模板,当扫描到占位符(如$和#)的时候,通过JAVA的反射机制(或者cglib直接生成字节码)调用JAVA的属性和方法,生成最终数据。

学习资料

官方网址:http://velocity.apache.org/engine/releases/velocity-1.7/

分享到:
评论

相关推荐

    Java的模板引擎Velocity初体验.pdf

    Velocity 模板引擎初体验 Velocity 是一种 Java 模板引擎技术,由 Apache 提出,是一种基于 Java 的模板引擎,允许任何人使用简单而强大的模板语言来引用定义在 Java 代码中的对象。Velocity 的主要功能是桥梁 ...

    JAVA的Velocity语法学习

    提供的《Velocity_java开发指南》和《Java的模板引擎Velocity初体验》两本书籍是学习Velocity的好资料。它们会详细介绍Velocity的使用方法、语法特性以及最佳实践,对于初学者来说非常有帮助。同时,Apache官网也有...

    Velocity 模版

    在实际项目中,`Java的模板引擎Velocity初体验.doc` 可能包含了初学者如何快速上手 Velocity 的步骤和常见问题。而 `Velocity2.ppt` 很可能是一个详细的 Velocity 进阶教程,涵盖了高级特性如宏、自定义工具类的使用...

    Struts 2初体验

    **Struts 2初体验** Struts 2是一款强大的基于MVC(Model-View-Controller)设计模式的Java Web框架,它旨在简化企业级应用程序的开发。作为一个初学者,了解并掌握Struts 2的基本概念和操作流程是至关重要的。 **...

    velocity:我在 Velocity EU 的演示项目

    2. **资源管理**:如何有效地缓存资源,避免不必要的网络请求,以及使用 Service Worker 提升离线体验。 3. **性能预算**:如何设置并遵守性能预算,确保项目的性能不会随着功能的增加而退化。 4. **前端架构**:...

    加入购物车动画,抛物线

    在安卓应用开发中,用户体验是至关重要的因素之一,而动态效果则是提升用户体验的重要手段。"加入购物车动画,抛物线"这个主题聚焦于安卓商城应用中的一个具体功能:商品被添加到购物车时的动画效果。这个动画通过...

    SSH相关整合的总要资料

    在实际开发中,例如ACCP5.0技术讲座中提到的SSH初体验,开发者可以在Eclipse或MyEclipse这样的集成开发环境中,通过图形化工具快速搭建SSH框架。首先,创建一个Web工程,然后添加Spring框架,并配置相关数据源和...

    【cocos creater】7.仿《弓箭传说》- 控制主角朝向敌人.rar

    - 计算箭矢的初速度和方向,将其应用到箭矢的加速度(acceleration)或速度(velocity)属性上。 - 添加碰撞检测,当箭矢与敌人碰撞时,触发伤害计算。 5. **优化与细节** - 考虑到游戏体验,可能需要添加缓动...

    让Struts 1焕发青春----小议对Struts的改造.

    Struts 1是一款经典的Java Web框架,它在20世纪末至21世纪初的Web开发领域占据着重要地位。然而,随着技术的发展,Struts 1逐渐暴露出一些局限性,例如性能瓶颈、安全问题以及对现代开发模式的支持不足等。面对这些...

    webwork in actin(英文电子版)

    WebWork是一个轻量级、基于MVC(Model-View-Controller)设计模式的框架,它在2000年代初非常流行,尤其在Java社区中。本书旨在帮助开发者理解和掌握WebWork框架的核心概念和技术,以便更高效地构建动态的、交互式的...

    船舶智能制造的背景及内涵-大数据.pptx

    2. **高速(Velocity)**:数据产生和变化的速度极快,要求实时或近实时处理。 3. **多样(Variety)**:数据来源广泛,类型多样,包括结构化、半结构化和非结构化数据。 4. **价值(Value)**:虽然数据密度相对较...

    大数据时代演讲PPT资源共享

    21世纪初,伴随着互联网、移动互联网、物联网等技术的发展,数据的生产和传播速度飞速提升,催生了大数据时代的到来。 【大数据的特征】 大数据的主要特征包括三个V:Volume(大量)、Velocity(高速)、Variety...

    一个完整的coffee销售系统

    咖啡销售系统,作为一个全面的业务管理系统,对于初入Java开发领域的从业者来说,是极好的学习和实践平台。它涵盖了从需求分析、系统设计、编码实现到测试上线的全过程,帮助开发者深入理解软件工程的各个环节,提升...

    阿里大数据架构

    在阿里巴巴网站建立之初,技术栈相对原始,主要使用Perl、CGI等技术来搭建网站。由于当时的技术限制,网站的服务器位于美国,并且网络连接速度仅为56K Modem,这极大地限制了网站的性能和可用性。此外,网站的开发、...

    Confetti FX.rar

    Confetti通常会向上飘扬然后缓慢下降,因此需要设置初速度向上的值,同时可以设置衰减使其速度逐渐降低。 4. Color Over Lifetime模块:定义粒子颜色随时间的变化。为了增加视觉吸引力,我们可以让Confetti在飞行...

    大数据概念技术与应用.pptx

    3. **大数据应用**:大数据已广泛应用于各个领域,如金融分析预测市场趋势,医疗健康领域挖掘疾病模式,交通管理优化城市交通,以及广告推荐系统个性化用户体验等。 大数据的应用带来了新的机遇,如商业模式创新、...

    [详细完整版]大数据概述.doc

    大数据,作为一个在21世纪初崭露头角的概念,已经成为信息技术领域的核心话题。这一概念的出现,源于信息量的急剧增加以及处理这些海量信息需求的不断攀升。半个世纪以来,计算机技术的快速发展使得数据的生成和积累...

    Projectdemo.rar

    抛物线是物理学中一个经典的运动轨迹,由物体在重力作用下的垂直下落和初速度决定。在游戏开发中,模拟抛物线运动通常用于物体投掷、射击或其他基于物理的交互。在UE4中,我们可以通过蓝图来构建这个复杂的运动模型...

    struts2.0入门

    9. **插件体系**:Struts2具有丰富的插件库,如Freemarker、Velocity视图技术,Hibernate、iBatis持久层框架等,可以无缝集成,扩展框架功能。 10. **Ajax支持**:Struts2提供了Ajax插件,使开发者能够轻松实现页面...

Global site tag (gtag.js) - Google Analytics