1》:以html模板为例:
File file = null;
file = new File(path+"/template/member_email.html");
if(file != null){
InputStream in = new FileInputStream(file);
java.io.BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
String currentLine;
while((currentLine = breader.readLine()) != null){
htmlCode.append(currentLine);
}
in.close();
}
return htmlCode.toString();
2》:
Velocity.init();
VelocityContext context = new VelocityContext();
context.put("custName", bean.getCustName() != null?bean.getCustName():"");
context.put("nickName", bean.getNickName() != null?bean.getNickName():"");
context.put("address", bean.getAddress()!=null?bean.getAddress():"");//地址
context.put("call", bean.getCall()!=null?bean.getCall():"");//称谓
context.put("imageUrl", bean.getImageUrl()!=null?bean.getImageUrl():"");//图片路径
context.put("goodsName",bean.getGoodsName()!=null?bean.getGoodsName():"");//商品名称
StringWriter w = new StringWriter();
Velocity.evaluate(context, w, "", body);
body = w.toString();
return body;
3》:vm模板文件的内容为:
<td><font style="font-size: 14px; font-family: '微软雅黑'; font-weight: bold; color: #333;">亲爱的<font style="margin: 0 5px; color: #fb6104;">$nickName</font>:</font></td>
4》:以vm为例子测试
public static void main(String args[]) throws Exception{
File templateFile = new File("template_velocity.vm");
if(templateFile.exists()){
templateFile.delete();
}
templateFile.createNewFile();
FileWriter fw=new FileWriter("template_velocity.vm");
fw.write("We are using $date $name to render this.");
fw.close();
//初始化并取得Velocity引擎
VelocityEngine ve = new VelocityEngine();
ve.init();
//取得velocity的模版
Template t = ve.getTemplate("template_velocity.vm");
//取得velocity的上下文context
VelocityContext context = new VelocityContext();
//把数据填入上下文
context.put("name", "Liang");
context.put("date", DateUtils.getNow());
//为后面的展示,提前输入List数值
List temp = new ArrayList();
temp.add("1");
temp.add("2");
context.put("list", temp);
//输出流
StringWriter writer = new StringWriter();
//转换输出
t.merge(context, writer);
System.out.println(writer.toString());
}
任何Velocity的应用都包括模板制作和程序部分两个方面。按照惯例,采用HelloWorld来作为第一个程序的示例。
1. 模板制作模板示例hellosite.vm的内容如下(虽然其不是以HTML为主,但很容易改成一个HTML的页面):
Hello $name! Welcome to $site world!
2.Java程序部分
下面是Java代码:
1.import java.io.StringWriter;
2. import org.apache.velocity.app.VelocityEngine;
3. import org.apache.velocity.Template;
4. import org.apache.velocity.VelocityContext;
5. public class HelloWorld
6. {
7. public static void main( String[] args )
8. throws Exception
9. {
10. /* first, get and initialize an engine */
11. VelocityEngine ve = new VelocityEngine();
12. ve.init();
13. /* next, get the Template */
14. Template t = ve.getTemplate( "hellosite.vm" );
15. /* create a context and add data */
16. VelocityContext context = new VelocityContext();
17. context.put("name", "Eiffel Qiu");
18. context.put("site", "http://www.eiffelqiu.com");
19. /* now render the template into a StringWriter */
20. StringWriter writer = new StringWriter();
21. t.merge( context, writer );
22. /* show the World */
23. System.out.println( writer.toString() );
24. }
25. }
将这两个文件放在同一个目录下,编译运行,结果是:
Hello Eiffel Qiu! Welcome to http://www.eiffelqiu.com world
为了保证运行顺利,请从Velocity的网站http://jakarta.apache.org/velocity/上下载Velocity的运行包,并将其中Velocity Jar包的路径放在系统的Classpath中,这样就可以顺利编译和运行以上程序了。
这个程序很简单,但是它能清楚地说明Velocity的基本工作原理。程序中的其它部分基本上很固定,最主要的部分在以下几段代码。
◆ Velocity获取模板文件,得到模板引用:
1.Template t = ve.getTemplate( "hellosite.vm" );
◆ 初始化环境,并将数据放入环境:
1.VelocityContext context = new VelocityContext();
2.context.put("name", "Eiffel Qiu");
3.context.put("site", "http://www.eiffelqiu.com");
◆ 初始化Velocity模板引擎:
1.VelocityEngine ve = new VelocityEngine();
2.ve.init();
◆ 将环境变量和输出部分结合:
1.StringWriter writer = new StringWriter();
2.t.merge( context, writer );
3./* show the World */
4.System.out.println( writer.toString() );
这一部分在将来的Servlet应用中会有所区别,因为网页输出并不和命令行输出相同,如果用于网页输出,将并不通过System.out输出。
小结
Velocity解决了如何在Servlet和网页之间传递数据的问题,当然这种传输数据的机制是在MVC模式上进行的,也就是View、Modle和Controller之间相互独立工作,一方的修改不影响其它方面的变动。
他们之间的联系通过环境变量(Context)来实现,当然网页制作方和后台程序方要相互约定好对所传递变量的命名,比如上个程序例子中的site、name变量,它们在网页上就是$name、$site。
这样只要双方约定好变量名字,就可以独立工作了。无论页面如何变化,只要变量名不变,后台程序无需改动,前台网页也可以任意由网页制作人员修改。
通常简单变量名无法满足网页制作显示数据的需要,比如经常会循环显示一些数据集,或者是根据一些数据的值来决定如何显示下一步的数据等。
Velocity同样提供了循环、判断的简单语法以满足网页制作的需要。Velocity提供了一个简单的模板语言,供前端网页制作人员使用,这个模板语言简单到大部分懂得JavaScript的人都可以很快掌握,其甚至比JavaScript更简单。
当然这种简单是刻意的,因为不需要Velocity什么都能完成,而只需专注于其应该完成的。View层不应该包含更多的逻辑,Velocity的简单模板语法完全可以满足所有对页面显示逻辑的需要,并且也不会发生像JSP那样因为一个无限循环语句而毁掉系统的情况。
public static void main(String[] args) throws Exception {
Map<String,String> map = new HashMap<String,String>();
map.put("id", "123");
map.put("name1", "123");
Velocity.init();
VelocityContext velocityContext = new VelocityContext(map);
StringWriter result = new StringWriter();
String sqlTemplate = "select * from where id = $id and name=:name";
// Template template = Velocity.getTemplate(sqlTemplate, "UTF-8");
Velocity.evaluate(velocityContext, result, "", sqlTemplate);
// VelocityEngine ve = new VelocityEngine();
System.out.println(result.toString());
}
【收藏地址】http://www.myexception.cn/database/424711.html
分享到:
相关推荐
"VELOCITY实例-餐饮新版V1.10.rar"是一个包含有关餐饮行业的软件应用更新的压缩文件,版本为V1.10。这个文件主要关注的是Velocity模板语言在Java环境中的应用,它是一种用于生成动态网页内容的强大的模板引擎。 ...
在"velocity实例"中,你可以找到实际应用Velocity模板语言的示例。这些实例通常会展示如何在模板中嵌入变量、控制结构(如条件语句和循环)以及方法调用,以动态生成HTML或其他格式的输出。例如,可能有一个例子展示...
标题“spring3.2+velocity 实例”表明我们要探讨的是如何在Spring 3.2框架中集成并使用Velocity模板引擎来构建动态Web应用。Velocity是一个开源的Java模板引擎,它允许开发者将业务逻辑与表现层分离,使得网页设计...
在上述的"velocity实例"中,提供了两个示例,一个是Java工程,另一个是Web工程,都是为了展示如何使用Velocity来处理模板并生成输出。 1. Java工程实例: 这个例子展示了如何在Java应用程序中使用Velocity。首先,...
【标题】"WebWork+Spring+Ibatis+Velocity实例"是一个综合性的开发示例,它展示了这四个技术在实际Web应用程序中的集成与应用。WebWork是早期的一个MVC(Model-View-Controller)框架,提供了丰富的动作调度和数据...
Struts2 和 Velocity 是两种广泛应用于Java Web 开发中的开源框架。Struts2 主要负责MVC(模型-视图-控制器)架构的实现,提供了一种组织应用程序逻辑的方式,而Velocity 则是一个模板引擎,专注于视图层的渲染,...
这个简单的实例将会帮助我们理解如何在实际项目中使用 Velocity。 首先,我们需要了解 Velocity 的基本概念。Velocity 模板语言(VTL)是 Velocity 的核心,它允许我们在模板中插入变量和控制结构,如条件语句和...
- **单实例还是多实例(To Singleton Or Not To Singleton)**: 讨论了在不同的应用场景下,是应该使用单个 Velocity 实例还是多个实例的问题。 - **Singleton Model**: 介绍如何使用单例模式来管理 Velocity 的实例...
- **初始化 Velocity**:在 JVM 或 Web 应用中仅存在一个 Velocity 引擎实例,所有应用共享该实例。通过 `org.apache.velocity.app.Velocity` 类来获取这个单例。 - **示例代码**: ```java Velocity.set...
Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例
【Java Web项目开发案例精粹--Velocity简单实例】 在Java Web开发中,Velocity是一个非常流行的模板引擎,它允许开发者将HTML页面设计与业务逻辑相分离,使得开发者可以专注于后端逻辑,而设计师则可以自由地设计...
- **非单例模型**:如果需要为每个请求或用户会话单独创建 Velocity 实例,则可以使用非单例模型。 #### 四、上下文 上下文是 Velocity 中一个重要的概念,它是 Velocity 引擎用来存储数据模型中的变量的地方。...
**四、Velocity实例** 一个简单的Velocity模板可能如下所示: ```html <!DOCTYPE html> $title <h1>Welcome, $username! <p>You have $messageCount messages. ``` 在这个例子中,`$title`、`$username`...
- **独立实例**:探讨在特定情况下使用多个独立Velocity实例的优点和缺点。 #### 五、The Context - **基础概念**:介绍Context类及其作用。 - **迭代支持**:展示如何在模板中使用`#foreach`指令来遍历列表或其他...
在“velocity生成静态页面实例”中,我们首先需要一个 Velocity模板文件(通常以`.vm`为扩展名),在这个文件中,我们可以使用Velocity语法来定义页面结构,并插入动态数据占位符。例如,我们可以写一个简单的模板:...
本实例旨在帮助初学者快速入门Velocity,理解其基本用法和核心概念。 1. **Velocity简介** Velocity是一个基于Java的模板引擎,它允许开发者在模板中使用特定的语法(Velocity Template Language, VTL)来插入动态...
Struts2和Velocity是两种广泛应用于Java Web开发的技术。Struts2是一个强大的MVC(Model-View...通过实践这个实例,你可以深入学习到如何在Struts2中使用Velocity模板来构建动态网页,进一步提升你的Java Web开发技能。
本实例将探讨如何使用Maven作为项目管理工具,结合Spring MVC作为控制层框架,Mybatis作为数据访问层框架,以及Velocity作为视图层模板引擎,来构建一个完整的Java Web应用。以下是关于这些技术的详细解释和整合步骤...