freeMaker的工具类
package com.ek.util; import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.Version; /**
* FreeMarkerUtil 工具类
*
* @author Duke
*
*/
public class FreeMarkerUtil { // FreeMarker 配置
private static Configuration cfg; /**
* @author Duke 静态内部类,创建freeMarker 配置,实例化工具类
*/
private static class LazyHolder { // 创建 freeMarker 配置 ,2.3.24 引入的freemarker 版本号
private static final Configuration config = new Configuration(Configuration.VERSION_2_3_24); // 实例化工具类
private static final FreeMarkerUtil fk = new FreeMarkerUtil();
} /**
* 私有构造函数
*/
private FreeMarkerUtil() { } /**
* 初始化配置文件,获取实例
*
* @param templatePath 模板路径
* @return FreeMarkerUtil 工具类
*/
public static FreeMarkerUtil getInstance(String templatePath) { if (null == cfg) { // 创建 freeMarker 配置
cfg = LazyHolder.config; // 设置编码格式
cfg.setDefaultEncoding("UTF-8"); // templatePath 指的是模板所在路径
cfg.setClassForTemplateLoading(FreeMarkerUtil.class, templatePath);
} return LazyHolder.fk;
} /**
* 根据模版名称加载对应模版
*
* @param templateName 模版名称
* @return
*/
private Template getTemplate(String templateName) { try { return cfg.getTemplate(templateName);
}
catch (IOException e) { e.printStackTrace();
} return null;
} /**
* 控制台打印通过模板生成的文件
*
* @param dataModel 数据模型
* @param templateName 输出模版
*/
public String getContent(Map<String, Object> dataModel, String templateName) { try { StringWriter stringWriter = new StringWriter(); getTemplate(templateName).process(dataModel, stringWriter); stringWriter.flush(); String result = stringWriter.toString(); stringWriter.close(); return result;
}
catch (TemplateException e) { e.printStackTrace();
}
catch (IOException e) { e.printStackTrace();
} return null;
} /**
* 创建通过模板生成的文件
*
* @param dataModel 数据模型
* @param templateName 输出模版
* @param filePath 输出文件路径
*/
public File create(Map<String, Object> dataModel, String templateName, String filePath) { try { File file = new File(filePath); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs();
} BufferedWriter bufWrite = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath),"UTF-8"));
getTemplate(templateName).process(dataModel, bufWrite);
bufWrite.flush();
bufWrite.close(); return file;
}
catch (TemplateException e) { e.printStackTrace();
}
catch (IOException e) { e.printStackTrace();
} return null;
} /**
* 根据地址获得数据的字节流
*
* @param strUrl 网络连接地址
* @return 图片Base64码
*/
public String getImgBase64ByUrl(String strUrl) { try { // 建立 Http 链接
HttpURLConnection conn = (HttpURLConnection) new URL(strUrl).openConnection(); // 5秒响应超时
conn.setConnectTimeout(5 * 1000);
conn.setDoInput(true); // 判断http请求是否正常响应请求数据,如果正常获取图片 Base64 码
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { // 获取图片输入流
InputStream inStream = conn.getInputStream(); // 用于存储图片输出流
ByteArrayOutputStream outStream = new ByteArrayOutputStream(); // 定义缓存流,用于存储图片输出流
byte[] buffer = new byte[1024]; int len = 0; // 图片输出流循环写入
while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len);
} // 图片输出流转字节流
byte[] btImg = outStream.toByteArray(); inStream.close();
outStream.flush();
outStream.close(); return new String(Base64.encode(btImg));
}
}
catch (Exception e) { e.printStackTrace();
} return null;
}
}
留着以后备用
freeMaker的工具类的更多相关文章
- 【freemaker】之FreeMakerUtil工具类
Freemaker生成文件常用工具类 public class FreemakerUtil { private static FreemakerUtil util; private static Co ...
- Freemarker工具类
Freemarker文件模板工具类 提供了解析生成文件.解析生成字符串的两个方法! package org.lunatic.util; import java.io.File; import java ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
- js常用工具类.
一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...
- Guava库介绍之实用工具类
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...
- Java程序员的日常—— Arrays工具类的使用
这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...
- .net使用正则表达式校验、匹配字符工具类
开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...
随机推荐
- Java的接口和抽象类(转发:http://www.importnew.com/18780.html)
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- 3.07课·········if分支语句
语句分类:顺序语句,选择语句(分支语句),循环语句 分支语句:(一)if(表达式) //表达式返回值是True或False{}说明:1.表达式返回的是bool值:2.小括号和花括号后面不需要加分号. ...
- 培训笔记——ubuntu安装
1.选择安装位置,如果是做双系统提前准备一个分区,如果覆盖安装就无所谓了2.下载iso镜像文件,制作启动盘,Windows或linux环境下分别有相应的软件可以制作启动光盘或U盘3.开始安装一 设置开 ...
- springboot5
1.改造购物车系统 1.1.创建购物车的Spring Boot工程 1.1.导入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- nodejs模块之http&&url
我们使用nodejs中的http模块来进行网络操作 一.什么是HTTP协议: 超文本传输协议(HyperText Transfer Protocol)HTTP假定其下层协议提供可靠传输. 因此,任何能 ...
- 【leetcode刷题笔记】Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. 题解:以strs[0]为模 ...
- P4103 [HEOI2014]大工程
题目 P4103 [HEOI2014]大工程 化简题目:在树上选定\(k\)个点,求两两路径和,最大的一组路径,最小的一组路径 做法 关键点不多,建个虚树跑一边就好了 \(sum_i\)为\(i\)子 ...
- case 练习
#!/bin/bash RED_COLOR="\E[1;31m" GREEN_COLOR="\E[1;32m" YELLOW_COLOR="\E[1; ...
- Luogu-4196 [CQOI2006]凸多边形
凸多边形的面积就相当于半平面交 求几个凸多边形面积交就相当于一堆半平面一起求交 #include<cmath> #include<cstdio> #include<cst ...
- 深入理解JVM - 晚期(运行期)优化
在部分商用虚拟机中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或者代码块的运行特别频繁时,就会把这些代码认定为“热点代码”(Hot Spot Code) ...