Velocity模版加载(classpath、webapp)

classpath资源路径加载:

velocity.properties文件配置

file.resource.loader.class =
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
input.encoding = UTF-8
output.encoding = UTF-8

Servlet代码

/**
 * 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<Order> orders = new ArrayList<Order>();
        
        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模版文件

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Velocity模版</title>
</head>
<body>
  您好,亲爱的顾客,您的订单是:
  <table>
    <tr>
      <th>物品</th>
      <th>各类</th>
      <th>价格</th>
    </tr>
      #foreach($order in $orders)
        <tr>
          <td>$order.item</td>
          <td>$order.type</td>
          <td>$order.getPrice()</td>
        </tr>
      #end
  </table>
</body>
</html>

显示结果

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<Order> orders = new ArrayList<Order>();

		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部署文件配置

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

Velocity模版加载(classpath、webapp)

时间: 2024-11-12 03:32:07

Velocity模版加载(classpath、webapp)的相关文章

Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 Properties p = new Properties(); // 加载classpath目录下的vm文件 // 这里是加载模板VM文件,比如:/META-INF/template/Web_B2CPayment.vm(请参考mas_spring_integration.xml) p.setProperty("file.resource.loader.class", "org.apa

转 Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式:   方式一:加载classpath目录下的vm文件 Properties p = new Properties(); p.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); Ve

velocity模板加载

http://hi.baidu.com/ly_dayu/item/828b09c5c3c5e547a8ba9409 velocity使用基本来说比较简单,但在加载模板时老出问题,很多初学者经常会遇到找不到模板这种异常.本文就针对目前常用的三种模板加载方式做以说明.  一.velocity默认的加载方式(文件加载方式) Java代码   package com.velocity.test; import java.io.StringWriter; import java.util.Properti

spring加载classpath与classpath*的区别别

1.无论是classpath还是classpath*都可以加载整个classpath下(包括jar包里面)的资源文件. 2.classpath只会返回第一个匹配的资源,查找路径是优先在项目中存在资源文件,再查找jar包. 3.文件名字包含通配符资源(如果spring-*.xml,spring*.xml),   如果根目录为"", classpath加载不到任何资源, 而classpath*则可以加载到classpath中可以匹配的目录中的资源,但是不能加载到jar包中的资源

springboot 下载模板文件 加载classpath文件路径

项目需要下载导入模板,springboot使用如下下载方式可解决问题: /** * 导入模板下载 * @param req * @param resp * @param context * @return */ @RequestMapping(value = "wSku/downLoadFile", method = {RequestMethod.POST, RequestMethod.GET}) public @ResponseBody void downLoadFile(HttpS

Velocity加载模版文件

一.类路径 加载classpath目录下的vm文件,或者maven项目的resources路径下 Properties p = new Properties(); p.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); Velocity.init(p); ... Velocity.getTemplate(te

python web开发之flask框架学习(2) 加载模版

上次学习了flask的helloword项目的创建,这次来学习flask项目的模版加载: 第一步:创建一个flask项目 第二步:在项目目录的templates文件夹下创建一个html文件 第三步: 加载模版文件这里会用到flask包下的一个模版渲染器render_template因此要倒入这个render_template 第四步:运行项目就可以看到模版加载的效果了 以上就是flask框架的模版加载学习了,有什么问题欢迎留言! 简书地址: Code人生 原文地址:https://www.cnb

041:模版中加载静态文件详解

加载静态文件: 在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件, js 执行文件以及一些图片等.因此在 DTL 中加载静态文件是一个必须要解决的问题.在 DTL 中,使用 static 标签来加载静态文件.要使用 static 标签,首先需要 {% load static %} .加载静态文件的步骤如下: 1. 首先确保 django.contrib.staticfiles 已经添加到 sttings.INSTALLED_APPS 中. 2. 确保在 settings.p

getClass()和getClassLoader()区别 以及ClassLoader详解及用途(文件加载,类加载)

获得ClassLoader的几种方法可以通过如下3种方法得到ClassLoader this.getClass().getClassLoader(); // 使用当前类的ClassLoader Thread.currentThread().getContextClassLoader(); // 使用当前线程的ClassLoader ClassLoader.getSystemClassLoader(); // 使用系统ClassLoader,即系统的入口点所使用的ClassLoader.(注意,s