FreeMarkerUtil

package com.css.common.util;

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

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;

/**
 * 模板工具类   <br/>
 *
 * @author 何青
 */
public class FreeMarkerUtil {
 
 /**
  * @param templatePath 模块文件的路径
  * @param templateName 模板文件名称
  * @param root 数据模型根对象
  * @param templateEncoding 模板文件的编码方式
  */
 public static String analysisTemplate(String templatePath,String templateName,String templateEncoding,Map<String,Object> root){
  Writer out = null;
  try {
   Configuration config=new Configuration();
   File file=new File(templatePath);
   //设置要解析的模板所在的目录,并加载模板文件
   config.setDirectoryForTemplateLoading(file);
   //设置包装器,并将对象包装为数据模型
   config.setObjectWrapper(new DefaultObjectWrapper());
   
   //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
   Template template=config.getTemplate(templateName,templateEncoding);
   //合并数据模型与模板
   out = new StringWriter();
      template.process(root, out);
      return out.toString();
  } catch (Exception e) {
   e.printStackTrace();
  }finally
  {
   try {
    out.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
  return "";
 }
}

好的,针对您的问题,我提供以下代码示例: 1. 返回HTML源码 在JFinal中,我们可以使用render方法来返回HTML源码,示例代码如下: ``` public void index() { renderHtml("<h1>Hello World!</h1>"); } ``` 在上述示例中,我们使用renderHtml方法来返回HTML源码,方法中传入的参数为HTML代码。 2. JFinal Freemarker生成静态HTML完整例子 在JFinal中,我们可以使用Freemarker来生成静态HTML页面,示例代码如下: ``` public void index() { // 设置模板文件路径 String templatePath = "/WEB-INF/templates/index.ftl"; // 获取数据 String data = "Hello World!"; // 设置输出文件路径 String outputPath = "/WEB-INF/output/index.html"; // 生成静态HTML页面 renderHtml(FreemarkerUtil.render(templatePath, data, outputPath)); } ``` 在上述示例中,我们使用了一个名为FreemarkerUtil的工具类,示例代码如下: ``` public class FreemarkerUtil { /** * 渲染Freemarker模板 * * @param templatePath 模板文件路径 * @param data 数据 * @param outputPath 输出文件路径 * @return 生成的HTML源码 */ public static String render(String templatePath, Object data, String outputPath) { try { // 获取模板配置 Configuration config = new Configuration(Configuration.VERSION_2_3_30); config.setServletContextForTemplateLoading(JFinal.me().getServletContext(), "/"); config.setDefaultEncoding("UTF-8"); // 获取模板 Template template = config.getTemplate(templatePath); // 渲染模板 StringWriter writer = new StringWriter(); template.process(data, writer); // 输出到文件 File outputFile = new File(JFinal.me().getServletContext().getRealPath(outputPath)); if (!outputFile.getParentFile().exists()) { outputFile.getParentFile().mkdirs(); } Writer fileWriter = new FileWriter(outputFile); template.process(data, fileWriter); fileWriter.flush(); fileWriter.close(); // 返回HTML源码 return writer.toString(); } catch (Exception e) { throw new RuntimeException(e); } } } ``` 在上述示例中,我们首先获取了模板配置并设置了模板文件路径和默认编码,然后获取了模板文件并渲染了数据。接着,我们将生成的HTML源码输出到文件,并返回HTML源码。 3. 支持调用两次render效果,返回JSON数据 在JFinal中,我们可以使用renderJson方法来返回JSON数据,示例代码如下: ``` public void index() { // 设置模板文件路径 String templatePath = "/WEB-INF/templates/index.ftl"; // 获取数据 String data = "Hello World!"; // 设置输出文件路径 String outputPath = "/WEB-INF/output/index.html"; // 生成静态HTML页面 renderHtml(FreemarkerUtil.render(templatePath, data, outputPath)); // 返回JSON数据 renderJson("{\"status\":\"success\"}"); } ``` 在上述示例中,我们首先使用renderHtml方法返回HTML源码,然后使用renderJson方法返回JSON数据。 注意:在JFinal中,只能调用一次render方法来返回响应,如果需要返回多个响应,可以使用renderXXX方法来返回。另外,如果需要在返回JSON数据之前生成静态HTML页面,可以使用renderNull方法来返回空响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值