- 浏览: 7340618 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在发送郵件时使用在业务层访问
package com.unutrip.template.util;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.VelocityException;
/**
* Velocity 模板 使用的工具类
*
* @author longgangbai
*
*/
public class VelocityUtils {
private static final Logger logger = Logger.getLogger(VelocityUtils.class);
private static VelocityEngine velocityEngine = new VelocityEngine();
static {
Properties p = new Properties();
p.setProperty("file.resource.loader.path", VelocityUtils.class
.getResource("/velocity/").getFile());
System.out.println("path"
+ VelocityUtils.class.getResource("/velocity/").getFile());
try {
velocityEngine.init(p);
/*
* velocityEngine.setProperty("input.encoding", "UTF-8");
* velocityEngine.setProperty("out.stream", "UTF-8");
* velocityEngine.setProperty("resource.loader", "class");
* velocityEngine .setProperty("class.resource.loader.class",
* "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
*/
} catch (Exception e) {
logger.error("loader velocity is error!");
e.printStackTrace();
}
}
public VelocityUtils() {
}
/**
*
* @param templateLocation
* @param model
* @param writer
* @throws VelocityException
*/
public static void mergeTemplate(String templateLocation, Map model,
Writer writer) throws VelocityException {
try {
VelocityContext velocityContext = new VelocityContext(model);
velocityEngine.mergeTemplate(templateLocation, velocityContext,
writer);
} catch (Exception ex) {
logger
.error(
"Why does VelocityEngine throw a generic checked exception, after all?",
ex);
throw new VelocityException(ex.toString());
}
}
/**
*
* @param velocityEngine
* 模板引擎
* @param templateLocation
* 模板的名稱
* @param encoding
* 設置的編碼格式
* @param model
* 模板對應的模型的對象
* @param writer
* 輸出對象
* @throws VelocityException
* 拋出异常的信息
*/
private static void mergeTemplate(VelocityEngine velocityEngine,
String templateLocation, String encoding, Map model, Writer writer)
throws VelocityException {
try {
VelocityContext velocityContext = new VelocityContext(model);
velocityEngine.mergeTemplate(templateLocation, encoding,
velocityContext, writer);
} catch (Exception ex) {
logger
.error(
"Why does VelocityEngine throw a generic checked exception, after all?",
ex);
throw new VelocityException(ex.toString());
}
}
/**
* 常用的提供模板內容的字符串信息(常用的方法的)
*
* @param templateLocation
* @param model
* @return
* @throws VelocityException
*/
public static String mergeTemplateIntoString(String templateLocation,
Map model) throws VelocityException {
StringWriter result = new StringWriter();
mergeTemplate(velocityEngine, templateLocation, "UTF-8", model, result);
return result.toString();
}
/**
*
* @param velocityEngine
* @param templateLocation
* @param encoding
* @param model
* @return
* @throws VelocityException
*/
public static String mergeTemplateIntoString(VelocityEngine velocityEngine,
String templateLocation, String encoding, Map model)
throws VelocityException {
StringWriter result = new StringWriter();
mergeTemplate(velocityEngine, templateLocation, encoding, model, result);
return result.toString();
}
}
测试代码:
package com.unutrip.template.model;
import java.util.Date;
/**
* 测试的一个定点的對象
*
* @author longgangbai
*
*/
public class Order {
// 客户
public String customerName;
// 订单编号
public String orderNo;
// 酒店的名稱
public String hotelName;
// 房型编号
public String roomName;
// 入住時間
public Date checkindate;
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getHotelName() {
return hotelName;
}
public void setHotelName(String hotelName) {
this.hotelName = hotelName;
}
public String getRoomName() {
return roomName;
}
public void setRoomName(String roomName) {
this.roomName = roomName;
}
public Date getCheckindate() {
return checkindate;
}
public void setCheckindate(Date checkindate) {
this.checkindate = checkindate;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
测试类:
package com.unutrip.template.test;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.time.DateUtils;
import com.unutrip.template.model.Order;
import com.unutrip.template.util.VelocityUtils;
public class VelocityTest {
public static void main(String[] args) throws Exception {
String veloctiytmp = "email.vm";
Map model = new HashMap();
// 一般的對象
Order order = new Order();
order.setCustomerName("wuxc");
order.setHotelName("汉庭酒家");
order.setOrderNo("00009");
order.setRoomName("4567");
order.setCheckindate(new Date());
model.put("order", order);
// 集合對象
List<Order> orders = new ArrayList<Order>();
for (int i = 1; i < 6; i++) {
Order order0 = new Order();
order0.setCheckindate(DateUtils.add(new Date(),
Calendar.DAY_OF_MONTH, i));
order0.setCustomerName("customerName--" + i);
order0.setHotelName("如家大酒店");
order0.setOrderNo("001");
order0.setRoomName("200" + i);
orders.add(order0);
}
model.put("members", orders);
// 存放Map
Map membersMap = new HashMap();
membersMap.put("key", order);
model.put("membersMap", membersMap);
System.out.println("From Veclotity ="
+ VelocityUtils.mergeTemplateIntoString(veloctiytmp, model));
}
}
veclocity的模板文件如下:
编译一个集合和一个Map對象應用
<html>
<body>
List:
#foreach($member in $members)
<li>$member.customerName - $member.orderNo $member.hotelName $member.checkindate??string('yyyy-MM-dd ') </li>
#end
<br>
Map:
#foreach($member in $membersMap.entrySet())
<li>$member.key - $member.value.customerName $member.value.hotelName $member.value.roomName</li>
#end
</body>
</html>
Velocity的一个问题:关于時間数字类型必须使用Java代码格式化显示.
发表评论
-
[转]Jython初探
2014-01-07 11:19 2410转载自: ... -
ireport导出各种格式(pdf,excel,word,html,print)
2013-05-02 16:59 10052import java.io.IOException; ... -
【转】使用Atomikos Transactions Essentials实现多数据源JTA分布式事务
2013-04-03 12:11 6795Atomikos数据源配置方法有三种 Atomikos数 ... -
【转】Apache Thrift入门1-架构&介绍
2013-04-02 13:26 2042Thrift 是什么? Thrift ... -
【转】Thrift入门及Java实例演示
2013-04-02 12:47 2588目录: 概述 下载配置 基本概念 数据类型 ... -
【转】Thrift入门试用
2013-04-02 12:39 2184在新的项目中公司在平台内部系统间使用Thrift通讯,都没 ... -
【转】thrift的安装
2013-04-02 12:38 2094一、ubuntu下thrift的安装 1.下载源代码 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9710官方geoserver中WMS服务中几种操作的API的详细说明 ... -
POI3.8组件研究(九)----让POI架起Java与Office之间的桥梁
2012-06-17 14:37 4333本文将阐述如何用POI来读取/写入完整的Excel文 ... -
POI3.8组件研究(八)--基于SXSSF (Streaming Usermodel API)的写文件
2012-06-17 14:17 14438在POI3.8中SXSSF仅仅支持excel2 ... -
POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析
2012-06-17 14:00 5369针对Event API事件解析仅仅支持excel97~ ... -
POI3.8组件研究(六)---struts2.0 视图层文件页面点击导出
2012-06-17 13:23 2420在struts2.0中点击导出按钮将信息导出为exce ... -
POI3.8组件研究(五)---excel文件内容抽取为文本
2012-06-15 09:15 4368在一个搜索引擎的使用中需要将各种文件转化为文本 ... -
POI3.8组件研究(四)--Event API (HSSF Only)事件的解析
2012-06-14 17:37 9065通过eventusermodel读取文件 ... -
POI3.8组件研究(二)---基于User API (HSSF and XSSF)解析Excel2003和2007文件
2012-06-14 09:46 3219在解析生成excel2003和 ... -
POI3.8组件研究(一)---基于User API (HSSF and XSSF)解析Excel2003和2007文件
2012-06-14 09:29 5356在以前的Excel解析时候,我们通常需要编写Ex ... -
EasyPOI的使用
2012-02-12 17:06 5322EasyPOI 的目的是封装了poi的写excel的API。 ... -
Commons-net FTPClient上传下载的封装
2011-08-25 08:30 11513在项目中使用到FTP功能,于是采用类似Spri ... -
Java将第三方jar文件打包到一个jar中的插件(fatjar)
2011-08-19 22:17 4340<!-- google_ad_section_star ... -
Apache的Commons-configuration自动加载特性
2011-07-24 19:04 4085在一些项目可能配置文件经常变化,配置文件的类型可能 ...
相关推荐
- **易于维护**:遵循 MVC(Model-View-Controller)模式,使得业务逻辑和表示层分离,易于维护。 - **数据访问便捷**:可以通过简单的语法访问 Java 对象的数据和方法。 - **一致性**:不仅用于 Web 页面渲染,还...
【Velocity模板应用...总结来说,Velocity是一个强大的模板引擎,它简化了Web开发中的动态内容生成,使开发者能够更高效地组织和管理应用的视图层。通过熟练掌握Velocity的使用,可以提升项目的可维护性和开发效率。
Velocity的主要优点在于其简单易用和高度可扩展性,使得开发者能够将业务逻辑与表现层分离,提高代码的可读性和维护性。以下是关于这三个JAR文件的详细知识点: 1. **velocity-1.5.jar**: 这是Velocity的1.5版本...
Velocity是Apache软件基金会的一个开源项目,它是一款强大的模板引擎,常用于Java应用程序中的视图层。Velocity通过将逻辑与表示分离,使得开发者可以专注于业务逻辑,而设计师则可以专心于页面设计。本篇文章将深入...
随着互联网技术的发展,Web 应用系统的复杂度不断提高,为了更好地组织和管理应用程序,MVC(Model-View-Controller)架构逐渐成为主流。在这一背景下,多种框架和技术应运而生,为开发者提供了更多选择。其中,...
velocity-tools-view-1.4.jar
3. **上下文(Context)**:Velocity中的Context对象是数据传递的桥梁,它连接了应用程序和模板。开发者可以将数据放入Context,然后在模板中访问这些数据。 4. **宏**:Velocity支持宏定义,宏类似于函数,可以在...
将Velocity与Ant结合,可以自定义模板生成符合特定需求的源代码,比如数据库访问层、实体类或者控制器代码。通过这种方式,开发者可以提高工作效率,减少重复工作,并保证代码的一致性。 **文件列表** 1. **...
在IT行业中,构建大型应用程序时,常常需要整合多种框架来实现高效、稳定且易于维护的系统。本项目涉及的关键技术包括Velocity、Spring和Hibernate,以及JPA(Java Persistence API),这些技术都是Java开发中的核心...
Velocity是由Apache软件基金会开发的一个开源项目,它基于MVC(Model-View-Controller)设计模式,主要负责View层的实现。Velocity的目标是使开发者能够用简单的模板语言来控制页面的布局和格式,同时将复杂的逻辑...
- **resources** 目录:可能存储 Velocity 配置文件(如 `velocity.properties`),以及应用中使用的资源文件。 - **src/main/java** 目录:包含 Velocity 相关的 Java 类,如控制器、模型类和 velocity 工具类。 - ...
Velocity的核心理念是“分离展示层和逻辑层”,这使得开发者能够更专注于应用程序的业务逻辑,而不是页面的呈现细节。 ### 2. Velocity模板语言(VTL) Velocity模板语言是一种标记语言,用于描述如何在模板中插入...
Velocity是一款开源的Java模板引擎,它允许开发者将HTML页面的呈现逻辑与业务逻辑分离,使得网页设计人员可以专注于页面的布局和样式,而程序员则专注于编写应用程序的后端逻辑。Velocity由Apache软件基金会开发并...
在Web开发领域,Velocity是一个非常重要的模板引擎,它被广泛应用于生成动态网页内容。Velocity由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。其设计目标是提供一个简单易用但功能强大的工具,用于...
Velocity通过将业务逻辑与表示层分离,提高了Web应用程序的开发效率和可维护性。这个【描述】提到的"Velocity_Hibernat项目"显然是一个结合了Velocity和Hibernate的工程,它整合了两个强大的技术,旨在简化数据驱动...
- **MVC模式**:Velocity遵循Model-View-Controller模式,模板作为View层,负责呈现数据,而Controller和Model由Java代码处理。 - **安全**:由于模板不直接操作Java对象,而是通过变量和指令,这降低了模板注入...
- 在Model-View-Controller架构中,Velocity作为View层,负责展示由Controller处理后的数据。 - 它与Spring、Struts等框架集成,实现高效Web应用开发。 6. **Velocity工具和扩展** - Velocity提供了一些内置工具...
SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)框架。基于注解的SpringMVC允许开发者在控制器类的方法上直接使用注解,如@RequestMapping,@RequestParam等,极大地...