Freemarker工具类

Freemarker文件模板工具类

提供了解析生成文件、解析生成字符串的两个方法!

package org.lunatic.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class FreemarkerUtil {

    private static final Integer TEMPLATE_LOADING_FILE = 1;
    private static final Integer TEMPLATE_LOADING_PROJECT = 2;
    private static Configuration freemarkerConfig;

    static{
        try {
            initConfig(TEMPLATE_LOADING_FILE, "E:/Lunatic/workspaces/FreemarkerDemo/ftl");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 初始化Freemarker参数配置
     * @param type 模板文件夹路径类型,1:文件系统路径;2:项目路径
     * @param dir 模板文件夹路径,当type=1时,文件系统中的绝对路径;当type=2时,项目中相对路径,与src同级开始,以"/开头"
     * @throws Exception
     */
    public static void initConfig(Integer type,String dir) throws Exception{
        /**
         * 通过Freemaker的Configuration读取相应的ftl,配置Freemarker模板参数信息
         */
        freemarkerConfig = new Configuration();
        /**
         * 设置模板本件夹路径:
         * 1、setDirectoryForTemplateLoading,文件系统绝对路径
         * 2、setClassForTemplateLoading项目相对路径
         */
        if(TEMPLATE_LOADING_FILE == type){
            try {
                freemarkerConfig.setDirectoryForTemplateLoading(new File(dir));
            } catch (IOException e) {
                throw new Exception("设置模板文件夹异常",e);
            }            

        }
        if(TEMPLATE_LOADING_PROJECT == type){
            freemarkerConfig.setClassForTemplateLoading(FreemarkerUtil.class,dir);
        }
    }

    /**
     * 获取Freemarker模板文件
     * @param name 文件名
     * @return
     */
    public static Template getTemplate(String name) {
        Template temp = null;
        try {
            temp = freemarkerConfig.getTemplate(name,"UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return temp;

    }

    /**
     * 将解析之后的文件内容保存到文件中
     * @param name 模板文件名
     * @param root 数据Map
     * @param outFile 保存文件路径
     */
    public static void printFile(String name,Map<String,Object> root,String outFile) {
        FileWriter out = null;
        try {
            //通过一个文件输出流,就可以写到相应的文件中
            out = new FileWriter(new File(outFile));
            Template temp = getTemplate(name);
            temp.process(root, out);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        } finally {
            try {
                if(out!=null) out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 将解析之后的文件内容返回字符串
     * @param name 模板文件名
     * @param root 数据Map
     * @return
     */
    public static String printString(String name,Map<String,Object> root) {
        StringWriter out = new StringWriter();
        try {
            //通过一个文件输出流,就可以写到相应的文件中
            Template temp = getTemplate(name);
            temp.process(root, out);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        } finally {
            try {
                if(out!=null) out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return out.toString();
    }

    /**
     * 将解析之后的文件内容打印在控制台
     * @param name 模板文件名
     * @param root 数据Map
     */
    public static void printConsole(String name,Map<String,Object> root) {
        System.out.println(printString(name, root));
    }

}
时间: 2024-10-07 18:00:05

Freemarker工具类的相关文章

java工具类-FreeMarker

package com.huawei.it.citools.utils; import java.io.File;import java.io.IOException;import java.io.StringWriter;import java.util.Map; import org.apache.log4j.Logger; import com.huawei.it.citools.commons.ApplicationException;import com.huawei.it.citoo

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.

Arrays工具类

Arraysd的静态方法能够方便的对数组进行操作,每个方法也加了注释 : 程序: import java.util.*;public class Array{        public static void main(String[] args){                int[]  arr={1,3,4,2};                System.out.println("排序前:");                printArray(arr);//打印原数组

常用工具类(System,Runtime,Date,Calendar,Math)

一.Sy 一个java.lang包中的静态工具类. 三大字段: static PrintStream err "标准"错误输出流. static InputStream in "标准"输入流. static PrintStream out "标准"输出流. 其他常用方法: 描述系统信息: 获取系统属性信息: static Properties getProperties(): (Properties是Hashtable的子类,也就是Map 的子类

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

(九十五)音效播放方法和工具类的制作

音效通过AVFoundation框架实现,是通过函数而不是方法,因此需要进行桥接等操作,具体步骤如下. 进行音效播放,首先要得到音效的URL(只能是本地音频),然后转换为音效ID(唯一),通过ID播放音效. [音效播放方法] ①导入框架主头文件 #import <AVFoundation/AVFoundation.h> ②通过Bundle拿到本地音效,然后调用AudioServicesCreateSystemSoundID函数得到音效ID,ID为0代表无效,以此为依据可进行懒加载 @inter

spring endpoint工具类

工具类代码 @Controller public class EndpointDocController {     private final RequestMappingHandlerMapping handlerMapping;     @Autowired     public EndpointDocController(RequestMappingHandlerMapping handlerMapping) {         this.handlerMapping = handler

web常用的工具类总结

数据库的链接的操作类 package utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBConnection { private static final String DBDRIVER = "com.m

字符串工具类(指定字符串的长度和判断是否为空等方法)

package com.sec.util; /** * 字符串工具类 * @author Administrator * */public class StringUtil { /** * 过滤<,>,\n 字符串的方法 * @param input * @return */ public static String filterHTML(String input){ if(input == null || input.length() == 0){ return input; } input