Java模板引擎——Velocity应用实例(原创)

对于b/s架构的项目而言,表示层呈现页面技术大多数选用jsp,但是对于一个并发量很大的网站而言,jsp并不是一个很好的解决方案,懂Java web开发的人都会知道,jsp就是servlet,jsp->servlet->class->html(第一次编译),第一次编译执行以后class->html。

在Java开源框架层出不穷的今天,很多Java牛人都提出了用其他的技术替代jsp,从而提高页面显示速率,之后就有了模板的概念。模板的概念提出了很多年,应用最好的两大模板引擎:Velocity ,FreeMarker。Velocity是Apache的顶级项目,它出现的非常早,而且有很多成功的项目应用的此模板引擎。FreeMarker在当今应用的非常广泛,我的毕业设计就应用了FreeMarker。这两大模板引擎个人比较倾向于FreeMarker,但是没有办法,公司要求用Velocity,所以只能听公司的了。

package com.velocity.test.model;


import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.junit.BeforeClass;
import org.junit.Test;

public class ModelTest {

 @Test
 public void testModel() {
  
  VelocityEngine ve = new VelocityEngine();
  ve.setProperty(Velocity.RESOURCE_LOADER, "class");   
        ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); //设置类路径加载模板   
  ve.setProperty(Velocity.INPUT_ENCODING, "GBK");//设置输入字符集
        ve.setProperty(Velocity.OUTPUT_ENCODING, "GBK");//设置输出字符集
        try {
   ve.init();//初始化模板引擎
   Template t = ve.getTemplate("com/velocity/test/model/model.vm");//加载模板,相对于classpath路径
   VelocityContext context = new VelocityContext();
   
   Person person = new Person("小强", 24);
   List<String> hobby = new ArrayList<String>();
   hobby.add("aaa");
   hobby.add("bbb");
   person.setHobby(hobby);
   
   context.put("person", person);
   
   StringWriter writer = new StringWriter();
   t.merge(context, writer); //转换
   System.out.println(writer.toString());
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

public class Person {

 private String name;
 private int age;
 private List<String> hobby;

 public Person(String name, int age) {
  this.name = name;
  this.age = age;
 }

 //getters and setters

}



model.vm

person.toString():$person
person.name:$person.name
person.age:$person.age
person.Name:$person.Name
person.age:$person.Age
=====================================
person.getName():$person.getName()
person.getAge():$person.getAge()
person.setName("zzq"):$person.setName("zzq")
person.setAge(15):$person.setAge(15)
person.getName():$person.getName()
person.getAge():$person.getAge()
=====================================
java.util.List<String>:
#foreach($s in $person.hobby)
$velocityCount/$person.hobby.size() |$s
#end
person.setHobby(["篮球", "唱歌" , "游泳"]):$person.setHobby(["篮球", "唱歌" , "游泳"])
#foreach($s in $person.hobby)
$s#if($velocityCount != $person.hobby.size()),#end
#end



输出:

person.toString():com.velocity.test.model.Person@1729854
person.name:小强
person.age:24
person.Name:小强
person.age:24
=====================================
person.getName():小强
person.getAge():24
person.setName("zzq"):
person.setAge(15):
person.getName():zzq
person.getAge():15
=====================================
java.util.List<String>:
1/2 |aaa
2/2 |bbb
person.setHobby(["篮球", "唱歌" , "游泳"]):
篮球, 唱歌, 游泳

你可能感兴趣的:(java,apache,freemarker,jsp,velocity)