### Velocity 总结 #### 一、Velocity 引言及特点 Velocity 是一款基于 Java 的模板引擎,它的主要特点是能够直接操作 Java 对象,从而帮助开发者实现 Java 业务逻辑与前端展示层的有效分离。这种特性使得 Velocity 成为了继 JSP 和 PHP 之后的一种流行的选择。此外,Velocity 生成的静态页面还可以与其他工具和技术(如 Dreamweaver)结合使用,增加了其灵活性和适用范围。 #### 二、Velocity 基础语法详解 ##### 2.1 Velocity 标记符号详解 - **“#”号的使用**:“#”号用于标识 Velocity 脚本中的各种语句,包括但不限于条件语句(`#if`, `#else`, `#end`)、循环语句(`#foreach`, `#end`)、宏定义(`#macro`, `#end`)以及包含(`#include`, `#parse`)等。 - **“$”号的使用**:“$”号用于标识一个对象或变量。例如 `$i`、`$msg` 或 `$TagUtil.options()` 等。 - **“{}”号的使用**:“{}”号用于明确标识一个变量。如果需要在变量后紧跟字符串,但 Velocity 默认将整个序列视为变量,则可以使用此符号来明确指定。例如,在页面中有 `$someonename`,若希望后面紧跟字符串 "name",则应写成 `${someone}name`。 - **“!”号的使用**:“!”号用于强制将未定义的变量显示为空。例如,页面中包含 `$msg`,若 `$msg` 未被定义,则页面将显示 `$msg`;通过使用 `$!msg`,即使 `$msg` 未被定义,页面也不会显示任何内容。 - **双引号与单引号**:`"`与`'`的区别在于,使用双引号时,其中的变量会被解析并替换;而使用单引号时,变量名将被原样输出。 - **注释**:`#` 为单行注释,`#**#` 为多行注释。 ##### 2.2 Velocity 命令语句详解 - **判断语句**:使用 `#if`、`#else` 和 `#end` 进行条件判断。 - **循环语句**:使用 `#foreach` 和 `#end` 来遍历集合或数组。 - **宏定义**:使用 `#macro` 和 `#end` 定义可重用的代码块,并使用 `#d()` 来调用宏。 - **包含语句**:`#include` 和 `#parse` 用于包含其他模板文件。`#include` 直接将文件内容插入当前模板中,而 `#parse` 会解析包含文件中的 Velocity 标签。 - **变量赋值**:`#set` 指令用于定义一个变量并为其赋值。 - **属性访问**:如 `$user.name` 可以理解为访问 `$user` 对象的 `name` 属性,也可以理解为调用 `$user.getName()` 方法。 #### 三、Velocity 工作模式 Velocity 提供了两种工作模式:Singleton 模式和 SeperateInstance 模式。 ##### 3.1 Singleton 模式 - **初始化 Velocity**:在 JVM 或 Web 应用中仅存在一个 Velocity 引擎实例,所有应用共享该实例。通过 `org.apache.velocity.app.Velocity` 类来获取这个单例。 - **示例代码**: ```java Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM, this); Velocity.init(); // 初始化运行时 Template t = Velocity.getTemplate("foo.vm"); ``` ##### 3.2 SeperateInstance 模式 - **创建多个 Velocity 实例**:可以在同一 JVM 或 Web 应用中创建和配置任意数量的 Velocity 实例。通过 `org.apache.velocity.app.VelocityEngine` 类来使用分离的实例。 - **示例代码**: ```java VelocityEngine ve = new VelocityEngine(); ve.setProperty(VelocityEngine.RUNTIME_LOG_LOGSYSTEM, this); ve.init(); Template t = ve.getTemplate("foo.vm"); ``` #### 四、Velocity 使用示例 下面给出一个简单的 Velocity 模板示例: ```html <html> <body> #set($this="Velocity") $this is great! #foreach($num in $nums) Number: $num #end </body> </html> ``` 在此示例中,我们首先设置了一个变量 `$this` 并输出了 "Velocity is great!"。然后通过 `#foreach` 循环遍历一个数字列表,并输出每个数字。 通过以上介绍,我们可以看出 Velocity 提供了一种简单而强大的模板解决方案,能够有效提升开发效率,尤其是在 MVC 架构中实现了业务逻辑与视图层的良好分离。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助