Velocity模版加载(classpath、webapp)

2014-11-24 12:41:29 · 作者: · 浏览: 0

classpath资源路径加载:

\

velocity.properties文件配置< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">file.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader input.encoding = UTF-8 output.encoding = UTF-8Servlet代码

/**
 * cn.jbit.servlet.ListServlet
 * 2014-5-8
 * gyy
 */
package cn.jbit.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

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

import org.apache.velocity.Template;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.view.VelocityViewServlet;

import cn.jbit.entity.Order;

public class ListServlet extends VelocityViewServlet {

    private static final long serialVersionUID = -2874204863438528905L;

    @Override
    protected Template handleRequest(HttpServletRequest request,
            HttpServletResponse response, Context ctx) {
        List
  
    orders = new ArrayList
   
    (); Order order = new Order(); order.setItem("Iphone4"); order.setType("智能手机"); order.setPrice("5900"); orders.add(order); order = new Order(); order.setItem("PSP3003"); order.setType("多媒体产品"); order.setPrice("1750"); orders.add(order); order = new Order(); order.setItem("Kinest"); order.setType("体感器"); order.setPrice("1150"); orders.add(order); // 初始化Velocity引擎 VelocityEngine ve = new VelocityEngine(); InputStream is = this.getClass().getResourceAsStream("/velocity.properties"); Properties properties = new Properties(); try { properties.load(is); } catch (IOException e) { e.printStackTrace(); } ve.init(properties); Template template = ve.getTemplate("list.vm"); // 为模版中的元素赋值 ctx.put("orders", orders); return template; } } 
   
  
velocity模版文件

html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



  
Velocity模版


  您好,亲爱的顾客,您的订单是:
  
   #foreach($order in $orders) 
     #end 
   
物品 各类 价格
$order.item $order.type $order.getPrice()
显示结果

\

webapp加载:

\

velocity.properties文件配置

resource.loader = webapp
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader 
webapp.resource.loader.path = /WEB-INF/vm/
input.encoding = UTF-8
output.encoding = UTF-8 
Servlet代码

/**
 * cn.jbit.servlet.ListServlet
 * 2014-5-8
 * gyy
 */
package cn.jbit.servlet;

import java.util.ArrayList;
import java.util.List;

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.tools.view.VelocityViewServlet;

import cn.jbit.entity.Order;

public class ListServlet extends VelocityViewServlet {

	private static final long serialVersionUID = -2874204863438528905L;

	@Override
	protected Template handleRequest(HttpServletRequest request,
			HttpServletResponse response, Context ctx) {
		List
  
    orders = new ArrayList
   
    (); Order order = new Order(); order.setItem("Iphone4"); order.setType("智能手机"); order.setPrice("5900"); orders.add(order); order = new Order(); order.setItem("PSP3003"); order.setType("多媒体产品"); order.setPrice("1750"); orders.add(order); order = new Order(); order.setItem("Kinest"); order.setType("体感器"); order.setPrice("1150"); orders.add(order); // 为模版中的元素赋值 ctx.put("orders", orders); return getTemplate("list.vm"); } } 
   
  

web.xml部署文件配置

好了,结束了,希望对大家有用吧。