捣鼓了好半天 终于摸着了点门路了. 把demo贴出来给大家一个参考. 欢迎拍转.
1 下载velocity-1.5 ,到Apache网站下载.
2 导入到lib文件夹下,我用得是eclipse 3.2. 文件目录截图如下
3 我是以servlet形式来进行运行得,所以先配置web.xml文件: 即添加一个servlet
<
servlet
>
<
servlet-name
>
vilocityServlet
</
servlet-name
>
<
servlet-class
>
com.test.servlet.VelocityServletTest
</
servlet-class
>
<
init-param
>
<
param-name
>
org.apache.velocity.properties
</
param-name
>
<
param-value
>
/WEB-INF/classes/velocity.properties
</
param-value
>
</
init-param
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
vilocityServlet
</
servlet-name
>
<
url-pattern
>
/velocity/*
</
url-pattern
>
</
servlet-mapping
>
4 写模板:htllo.vm, 其实后缀为html也行得. 其中的标签请自己看velocity手册.
<
html
>
<
body
>
#set($name="shawn")
Hello, $name
<
br
>
Hello, $name2
<
hr
>
#foreach ($iii in $theList)
<
tr
>
<
td
bgcolor
="#eeeeee"
>
$iii
</
td
>
</
tr
>
#end
</
body
>
</
html
>
5 关键是serlvet 了 代码如下:
( 这里我的代码中,说 VelocityServlet 这个类不赞成使用,因为在文字中间面有黑线划过,不知道是什么原因,知道得朋友请告知一下)
要提及的是载入模板的路径path ,我用的是上下文路径, 当然绝对路径也是可行的.
package
com.test.servlet;

import
java.io.IOException;
import
java.io.FileNotFoundException;
import
java.io.StringWriter;
import
java.util.Properties;
import
java.util.Vector;

import
javax.servlet.ServletConfig;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;

import
org.apache.velocity.Template;
import
org.apache.velocity.context.Context;
import
org.apache.velocity.servlet.VelocityServlet;
import
org.apache.velocity.app.Velocity;
import
org.apache.velocity.app.VelocityEngine;

import
org.apache.velocity.VelocityContext;


public
class
VelocityServletTest
extends
VelocityServlet
...
{

protected Properties loadConfiguration(ServletConfig config)

throws IOException, FileNotFoundException ...{

VelocityEngine engine = new VelocityEngine();

Properties p = new Properties();

String path = config.getServletContext().getRealPath("/");


if (path == null) ...{
path = "/";
}

p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);

p.setProperty("runtime.log", path + "velocity.log");


try ...{
engine.init(p); // 载入模板的路径path ,即上下文路径

} catch (Exception e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}

return p;
}

public Template handleRequest(HttpServletRequest request,

HttpServletResponse response, Context ctx) ...{
Template template = null;

Template template2 = null;


try ...{

/** *//**
* 主要代码
*/
Velocity.init();
VelocityContext context = new VelocityContext();

String p1 = "JAVA";
String p2 = "C++";
Vector personList = new Vector();
personList.addElement(p1);
personList.addElement(p2);


/**//*
* 将模板数据name, list 放置到上下文环境 context 中去
*/
ctx.put("name2", "go go, Suceess!");
ctx.put("theList", personList);

template = Velocity.getTemplate("/velocity/hello.vm");


} catch (Exception e) ...{
e.printStackTrace();
}
// 以下一段代码主要是获得模板的HTML内容

try ...{

template2 = Velocity.getTemplate("/velocity/hello.vm");

VelocityContext context = new VelocityContext();

context.put("name2", "Eiffel Qiu");

StringWriter writer = new StringWriter();

template2.merge(context, writer);

System.out.println(writer.toString());


} catch (Exception e) ...{
e.printStackTrace();
}

return template;
}
}
6 准备就绪 那就运行吧. http://localhost:8080/ZTest/velocity/hello.vm
效果图为:
至此, 结束 .应该只是一个Hello Word级别的入门,希望跟大家一起进步,一起探讨.