package com.fh.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
* Freemarker 模版引擎类
*/
public class Freemarker {
/**
* 打印到控制台(测试用)
* @param ftlName
*/
public static void print(String ftlName, Map<String,Object> root, String ftlPath) throws Exception{
try {
Template temp = getTemplate(ftlName, ftlPath); //通过Template可以将模板文件输出到相应的流
temp.process(root, new PrintWriter(System.out));
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 输出到输出到文件
* @param ftlName ftl文件名
* @param root 传入的map
* @param outFile 输出后的文件全部路径
* @param filePath 输出前的文件上部路径
*/
public static void printFile(String ftlName, Map<String,Object> root, String outFile, String filePath, String ftlPath) throws Exception{
try {
File file = new File(PathUtil.getClasspath() + filePath + outFile);
if(!file.getParentFile().exists()){ //判断有没有父路径,就是判断文件整个路径是否存在
file.getParentFile().mkdirs(); //不存在就全部创建
}
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
Template template = getTemplate(ftlName, ftlPath);
template.process(root, out); //模版输出
out.flush();
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 通过文件名加载模版
* @param ftlName
*/
public static Template getTemplate(String ftlName, String ftlPath) throws Exception{
try {
Configuration cfg = new Configuration(); //通过Freemaker的Configuration读取相应的ftl
cfg.setEncoding(Locale.CHINA, "utf-8");
cfg.setDirectoryForTemplateLoading(new File(PathUtil.getClassResources()+"/ftl/"+ftlPath));//设定去哪里读取相应的ftl模板文件
Template temp = cfg.getTemplate(ftlName); //在模板文件目录中找到名称为name的文件
return temp;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
package com.fh.util;
import java.io.File;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* 路径工具类
*
* @author
*
*/
public class PathUtil {
/**
* 图片访问路径
*
* @param pathType
* 图片类型 visit-访问;save-保存
* @param pathCategory
* 图片类别,如:话题图片-topic、话题回复图片-reply、商家图片
* @return
*/
public static String getPicturePath(String pathType, String pathCategory) {
String strResult = "";
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
StringBuffer strBuf = new StringBuffer();
if ("visit".equals(pathType)) {
} else if ("save".equals(pathType)) {
String projectPath = PublicUtil.getPorjectPath().replaceAll("\\\\",
"/");
projectPath = splitString(projectPath, "bin/");
strBuf.append(projectPath);
strBuf.append("webapps/ROOT/");
}
strResult = strBuf.toString();
return strResult;
}
private static String splitString(String str, String param) {
String result = str;
if (str.contains(param)) {
int start = str.indexOf(param);
result = str.substring(0, start);
}
return result;
}
/*
* 获取classpath1
*/
public static String getClasspath(){
String path = (String.valueOf(Thread.currentThread().getContextClassLoader().getResource(""))+"../../").replaceAll("file:/", "").replaceAll("%20", " ").trim();
if(path.indexOf(":") != 1){
path = File.separator + path;
}
return path;
}
/*
* 获取classpath2
*/
public static String getClassResources(){
String path = (String.valueOf(Thread.currentThread().getContextClassLoader().getResource(""))).replaceAll("file:/", "").replaceAll("%20", " ").trim();
if(path.indexOf(":") != 1){
path = File.separator + path;
}
return path;
}
public static String PathAddress() {
String strResult = "";
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
StringBuffer strBuf = new StringBuffer();
strBuf.append(request.getScheme() + "://");
strBuf.append(request.getServerName() + ":");
strBuf.append(request.getServerPort() + "");
strBuf.append(request.getContextPath() + "/");
strResult = strBuf.toString();// +"ss/";//加入项目的名称
return strResult;
}
}