`
bit1129
  • 浏览: 1070063 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Velocity五】Velocity模板引擎

 
阅读更多

 脱离Servlet容器使用Velocity

 

package com.tom.velocity;

import java.io.InputStream;
import java.io.StringWriter;
import java.util.Properties;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class HelloVelocity {
    public static void main(String[] args) throws Exception {

        //实例化并初始化Velocity模板引擎
        VelocityEngine ve = new VelocityEngine();
        Properties p = new Properties();
        InputStream in  = HelloVelocity.class.getClassLoader().getResourceAsStream("velocity.properties");
        p.load(in);
        ve.init(p);

        //从指定目录下加载自定的vm文件
        Template t = ve.getTemplate("vm/hello.vm");

        //创建Velocity上下文环境,用于在vm和Java传值
        VelocityContext context = new VelocityContext();
        context.put("name", "tom");
        context.put("job", "code-farmer");

        //将模板序列化为字符串文档,进行打印
        StringWriter writer = new StringWriter();
        t.merge(context, writer);

        //将模板引擎解析的结果打印输出
        System.out.println(writer.toString());

        //输出
        /*
         <p>name: tom</p>
         <p>job: code-farmer</p>
         */
    }
}

 

velocity.properties文件

 存放在classpath根目录下,内容:

resource.loader=class

#Why ClasspathResourceLoader search the vm in the root directory of classpath
#This means, <class.resource.loader.path> doesn't take effect
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader

class.resource.loader.path=vm

 

 hello.vm文件

  存放在{classpath根目录}/vm目录下。

 

<p>name: $name</p>
<p>job: $job</p>

 

Velocity解析过程

t.merge(context, writer);

这个方法用于将模板t使用context中的key/value进行解析,然后通过writer将解析结果返回来。

在解析的时候,Template根据vm文件中的指令,变量等,切分为多个Node,每个Node根据其类型采用不同的策略进行,如下是常见的Node类型对应的Java类



 上图是Node类的实现,比如ASTSetDirective用于解析#set指定,ASTText是不包含模板标记的普通文本

 

 

 上图右边是SimpleNode实现类列表

 

问题:

在velocity.properties文件中指定了从Classpath加载vm资源,同时指定加载的目录是classpath下的vm目录(通过class.resource.loader.path=vm指定),为什么在Java代码需要指定vm/hello.vm,不是hello.vm来加载资源(Template t = ve.getTemplate("vm/hello.vm");)

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 34.6 KB
  • 大小: 34.1 KB
分享到:
评论

相关推荐

    Velocity模板引擎Velocity模板引擎

    Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎

    velocity开发包vm模板引擎

    Velocity是一款强大的Java模板引擎,由Apache软件基金会开发并维护,它是Apache Jakarta项目的一部分。 Velocity的主要设计目标是将表现层逻辑从应用逻辑中分离出来,使开发者可以专注于业务逻辑的实现,而无需关心...

    JavaScript模板引擎Velocity.js.zip

    Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和函数等功能。Velocity.js 支持 Node.js 和浏览器环境。...

    SpringBoot Velocity 代码生成模板

    在Spring Boot项目中,利用Velocity模板引擎,我们可以创建一系列模板文件,如Mapper、Mapper.xml、Service和Controller等,这些模板在运行时会根据数据库中的表结构动态生成对应的Java源码。这不仅避免了手动编写...

    Velocity--java的模板引擎

    **Velocity——Java的模板引擎** Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎,专门用于生成动态Web内容。Velocity的目标是将HTML、XML等模板语言与业务逻辑分离,使得开发者可以专注...

    Velocity模板引擎技术在Java Web中的应用.pdf

    "Velocity模板引擎技术在Java Web中的应用" Velocity模板引擎技术是Java Web开发中的一种重要技术,旨在解决Java Web页面视图和业务逻辑的耦合问题。通过使用Velocity模板引擎技术,可以将Java Web页面视图和业务...

    velocity模板引擎

    Velocity模板引擎为Java Web开发提供了强大且灵活的功能支持。通过上述知识点的学习,我们可以了解到Velocity的基本用法,包括变量定义、循环、条件判断、格式化、国际化支持等方面的内容。这些知识点是使用Velocity...

    velocity实现邮件模板定制

    在IT行业中,Velocity是一个强大的模板引擎,常用于生成动态内容,比如HTML页面、电子邮件模板定制等。本篇文章将深入探讨如何使用Velocity实现邮件模板的定制,以及与之相关的源码和工具。 首先,Velocity的基本...

    Java进阶教程Velocity快速掌握模板引擎视频

    本课程从velocity engine也就是velocity引擎开始, 先讲解velocity的基本使用以及基础语法 , 然后再讲解velocity 的进阶内容velocity Tools , 以及velocity作为web项目的视图改如何使用 , 每一部分都会有一个综合案例...

    Velocity_中文手册

    在实现具体的页面动态内容时,Velocity模板引擎会扫描整个页面,寻找所有的“#”字符,然后判断这些标记后面的部分是否是VTL语句。如果是,它就会执行相应的模板指令来生成最终的页面。Velocity模板引擎的这种工作...

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

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

    模板引擎 Velocity 官方最新版下载

    Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...

    Velocity模板技术语法详细介绍

    Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...

    Velocity模板语言介绍

    #### 五、Velocity模板语言(VTL)详解 - **基本语法**:VTL语法简单直观,易于学习。它允许在HTML代码中嵌入VTL语句,如`#set()`用于设置变量。 - **变量赋值**:通过`#set()`指令可以为变量赋值。例如,`#set($a=...

    Jsp结合Velocity实现依据Word模板文件生成对应数据文件

    JSP(JavaServer Pages)是用于构建动态Web应用的服务器端技术,而Velocity则是一个强大的模板引擎,它允许开发者将Java代码与HTML或Word模板无缝集成,从而实现动态内容的生成。 **JSP** 是一种基于Java的视图技术...

    Velocity文档中文版

    Velocity 是一个基于 Java 的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由 Java 代码定义的对象。 Velocity 的能力远不止 web 站点开发这个领域,例如,它可以从...

    Velocity模板解析

    3. **Velocity模板引擎配置** - 可以通过VelocityConfigurer类配置Velocity引擎,比如设置模板路径、编码格式、缓存策略等。 - `Velocity.init()`初始化引擎,`Velocity.evaluate()`或`Velocity.mergeTemplate()`...

    Velocity模板入门DEMO

    Velocity模板语言(Velocity Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...

Global site tag (gtag.js) - Google Analytics