- 浏览: 541259 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (339)
- JavaBase (27)
- J2EE (70)
- Database (22)
- Spring (3)
- struts1.x (6)
- struts2.x (16)
- Hibernate (10)
- IBatis (4)
- DWR (1)
- SSH (5)
- Oracle (31)
- HTML (12)
- javascript (11)
- Thinking (3)
- Workflow (5)
- Live (13)
- Linux (23)
- ExtJS (35)
- flex (10)
- php (3)
- Ant (10)
- ps (1)
- work (2)
- Test (1)
- Regular Expressions (2)
- HTTPServer (2)
- 方言 (1)
- 生活 (2)
- Sybase PowerDesigner (0)
最新评论
-
mikey_5:
非常感谢楼主的分享,<parameter propert ...
Check the output parameters (register output parameters failed) IN Ibatis -
影子_890314:
我现在也有这个错误,求解!
Check the output parameters (register output parameters failed) IN Ibatis -
358135071:
学习了,感谢分享!
使用hibernate 代替 mysql 中 limit 進行分頁 -
wjpiao:
你下面的“正确的映射”里面不是还是有number类型吗?
Check the output parameters (register output parameters failed) IN Ibatis -
zh_s_z:
很有用!弄一份吧!
Oracle数据库分区表操作方法
Velocity简介
原文引自:http://www.3doing.net/forums/dispbbs.asp?boardID=57&ID=593&page=1
Velocity
是一个开放源吗的模版引擎,由apache.org小组负责开发,现在最新的版本是Velocity1.3.1
http://jakarta.apache.org/velocity/index.html
可以了解Velocity的最新信息。
Velocity允许我们在模版中设定变量,然后在运行时,动态的将数据
插入到模版中,替换这些变量。
例如:
- <HTML
>
- <BODY>
- HELLO
$CUSTOMERNAME
- </BODY>
- </HTML >
我们可以在运行时得到客户的名
字,然后把它插入到这个模版中替换变量$CUSTOMERNAME,整个替换过程是由Velocity进行控制的,而且java的调用代码也非常简单
如
我们可以在java代码中这样调用
- //这个文件中设定了Velocity使用的log4j的配置和Velocity的模版文件所在的目录
- Velocity.init("D:\\Template\\resource\\jt.properties"
);
- //模版文件名,模版文件所在的路径在上一条语句中已经设置了
- Template
template =Velocity.getTemplate("hello.vm"
,
"gb2312"
);
- //实例化一个Context
- VelocityContext
context = new
VelocityContext();
- //把模版变量
的值设置到context中
- context.put("CUSTOMERNAME"
, "My First
Template Engine ---- Velocity."
);
- //开始模版的替换
- template.merge(context,
writer);
- //写到文件中
- PrintWriter
filewriter = new
PrintWriter
(new
FileOutputStream
(outpath),true
);
- filewriter.println(writer.toString());
- filewriter.close();
这就是整个java的
代码,非常的简单。如果我们有多个模版变量,我们仅需要把这些模版变量的值设置到context中。
下面我们简单的分析
一下,Velocity引擎读取模板文件时,它直接输出文件中所有的文本,但以$字符开头的除外,$符号标识着一个模版变量位
置,context.put("CUSTOMERNAME", "My First Template Engine ----
Velocity.");当Velocity模板引擎解析并输出模板的结果时,模板中所有出现$CUSTOMERNAME的地方都将插入客户的名字,即被
加入到VelocityContext的对象的toString()方法返回值将替代Velocity变量(模板中以$开头的变量)。
模
板引擎中最强大、使用最频繁的功能之一是它通过内建的映像
(Reflection)引擎查找对象信息的能力。这个映像引擎允许用一种方便的
Java“.”类似的操作符,提取任意加入到VelocityContext的对象的任何公用方法的值,或对象的任意数据成员。映像引擎还带来了另外一个
改进:快速引用JavaBean的属性。使用JavaBean属性的时候,我们可以忽略get方法和括号。请看下面这个模板的例子。
- <HTML
>
- <BODY>
- Name
: $Customer.Name
()
- Address: $Customer.Address()
- Age: $Customer.Age()
- </BODY>
- </HTML >
java的代码:
- //设置客户信
息
- Customer mycustomer = new
Customer();
- mycustomer.setName("Velocity"
);
- mycustomer.setAddress("jakarta.apache.org/velocity/index.html"
);
- mycustomer.setAge(2);
-
- //这个文件中设定了
Velocity使用的log4j的配置和Velocity的模版文件所在的目录
- Velocity.init("D:\\Template\\resource\\jt.properties"
);
- //模版文件名,模版文件所在的路径在上一条语句中已经设置了
- Template
template =Velocity.getTemplate("hello.vm"
,
"gb2312"
);
- //实例化一个Context
- VelocityContext
context = new
VelocityContext();
- //把模版变量
的值设置到context中
- context.put("Customer"
, mycustomer);
- //开始模版的替换
- template.merge(context,
writer);
- //写到文件中
- PrintWriter
filewriter = new
PrintWriter
(new
FileOutputStream
(outpath),true
);
- filewriter.println(writer.toString());
- filewriter.close();
输出结果:
- <HTML
>
- <BODY>
- Name
: Velocity
- Address: jakarta.apache.orgvelocityindex.html
- Age: 2
- </BODY>
- </HTML >
除
了替换变量之外,象Velocity高级引擎还能做其他许多事情,它们有用来比较和迭代的内建指令,通过这些指令我们可以完成程序语言中的条件判断语句和
循环语句等
例如,我们想要输出年龄等于2的所有客户的信息,我们可以这样定义我们的模版
模版:
- <HTML
>
- <BODY>
- <table>
- <tr>
- <td>
名称</td><td>地址</td><td>年龄</td>
- </tr>
- #foreach ($Customer in $allCustomer)
- #if
($Customer.Age()=="2"
)
- <tr>
- <td>$Customer.Name
()</td>
- <td>$Customer.Address()</td>
- <td>$Customer.Age()</td>
- </tr>
- #end
- #end
- </table>
- </BODY>
- </HTML >
java的代
码:
- //设置客户信息
- ArrayList
allMyCustomer = new
ArrayList
();
-
- //客户1
- Customer
mycustomer1 = new
Customer();
- mycustomer1.setName("Velocity"
);
- mycustomer1.setAddress("jakarta.apache.org/velocity/index.html"
);
- mycustomer1.setAge(2);
-
- //客户2
- Customer
mycustomer2 = new
Customer();
- mycustomer2.setName("Tomcat"
);
- mycustomer2.setAddress("jakarta.apache.org/tomcat/index.html"
);
- mycustomer2.setAge(3);
-
- //客户3
- Customer
mycustomer3 = new
Customer();
- mycustomer3.setName("Log4J"
);
- mycustomer3.setAddress("jakarta.apache.org/log4j/docs/index.html"
);
- mycustomer3.setAge(2);
-
- //添加到
allMyCustomer(ArrayList)中.
- allMyCustomer.add(mycustomer1);
- allMyCustomer.add(mycustomer2);
- allMyCustomer.add(mycustomer3);
-
- //这个文件中设定了
Velocity使用的log4j的配置和Velocity的模版文件所在的目录
- Velocity.init("D:\\Template\\resource\\jt.properties"
);
- //模版文件名,模版文件所在的路径在上一条语句中已经设置了
- Template
template =Velocity.getTemplate("hello.vm"
,
"gb2312"
);
- //实例化一个Context
- VelocityContext
context = new
VelocityContext();
- /**
-
* 注意这里我们仅仅需要给一个模版变量负值
-
*/
- context.put("allCustomer"
,
allMyCustomer);
- //开始模版的替换
- template.merge(context,
writer);
- //写到文件中
- PrintWriter
filewriter = new
PrintWriter
(new
FileOutputStream
(outpath),true
);
- filewriter.println(writer.toString());
- filewriter.close();
结果:
- <HTML
>
- <BODY>
- <table>
- <tr>
- <td>
名称</td><td>地址</td><td>年龄</td>
- </tr>
- <tr>
- <td>Velocity</td>
- <td>jakarta.apache.orgvelocityindex.html</td>
- <td>2</td>
- </tr>
- <tr>
- <td>Log4J</td>
- <td>jakarta.apache.orglog4jdocsindex.html</td>
- <td>2</td>
- </tr>
- </table>
- </BODY>
- </HTML >
#IF
语句完成逻辑判断,这个我想不用多说了。
allCustomer对象包含零个或者多个Customer对象。由于
ArrayList(List,HashMap,HashTable,Iterator,Vector等)属于Java Collections
Framework的一部分,我们可以用#foreach指令迭代其内容。我们不用担心如何定型对象的类型——映像引擎会为我们完成这个任
务。#foreach指令的一般格式是“#foreach in
”。#foreach指令迭代list,把list中的每个元素放入item参数,然后解析#foreach块内的内容。对于list内的每个元
素,#foreach块的内容都会重复解析一次。从效果上看,它相当于告诉模板引擎说:“把list中的每一个元素依次放入item变量,每次放入一个元
素,输出一次#foreach块的内容”。
MVC设计模型:
使用模板引擎最大的好处在于,它分离了代码
(或程序逻辑)和表现(输出)。由于这种分离,你可以修改程序逻辑而不必担心邮件消息本身;类似地,你(或公关部门的职员)可以在不重新编译程序的情况
下,重新编写客户列表。 实际上,我们分离了系统的数据模式(Data
Model,即提供数据的类)、控制器(Controller,即客户列表程序)以及视图(View,即模板)。这种三层体系称为Model-View-
Controller模型(MVC)。如果遵从MVC模型,代码分成三个截然不同的层,简化了软件开发过程中所有相关人员的工作。
结合模板引擎使用的数据模式可以是任何Java对象,最好是使用Java Collection
Framework的对象。控制器只要了解模板的环境(如VelocityContext),一般这种环境都很容易使用。一些关系数据库的“对象-关系”
映射工具能够和模板引擎很好地协同,简化JDBC操作;对于EJB,情形也类似。
模板引擎与MVC中视图这一部分的关系更为密切。模板语言的功能很丰富、强大,足以处理所有必需的视图功能,同时它往往很简单,不熟悉编程的人也可以使用
它。模板语言不仅使得设计者从过于复杂的编程环境中解脱出来,而且它保护了系统,避免了有意或无意带来危险的代码。例如,模板的编写者不可能编写出导致无
限循环的代码,或侵占大量内存的代码。不要轻估这些安全机制的价值;大多数模板编写者不懂得编程,从长远来看,避免他们接触复杂的编程环境相当于节省了你
自己的时间。
许多模板引擎的用户相信,在采用模板引擎的方案中,控制器部分和视图部分的明确分离,再加上模板引擎固有的安全机制,使得模板引擎足以成为其他内容发布系
统(比如JSP)的替代方案。因此,Java模板引擎最常见的用途是替代JSP也就不足为奇了。
HTML处理 :
由于
人们总是看重模板引擎用来替换JSP的作用,有时他们会忘记模板还有更广泛的用途。到目前为止,模板引擎最常见的用途是处理HTML
Web内容。但我还用模板引擎生成过SQL、email、XML甚至Java源代码。
发表评论
-
Moto官方GMS谷歌服务套件For XT800+下载和使用教程
2011-05-21 22:03 3980MOTOXT800+ ANDROID ROM address: ... -
barcode4j
2011-05-14 17:34 969project net address: htt ... -
org.logicalcobwebs.proxool 连接池异常
2011-05-09 10:02 76782011/05/09 09:59:44:695 ERROR [ ... -
Spring JDBC 调用 procedure
2011-03-25 16:12 1331import java.sql.CallableStateme ... -
JDBC Call MySQL Proc
2011-03-25 15:10 1017MySQL PROC : ------------- ... -
Axis 开发WebService
2011-03-14 16:11 888net address : http://blog.cs ... -
java 内存查看软件_Jprofiler
2011-03-04 14:34 888java 内存查看软件(Eclipse plugin): ... -
了解 Eclipse 插件如何使用 OSGi
2011-02-18 09:39 971http://www.ibm.com/developerwor ... -
tomcat out of Memory error
2011-01-28 17:03 1021net address: http://www.iteye.c ... -
bak_
2010-12-30 17:48 806weblog address: http://kenwubl ... -
jsp tag page plugin
2010-12-09 15:31 892jsp tag page plugin: http://ww ... -
page cache set
2010-12-02 17:03 836response.setHeader("Ca ... -
properties file editor
2010-11-28 14:26 873net address(多种语言在同一个表格中,容易排除遗漏属 ... -
判断浏览器的语言
2010-11-26 17:43 854*.jsp page : <% Lan ... -
属性文件编辑器
2010-11-26 14:43 947在此想和大家分享一个不错的编写properties文件的Ecl ... -
google-api-translate-java
2010-11-14 17:51 803// http://code.google.com/p/go ... -
regex in java
2010-11-14 16:06 903Pattern类: 例子: Pat ... -
EHCache 配置详解
2010-10-13 17:22 10548EHCache 是一个纯java 的在进程中的缓存 ... -
displaytag jsp paging tag
2010-10-13 10:04 863displaytag :jsp paging tag ... -
Spring_Recipes code
2010-09-29 23:47 703code source: http://www.apress ...
相关推荐
### Velocity简介与精确解析 **Velocity**是一种基于Java的模板引擎,主要用于动态页面的生成,尤其是在Web应用开发中。它允许开发人员将业务逻辑与显示层分离,使得代码更加清晰和易于维护。Velocity通过简单的...
### jsp、freemarker、velocity简介和对比 在Java Web开发领域,模板引擎是连接后端业务逻辑与前端展示层的重要桥梁。本文将重点介绍三种常用的Java Web模板引擎:JSP(Java Server Pages)、Freemarker以及...
**Velocity简介** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态网站内容。Velocity被设计成一个轻量级的、快速的、非侵入式的模板语言,使得开发者能够将HTML页面的展示...
l velocity 简介 l 快速入门 l vtl 模板语法 l 代码生成器案例 第二部分 : velocity tools 高级进阶 l velocity tools 介绍 l GenericTools使用 l Velocity View 使用 l 自定义tools工具类 l springmvc整合...
Velocity简介 Velocity是由Apache软件基金会开发的一个开源项目,它最初设计用于生成静态网站内容,但后来被广泛应用于各种Java应用中,如电子邮件模板、报告生成、XML文档构建等。Velocity的核心理念是“分离展示...
** Velocity简介 ** Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎,主要用在Web应用中生成动态内容。Velocity通过简单的语法,将业务逻辑与表现层分离,使得开发者可以专注于业务逻辑...
**Velocity简介** Velocity是一款开源的Java模板引擎,它允许开发者将HTML页面的呈现逻辑与业务逻辑分离,使得网页设计人员可以专注于页面的布局和样式,而程序员则专注于编写应用程序的后端逻辑。Velocity由Apache...
** Velocity简介 ** Velocity作为Apache软件基金会的一个开源项目,是一个用于生成动态Web内容的模板引擎。它的设计目标是使开发者可以专注于内容,而不是HTML布局。Velocity模板语言(VTL)简单易用,支持条件语句...
** Velocity简介 ** Velocity是一个强大的模板引擎,它的设计目标是使开发者能够专注于内容和结构,而不是HTML或其他标记语言的细节。通过Velocity,程序员可以在模板中引用Java对象,模板则负责将这些对象的属性...
#### 一、Velocity简介与应用场景 Velocity是一种基于Java的模板引擎,其主要作用在于简化Web应用程序的开发过程。该工具能够帮助前端开发者轻松地引用后端Java代码中定义的方法,实现前后端开发的并行化,提高了...
# Velocity简介及简单示例 Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎,主要用于生成动态Web内容。Velocity通过简单的语法和强大的数据整合能力,使得开发者能够将注意力集中在数据...
#### 一、Velocity简介与环境搭建 **Velocity**是一种基于Java的模板引擎,用于生成动态HTML页面或其他文本格式的文档。它提供了一种简单而强大的方式来分离业务逻辑与显示逻辑,使得开发者能够更专注于业务处理,...
**Velocity简介** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态Web内容。Velocity通过将内容展示与业务逻辑分离,帮助开发者专注于内容的编写,而无需关心HTML或者其他...
一、Velocity简介 Velocity是一个Java模板引擎,它的设计目标是将呈现逻辑从应用业务逻辑中分离出来。通过使用简单的语法, Velocity允许开发者在HTML、XML或其他类型的文档中插入Java代码,使得模板和业务逻辑解耦...
#### 一、Apache Velocity简介 Apache Velocity 是一款基于 Java 的模板引擎,由 Apache 软件基金会维护和支持。它主要应用于 Web 应用开发领域,用于实现视图层(View Layer)的逻辑处理。通过 Velocity,开发者...
**Velocity简介** Velocity是一款强大的Java模板引擎,由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。它旨在将呈现逻辑从应用程序代码中分离出来,使开发者可以专注于业务逻辑,而设计师则可以专注...
**一、Velocity简介** Velocity的核心概念是模板语言,它通过特殊的指令(称为Velocity模板语言,VTL)来控制内容的生成。VTL是设计用来嵌入到HTML或其他类型的文档中的,这样就可以在运行时根据数据动态生成文档。...