- 浏览: 3422506 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
velocity1.7小例子 http://www.cnblogs.com/jston/archive/2013/02/19/2916999.html
模板:com/templates/hello.vm
Hello $name! Welcome to $site world!
调用
输出:
Hello Pandy! Welcome to www.pandy8.com world!
<dependency> <groupId>velocity</groupId> <artifactId>velocity</artifactId> <version>1.4</version> </dependency>
package com.util; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import java.io.InputStream; import java.io.Reader; import java.io.StringWriter; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; /** * 模板处理工具类,现在只支持类路径方式,不支持jar,绝对路径等方式。 * * @author pandy * */ @SuppressWarnings("rawtypes") public class VelocityUtils { private final static String DEFAULT_TEMPLATE_PATH = ""; private final static String DEFAULT_LOG_TAG = "mystring"; private static VelocityEngine engine; /** * 做初始化信息 */ static { Properties p = new Properties(); // 设置输入输出编码类型。和这次说的解决的问题无关 p.setProperty(Velocity.INPUT_ENCODING, "UTF-8"); p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8"); p.setProperty("userdirective", "org.apache.velocity.tools.generic.directive.Ifnull"); // 这里加载类路径里的模板而不是文件系统路径里的模板 p.setProperty("resource.loader", "class"); p.setProperty("class.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); engine = new VelocityEngine(); try { engine.init(p); Velocity.init(); } catch (Exception e) { e.printStackTrace(); engine = null; } } /** * 参数转换:Pap->VelocityContext * * @param paramters * @return */ private static VelocityContext parseMapToVelocityContext(Map paramters) { VelocityContext context = new VelocityContext(); if (paramters != null && !paramters.isEmpty()) { Iterator it = paramters.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); Object value = paramters.get(key); context.put(key.toString(), value); } } return context; } /** * 读取模板文件 * * @param templateName * @param path * @return */ private static Template getTemplate(String templateName, String path) { Template template = null; try { template = engine.getTemplate(path + templateName); } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } return template; } /** * * @param templateName * @return 模板的html字符串 */ public static String merge(String templateName) { return merge(templateName, null, null, null); } /** * * @param templateName * @param path * @return */ public static String merge(String templateName, String path) { return merge(templateName, path, null, null); } /** * 这个方法要自动转换Map类型,变成VelocityContext类型 * * @param templateName * @param paramters * @return 模板的html字符串 */ public static String merge(String templateName, Map paramters) { return merge(templateName, DEFAULT_TEMPLATE_PATH, parseMapToVelocityContext(paramters), null); } /** * * @param templateName * @param path * @param paramters * @return */ public static String merge(String templateName, String path, Map paramters) { return merge(templateName, path, parseMapToVelocityContext(paramters), null); } /** * * @param templateName * @param context * @return 模板的html字符串 */ public static String merge(String templateName, String path, VelocityContext context) { return merge(templateName, path, context, null); } /** * * @param templateName * @param context * @return */ public static String merge(String templateName, VelocityContext context) { return merge(templateName, DEFAULT_TEMPLATE_PATH, context, null); } /** * * @param templateName * @param context * @param writer * @return 模板的html字符串 */ public static String merge(String templateName, VelocityContext context, StringWriter writer) { return merge(templateName, DEFAULT_TEMPLATE_PATH, context, writer); } /** * 最终执行方法 * * @param templateName * @param path * @param context * @param writer * @return 模板的html字符串 */ public static String merge(String templateName, String path, VelocityContext context, StringWriter writer) { Template template = getTemplate(templateName, path); if (writer == null) { writer = new StringWriter(); } try { template.merge(context, writer); } catch (Exception e) { e.printStackTrace(); return null; } /* show the World */ return writer.toString(); } public static String mergeWithStr(Map paramters, String templateStr) { StringWriter writer = new StringWriter(); return mergeWithStr(parseMapToVelocityContext(paramters), writer, templateStr); } public static String mergeWithStr(Map paramters, StringWriter writer, String templateStr) { return mergeWithStr(parseMapToVelocityContext(paramters), writer, templateStr); } public static String mergeWithStr(VelocityContext context, StringWriter writer, String templateStr) { try { Velocity.evaluate(context, writer, DEFAULT_LOG_TAG, templateStr); } catch (Exception e) { e.printStackTrace(); } return writer.toString(); } public static String mergeWithStr(Map paramters, Reader reader) { StringWriter writer = new StringWriter(); return mergeWithStr(parseMapToVelocityContext(paramters), writer, reader); } public static String mergeWithStr(Map paramters, StringWriter writer, Reader reader) { return mergeWithStr(parseMapToVelocityContext(paramters), writer, reader); } public static String mergeWithStr(VelocityContext context, StringWriter writer, Reader reader) { try { Velocity.evaluate(context, writer, DEFAULT_LOG_TAG, reader); } catch (Exception e) { e.printStackTrace(); } return writer.toString(); } @Deprecated public static String mergeWithStr(Map paramters, InputStream instream) { StringWriter writer = new StringWriter(); return mergeWithStr(parseMapToVelocityContext(paramters), writer, instream); } @Deprecated public static String mergeWithStr(Map paramters, StringWriter writer, InputStream instream) { return mergeWithStr(parseMapToVelocityContext(paramters), writer, instream); } @Deprecated public static String mergeWithStr(VelocityContext context, StringWriter writer, InputStream instream) { try { Velocity.evaluate(context, writer, DEFAULT_LOG_TAG, instream); } catch (Exception e) { e.printStackTrace(); } return writer.toString(); } @SuppressWarnings("unchecked") public static void main(String[] args) { Map paramters = new HashMap(); paramters.put("name", "Pandy"); paramters.put("site", "http://zhuhaironghui.oicp.net"); String str = merge("hello.vm", "com/rh/core/menu/templates/", paramters); System.out.println(str); System.out.println(mergeWithStr(paramters, "Hello $name! Welcome to $site world!")); } }
模板:com/templates/hello.vm
Hello $name! Welcome to $site world!
调用
import com.util.VelocityUtils; import java.util.HashMap; import java.util.Map; /** * Created by pandy on 14-8-13. */ public class ToolMain { public static void main(String[] args){ Map<String, Object> context = new HashMap<String, Object>(); context.put("name","Pandy"); context.put("site","www.pandy8.com"); String gridConfigStr = VelocityUtils.merge("com/templates/hello.vm", context); System.out.println(gridConfigStr); } }
输出:
Hello Pandy! Welcome to www.pandy8.com world!
发表评论
-
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 1030http://navyaijm.blog.51cto.com/ ... -
Java Comparable和Comparator
2016-06-26 08:52 694http://my.oschina.net/android52 ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2502http://my.oschina.net/chengxiao ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2471Java集合框架之fastutil http://rensan ... -
跟我学习dubbo
2016-06-17 15:20 1066跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1178JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1309freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1098原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2882原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1544http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2287http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3444http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1862Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1031使用gzip优化web应用(filter实现) http:// ... -
Fedora安装Redis
2016-05-04 08:56 1413管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1315集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4791使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2313apache shiro集群实现(一) session共享 h ...
相关推荐
标题中的“自己用的工具类,自己写的”表明这是一个个人创建的、用于个人或特定项目使用的工具类集合。工具类通常包含一系列静态方法,提供通用的功能,如数据处理、日期时间操作、字符串处理等,方便在不同的代码...
这是一个比较全面的处理日期时间的工具类,利用该工具类可以得到你想要的日期时间。里面代码简洁,方法已经封装好,只需要调用即可。自己可以将其打成jar包来用
`RabbitmqUtil` 是一个专门为Java开发者设计的工具类,简化了与RabbitMQ交互的复杂过程,使得开发者能够更快速、更方便地发送和接收消息。 首先,我们来详细了解一下`RabbitmqUtil`工具类的主要功能: 1. **连接...
概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...
[工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] 日期DateUtil.java [工具类] 文件FileUtil.java [工具类] 通信客户端simpleClient.java ...
1. **DateUtils**: `java.util.Date` 和 `java.time` 包含日期和时间的操作,但DateUtils通常是Apache Commons Lang库中的一个工具类,提供更方便的日期处理方法,如格式化、解析、比较和日期的加减操作。...
自己写的java字符工具类。主要有以下几个函数: public static String escape(String str,String charset):可以将以下格式的字符串
Ping是Windows下的一个命令 在Unix和Linux下也有这个命令。 ping也属于一个通信协议,是TCP/IP协议的一部分 利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:Ping空格IP...
本文将详细介绍如何实现一个ActiveMQ连接池的完整封装实例工具类,并探讨其背后的设计思想。 首先,我们需要了解JMS(Java Message Service)接口,它是Java平台中用于创建、发送、接收和读取消息的标准API。...
版权声明:本工具类为个人兴趣基于chnSftp编写的应用,个人版权在先,后因各个办公环境无相关软件也有相关的个人使用,和办公环境内的推广使用,也欢迎互联网使用,如涉及相关环境认为本应用有不妥之处,请删除本人...
这是Ayunger开发的一个AutoCAD修改工具集合,现与各位共享,主要包括: 1、 绘制类: 箭头、示坡线、锥坡线、剖断线、垂线、切线、等高线加密、Hatch轮廓线等; 2、 标注类: 各类引线标注(圆形、坐标、断面、里程、...
这是一个封装好的FastJson工具类、里面已经处理各种情况~分享给大家
"管家婆5个版本写狗数据工具"是一个专门针对管家婆系列软件的数据处理工具,主要用于在不同的管家婆软件版本间进行数据迁移、备份或恢复。这个工具覆盖了管家婆的几个重要版本,包括“服装版”、“辉煌II代+”、...
本篇文章将详细探讨如何使用Java实现一个分页工具类,以及在实际应用中如何运用这个工具。 首先,分页的基本概念是通过指定每页显示的数据量(每页记录数,即pageSize)和当前页数(pageNumber),从数据库中获取...
RSA是一种非对称加密算法,它是公钥密码学的一个重要代表。这个压缩包包含与RSA相关的JAR包、JavaScript文件以及Java工具类,主要用于在JSP应用中实现密码的加密和解密。以下是对这些资源及其在实际应用中的作用的...
同一个系统中,为了解决不同的客户可能需要设计不同的单据打印模板,实现此方法可能是: 1、设计不同的自带RDLC报表文件,根据当前客户加载不同的报表并打印 2、GDI+绘图 和 打印组件 ,不同的客户创建不同的绘图...
在Android开发过程中,工具类(Utils)是一种非常实用的代码模块,它包含了各种常见的功能方法,可以帮助开发者提高代码复用性和开发效率。本资源提供的"Android常用的工具类utils"是一组可以直接导入到Android项目...
文件列表中的"UDA硬复制.exe"很可能是执行读写操作的主程序,它可能包含了一个用户界面,供用户选择设备、导入导出密钥等。而"readme.txt"文件通常包含有关如何使用该工具的重要信息,如系统要求、安装步骤、操作...
increment.export.jar 导出增量包工具类 指定资源和导出的文件列表、保存的位置即可导出
根据提供的文件信息,本文将围绕“自己动手写编译器...对于有兴趣进一步学习这方面知识的读者来说,《自己动手写编译器链接器》这本书无疑是一个宝贵的资源,它不仅提供了理论指导,还通过实际操作加深了读者的理解。