- 浏览: 3431650 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (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 1038http://navyaijm.blog.51cto.com/ ... -
Java Comparable和Comparator
2016-06-26 08:52 706http://my.oschina.net/android52 ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2507http://my.oschina.net/chengxiao ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2480Java集合框架之fastutil http://rensan ... -
跟我学习dubbo
2016-06-17 15:20 1075跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1185JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1313freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1104原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2889原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1551http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2293http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3457http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1869Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1035使用gzip优化web应用(filter实现) http:// ... -
Fedora安装Redis
2016-05-04 08:56 1417管理工具: 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 1324集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4806使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2318apache shiro集群实现(一) session共享 h ...
相关推荐
这是一个比较全面的处理日期时间的工具类,利用该工具类可以得到你想要的日期时间。里面代码简洁,方法已经封装好,只需要调用即可。自己可以将其打成jar包来用
`RabbitmqUtil` 是一个专门为Java开发者设计的工具类,简化了与RabbitMQ交互的复杂过程,使得开发者能够更快速、更方便地发送和接收消息。 首先,我们来详细了解一下`RabbitmqUtil`工具类的主要功能: 1. **连接...
jedis的工具类,java代码写的,非常全面,jedis的工具类,java代码写的,非常全面jedis的工具类,java代码写的,非常全面jedis的工具类,java代码写的,非常全面jedis的工具类,java代码写的,非常全面jedis的工具类...
在Android应用开发中,工具类(Utils)是程序员经常使用的辅助模块,它们包含了一系列静态方法,用于处理各种常见的任务,从而提高代码的复用性和可维护性。本资源"Android快速开发系列 10个常用工具类 程序源码...
C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...
精心整理的26个java常用工具类,如:FastJsonUtil,StringHelper,RandomHelper,FileHelper,HttpClientHelper等等,直接使用maven导入到eclipse中使用即可。
RabbitMQClientUtil是MQ的测试工具类,他封装了fanout、direct、topic三种exchange模式,并包括发送数据和接收数据。 Test1、Test2是测试类 使用maven管理,在pom.xml文件中引入如下代码: <!-- Rabbitmq工具包...
NULL 博文链接:https://xsl2007.iteye.com/blog/737245
Ping是Windows下的一个命令 在Unix和Linux下也有这个命令。 ping也属于一个通信协议,是TCP/IP协议的一部分 利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:Ping空格IP...
本文将详细介绍如何实现一个ActiveMQ连接池的完整封装实例工具类,并探讨其背后的设计思想。 首先,我们需要了解JMS(Java Message Service)接口,它是Java平台中用于创建、发送、接收和读取消息的标准API。...
本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。
自己写的一个json工具类。
zclGrid类是基于VFP基类Grid开发的用于程序开发的工具类。 其基本功能: 1、当前Grid显示内容的备份,备份类型为DBF或xls, 使用方法,可参照示例表单的“文件备份”按钮控件代码 2、多层表头的实现 使用方法,...
为了使用这个工具类集合,你需要先解压文件"百度地图离线工具类集合",然后参考博主的系列文章学习如何集成和使用这些工具。博主可能还会提供个人微信支持,以便进行技术指导和交流。通过深入理解和实践,你可以创建...
这是bos开发使用的工具类,大概一千多行代码,包括获取当前组织,用户,自定义编码规则等等等等实用的方法,这是一朋友给我的,我在做金蝶开发的时候,帮了我很多很多!感兴趣的可以下来看看,每个方法都有注释
该工具类可以调出各大手机厂商的权限设置页 测试结果: 华为:OK 小米:OK 锤子:OK 一加:OK vivo:OK,vivo有自己的提示,再次点击后也是会跳出提示,有瑕疵,但是还可以 oppo:OK,自己会提示 魅族:暂时跳转没...
"管家婆5个版本写狗数据工具"是一个专门针对管家婆系列软件的数据处理工具,主要用于在不同的管家婆软件版本间进行数据迁移、备份或恢复。这个工具覆盖了管家婆的几个重要版本,包括“服装版”、“辉煌II代+”、...
本文将详细介绍Java、Android和Web三端通用的RSA和AES工具类的使用,以及相关的JavaScript实现。RSA是一种非对称加密算法,而AES则是一种对称加密算法,它们在保护敏感信息方面发挥着关键作用。 首先,RSA(Rivest-...
在.NET C#环境中,实现HighCharts图表的导出功能,可以通过创建一个服务类和相关的控制器来完成。下面将详细解释这个过程。 首先,`ExportHighChart.cs`是关键的工具类,它包含了将HighCharts图表转换为图片的核心...
Json解析工具类完善一下,使用GSON+JsonPath+泛型来提高自己写JSON解析的效率 http://blog.csdn.net/b275518834/article/details/49819831