freemarker的使用:
1、拷贝freemarker.jar包到类路径即可(struts2中freemarker-2.316是必须引入的jar包)
2、Freemarker非常容易使用,定义好模版之后,编程创建对象模型,并将数据
模型与模版结合产生输出即可
3、Freemarker的关键在于模版文件的编写
测试:
1、  定义模板文件:(目录为E:/test)
test.ftl:
输出模板中的信息:${abc}
包含其他模板文件:<#include "test1.ftl">

Test1.ftl:
test11111.ftl:${abc}

2、  测试freemarker类:(引入相应jar)
[java] view plaincopy
public class TestFreeMarker { 
 
@Test 
public void testFreeMarker() { 
    String dir = "E:/test"; 
    try { 
        Configuration cfg = new Configuration(); 
         
        //定义从哪里加载模板文件 
        cfg.setDirectoryForTemplateLoading(new File(dir)); 
         
        //定义从哪里获取模板:FreeMarkerManager.class所在的包下的templates包(文件夹) 
        //cfg.setTemplateLoader(new ClassTemplateLoader 
        //  (FreeMarkerManager.class,"templates")); 
         
         
        //定义对象包装器 
        cfg.setObjectWrapper(new DefaultObjectWrapper()); 
         
        //定义异常处理器 
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); 
         
        //定义数据模型 
        Map root = new HashMap(); 
        root.put("abc", "hello,fled"); 
         
        //通过freeMarker解释模板,首先需要获得template 
        Template template = cfg.getTemplate("test.ftl"); 
         
        //定义解释完模板后的输出 
        PrintWriter printWriter = new PrintWriter( 
                new BufferedWriter( 
                        new FileWriter(dir+"/out.txt") 
                ) 
        ); 
         
        //解释模板 
        template.process(root, printWriter); 
         
    } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
    } 
     

3、 执行测试类,打开输出文件查看结果:
输出结果为:
test.ftl:
输出模板中的信息:hello,fled
包含其他模板文件:test11111.ftl:hello,fled
4、 带格式的循环等模板文件示例;
 <table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0">
<#assign i=0>
<#list form.fields as field>
    <#if field_index % 2 = 0>
        <#assign i = i+1>     
        <tr>
    </#if>
        <td class="tdEditLabel" >${field.fieldLabel}</td>
        <td class="tdEditContent"><#include "${field.fieldInput.template}">
    <#if i == 0 || !field_has_next>
        <#assign i = 0>
        </tr>
    </#if>
</#list>
</table>