|
Velocity是一种模板语言,它的作用、好处等可以找到很多资料,下面我们分二次来进行简单实践,第一部份是hello world 。看我做完这个实验,你就知道,初步上手其实是一件简单的事情:)
1、 建立模板文件 hello.vm,简单些,全文如下:
Hello, $name
2、 建立Class文件:
import java.io.BufferedWriter; import java.io.OutputStreamWriter; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; public class HelloVelocity { public static void main(String[] args) throws Exception { Velocity.init(); VelocityContext context = new VelocityContext(); context.put("name", "yy"); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); Template template = Velocity.getTemplate("hello.vm"); template.merge(context, writer); writer.flush(); writer.close(); } }
让Class文件运行起来,注意把vm文件放在工作目录下,看看,输出是不是 hello,yy J
过程是这样的:初始化 – 获取context – context 输出对像给值 – 获取模板文件 – 写模板文件 – 关闭资源
到这里半懂不懂的吧,没关系,我们毕竟让它跑起来了,接着来第二次实验。
这一实验中我们让Velocity在web 应用中和Struts结合起来,让struts 的forward 转向*.vm文件.。
我们必须先down 到 velocity-tools 工具,如下地址:http://jakarta.apache.org/velocity/tools/
为和struts结合起来,我们要做这么4步的工作:
1、 VelocityStruts 和 VelocityView 这二个工具必须加到项目中,也就是把你的velocity-tools-1.1.jar 和velocity-1.4.jar 都放到项目的Lib 中
2、 在web.xml 中添加 VelocityViewServlet ,它是vm 文件的引擎
<servlet-name>velocity</servlet-name> <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet </servlet-class> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping>
也就是以上这么二部份。
3、 添加Velocity.properties (这一步不是必须的)
4、 添加toolbox.xml (这一步不是必须的)
如果加了后二步,则web.xml 文件里要加上
<init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> <load-on-startup>10</load-on-startup>
好,下面开始我们的实验,建一个最基本的struts项目,提交title 和 content ,这些不必多说了,注意forward指向.vm 文件
Action文件如下:
InfoForm infoForm = (InfoForm)form ; HttpSession session = request.getSession() ; session.setAttribute("title",infoForm.getTitle()); session.setAttribute("content",infoForm.getContent()); return(mapping.findForward("show"));
forward 在struts-config.xml 中说明如下:
<forward name="show" path="/show.vm"/>
Show.vm 文件全文如下:
$title <br> $content <br> Lets count : #foreach($i in [1..5])$i #end
除了显示session中的变量,又放了一个循环写数,可以看到简单的foreach
运行起来,看到效果了吗?是不是有点像用标签,当然它的功能还比较多,比较强大,用二个小时足以上手了吧,详细用的时候,再查手册,一定不是什么难事。
|