`
xihuan&java
  • 浏览: 162099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

freemark

 
阅读更多
templtUtil:
public static final String P_TEMPLATE = "p.ftl";
public static final String TEMPLATE = "pr.ftl";
public static final String TEMPLATE_PATH = "/vm";
public static final String PREVIEW_HTML = "/pr.html";

    public static Template configTemplate(DynamoHttpServletRequest request, String temp) throws IOException {
    Configuration config = new Configuration();
    ServletContext sc = request.getSession().getServletContext();
    config.setDirectoryForTemplateLoading(new File(sc.getRealPath(TEMPLATE_PATH)));
    config.setObjectWrapper(new DefaultObjectWrapper());
    Template template = config.getTemplate(temp, "UTF-8");
    return template;
    }

    public static void toPreview(DynamoHttpServletRequest request, String temp, Map<?, ?> root){
        try {
        String previewPath = request.getSession().getServletContext().getRealPath("")+PREVIEW_HTML;
        Template template = configTemplate(request, temp);
        FileOutputStream fos = new FileOutputStream(previewPath);
        Writer out = new OutputStreamWriter(fos, "UTF-8");
            template.process(root, out);
            out.flush();
            out.close();
        } catch (Exception e) {
        e.printStackTrace();
        }
    }

servlet代码:
public boolean promotionPicPreview(DynamoHttpServletRequest request,DynamoHttpServletResponse response) {
if (promotionPicRequest(request, response)) {
try {
response.setContentType("text/plain;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
response.sendRedirect(this.PREVIEW);
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}

public boolean promotionPicSave(DynamoHttpServletRequest request,DynamoHttpServletResponse response) {
try {
if (promotionPicRequest(request, response)) {
File previewFile = new File(request.getSession().getServletContext().getRealPath(CreateHtmlUtil.PREVIEW_HTML));
InputStream is = new FileInputStream(previewFile);
response.reset();
response.setContentType("application/x-msdownload;charset=UTF-8");
response.addHeader("Content-Disposition","attachment; filename=\"" + PROMOTION_HTML + "\"");
byte[] b = new byte[1024];
int len;
while ((len=is.read(b)) >0) {
response.getOutputStream().write(b,0,len);
}
is.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
}

public boolean promotionPicRequest(DynamoHttpServletRequest request,DynamoHttpServletResponse response){
String topBanner = request.getParameter(TOP_BANNER);
String backColor = request.getParameter(BACK_COLOR);
String moreActivity = request.getParameter(MORE_ACTIVITY);
String[] banner = request.getParameterValues(BANNER);
String[] pic1 = request.getParameterValues(PIC_1);
String[] picLink1 = request.getParameterValues(PIC_LINK_1);
String[] pic2 = request.getParameterValues(PIC_2);
String[] picLink2 = request.getParameterValues(PIC_LINK_2);
String[] pic3 = request.getParameterValues(PIC_3);
String[] picLink3 = request.getParameterValues(PIC_LINK_3);
String[] pic4 = request.getParameterValues(PIC_4);
String[] picLink4 = request.getParameterValues(PIC_LINK_4);
try {
Map<String, Object> root = new HashMap<String, Object>();
List<Map<String, Object>> lines = new ArrayList<Map<String, Object>>();
for (int i=0; i < pic1.length; i++) {
String ban = banner[i];
Map<String, Object> line = new HashMap<String, Object>();
List<Map> picsList = new ArrayList<Map>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("pic1", pic1[i]);
map.put("pic2", pic2[i]);
map.put("pic3", pic3[i]);
map.put("pic4", pic4[i]);
map.put("picLink1",picLink1[i]);
map.put("picLink2", picLink2[i]);
map.put("picLink3", picLink3[i]);
map.put("picLink4", picLink4[i]);
picsList.add(map);
line.put("pics", picsList);
line.put("banner", ban);
lines.add(line);
}
root.put("top_banner", topBanner);
root.put("back_color", backColor);
root.put("more_activity", moreActivity);
root.put("lines", lines);

CreateHtmlUtil.toPreview(request, CreateHtmlUtil.PIC_TEMPLATE, root);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

模板代码:
<#list lines as line>
<#if line.xxx != "" >
   
</#if>
<#list line.ps as p>
${p.xxx}
  </#list>
</#list>
分享到:
评论

相关推荐

    freemark资料及eclipse的freemark插件

    标题中的"freemark资料及eclipse的freemark插件"表明我们将讨论关于FreeMarker的学习资源以及如何在Eclipse中使用FreeMarker插件进行开发。 FreeMarker的核心概念包括模板、数据模型和配置。模板是HTML或者其他文本...

    实现FreeMark读取模板生成HTML

    在描述中提到的“实现FreeMark读取到json数据”,意味着你可能需要将JSON对象转换为FreeMarker的数据模型。这可以通过使用Jackson或Gson等库来实现。例如,如果你有一个JSON字符串: ```json { "name": "张三", ...

    FreeMark Jar包 包括 中文 官方文档

    这个压缩包包含的是FreeMark的中文官方文档,对于理解和使用FreeMark非常有帮助。 "FreeMarker_2.3.23_Manual_zh_CN.chm" 是FreeMark的2.3.23版本的中文帮助文档,通常以CHM(Microsoft Compiled HTML Help)格式...

    Freemark标签

    主要介绍了freemark标签的相关基础知识,基本上了解Freemark标签的应用

    Struts2+Freemark

    在"Struts2+Freemark 做到一个例子"中,你可能会看到以下的实践步骤: 1. 创建Action类并实现相关业务逻辑。 2. 编写FreeMarker模板文件(通常以`.ftl`为扩展名),定义视图布局和数据展示方式。 3. 在Struts2配置...

    Freemark指南

    ### Freemark指南知识点详解 #### 一、概览 **Freemark**是一种强大的模板引擎,主要用于将数据模型与表示层分离。它通过一种简洁而强大的语法来实现动态内容的渲染,使得开发者能够更加灵活地控制页面布局和内容...

    freemark开发指南(入门)

    FREEMARK资料,开发入门指南 是开发人员了解FREEMARK的一本入门资料

    freemark制定excel下载模板示例

    当下载的excel格式内容比较复杂时,用程序生成excel文件就显得力不从心。这时采用excel模板化,更加便捷高效。本资源基于springboot+freemark模板做的示例。只需要了解下freemark基本语法即可。

    Freemark模板使用

    本教程适用于初学者,旨在快速引导你掌握Freemark的基本使用方法。我们将通过几个关键步骤来理解并实践如何在Java环境中配置和使用Freemark。 首先,你需要在项目中引入Freemark的库文件。在这个例子中,我们导入了...

    基于iText和flying saucer结合freemark生成pdf 范例

    基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/resources/config/fonts...

    springboot+mybaits+freemark+mysql

    springboot 集成mybits mysql和freemark模板引擎demo,本demo在mybaits中sql用到springboot默认注解sql以及spring的mapping映射*.xml 两种方式,而且配置操作日志(sql打印)

    springboot集成mybatis分页,freemark,spring,logback完整小例子

    标题中的“springboot集成mybatis分页,freemark,spring,logback完整小例子”表明这是一个关于Spring Boot项目,其中整合了MyBatis用于数据库操作,FreeMarker作为模板引擎处理视图,以及Spring框架和Logback日志系统...

    freemark 资料学习

    在你提供的资料中,"freemark中文资料"和"freemark教程"是学习的关键。它们可能包含了Freemarker的基本概念解释、实例演示、常见问题解答等。"freemark基础和高级教程"则更深入地讲解了Freemarker的各种特性,是进阶...

    导出pdf的一种实现方式 freemark+itext

    要实现“freemark+itext”导出PDF的过程,首先需要创建一个FreeMarker模板,这个模板定义了PDF的布局和样式。模板中可以包含变量,这些变量将在运行时被实际的数据替换。例如,你可以创建一个如下的FTL(FreeMarker ...

    eclipse freemark插件

    “eclipse freemark插件”是为了在Eclipse中提供对FreeMarker模板语言的集成支持。安装此插件后,开发者可以在Eclipse中直接编写、调试和预览FreeMarker模板,极大地提高了工作效率。 该插件的安装方法相对简单:...

    freemark_java_test.rar_freeMark ja_freemark_java freemark

    这个“freemark_java_test.rar”压缩包包含了与FreeMarker相关的示例源码,用于演示如何在Java项目中有效利用FreeMarker模板语言。 FreeMarker的核心概念是模板和数据模型。模板是HTML、XML或其他格式的静态文本,...

    test_Freemark freemark的基础入门小程序

    在这个"test_Freemark freemark的基础入门小程序"中,我们将探讨Freemarker的基本概念、语法以及如何通过运行`Test.java`来生成`test_freemark.html`文件。 1. **Freemarker模板引擎基础**: Freemarker是基于模板...

    Freemark基础入门+深入

    相比Velocity,Freemarker提供了更多高级特性,如过程调用、递归和闭包回调,使其能处理复杂的逻辑和数据操作。这篇文章将引导你从基础开始了解并深入探索Freemarker。 1. **基本语法** Freemarker使用特定的语法...

    freemark开发指南详解

    本篇将深入讲解Freemarker的开发指南,帮助你更好地理解和使用这一工具。 1. **Freemarker基础概念** - **模板语言**:Freemarker使用的是基于文本的模板语言,它不包含任何编程语法,而是通过简单的标记来控制...

Global site tag (gtag.js) - Google Analytics