freemarker学习

freemakrer可以用来实现网页静态化

/**
     * freemarker的使用方法
     *
     * @throws IOException
     * @throws TemplateException
     */
    @Test
    public void test1() throws IOException, TemplateException {
        //1.创建模板对象
        //2.创建Configuration对象
        Configuration configuration = new Configuration(Configuration.getVersion());
        //3.设置模板文件保存的目录
        configuration.setDirectoryForTemplateLoading(new File("D:\\Program Files\\idea-workspace-e3mall\\e3-item-web\\src\\main\\webapp\\WEB-INF\\ftl"));
        //4.模板文件的编码格式,一般为utf-8
        configuration.setDefaultEncoding("utf-8");
        //5.加载一个模板文件,创建一个模板对象
        Template template = configuration.getTemplate("hello.ftl");
        //6.创建一个数据集,可以是pojo,或者是map,推荐使用map
        Map map = new HashMap<>();
        //${key}
        map.put("hello", "你好!");
        //pojo
        Student student = new Student(1, "张三", 18, "北京");
        map.put("student", student);
        //list
        List list = new ArrayList();
        list.add(new Student(1, "张三1", 18, "北京"));
        list.add(new Student(2, "张三2", 18, "北京"));
        list.add(new Student(3, "张三3", 18, "北京"));
        list.add(new Student(4, "张三4", 18, "北京"));
        list.add(new Student(5, "张三5", 18, "北京"));
        list.add(new Student(6, "张三6", 18, "北京"));
        list.add(new Student(7, "张三7", 18, "北京"));
        list.add(new Student(8, "张三8", 18, "北京"));
        list.add(new Student(9, "张三9", 18, "北京"));
        map.put("studentList", list);
        //date
        map.put("date", new Date());
        //null
        map.put("val", "123");

        //7.创建一个writer对象,指定输出文件的路径及文件名
        Writer out = new FileWriter("D:\\Program Files\\idea-workspace-e3mall\\e3-item-web\\src\\main\\webapp\\temp\\hello.html");
        //8.生成静态页面
        template.process(map, out);
        //9.关闭流
        out.close();
    }

hello.ftl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student</title>
</head>
<body>
${hello}<br><br>

<h2>学生信息:</h2><br>
学号:${student.id}<br>
姓名:${student.name}<br>
年龄:${student.age}<br>
地址:${student.address}<br>
<br><br>
<table border="1">
    <tr>
        <th>序号</th>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>地址</th>
    </tr>
        <#list studentList as student>
            <#if student_index % 2 == 0>
        <tr bgcolor="#faebd7">
            <#else>
        <tr bgcolor="blue">
            </#if>
            <td>${student_index}</td><#--索引-->
            <td>${student.id}</td>
            <td>${student.name}</td>
            <td>${student.age}</td>
            <td>${student.address}</td>
        </tr>
        </#list>
</table>
<br>
<br>
当前日期:${date?date}<br>
当前日期:${date?time}<br>
当前日期:${date?datetime}<br>
当前日期:${date?string("yyyy/MM/dd HH:mm:ss")}<#--自定义时间格式--><br>

null值的处理:${val!"val的值为null"}<br>

判断val的值是否为null:<br>
<#if val??>
    val中有内容
<#else>
    val的值为null
</#if>
<br>
引用模板测试:<br>
<#include "student.ftl">
</body>
</html>

hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student</title>
</head>
<body>
你好!<br><br>

<h2>学生信息:</h2><br>
学号:1<br>
姓名:张三<br>
年龄:18<br>
地址:北京<br>
<br><br>
<table border="1">
    <tr>
        <th>序号</th>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>地址</th>
    </tr>
        <tr bgcolor="#faebd7">
            <td>0</td>
            <td>1</td>
            <td>张三1</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="blue">
            <td>1</td>
            <td>2</td>
            <td>张三2</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="#faebd7">
            <td>2</td>
            <td>3</td>
            <td>张三3</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="blue">
            <td>3</td>
            <td>4</td>
            <td>张三4</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="#faebd7">
            <td>4</td>
            <td>5</td>
            <td>张三5</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="blue">
            <td>5</td>
            <td>6</td>
            <td>张三6</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="#faebd7">
            <td>6</td>
            <td>7</td>
            <td>张三7</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="blue">
            <td>7</td>
            <td>8</td>
            <td>张三8</td>
            <td>18</td>
            <td>北京</td>
        </tr>
        <tr bgcolor="#faebd7">
            <td>8</td>
            <td>9</td>
            <td>张三9</td>
            <td>18</td>
            <td>北京</td>
        </tr>
</table>
<br>
<br>
当前日期:2018-5-14<br>
当前日期:1:12:49<br>
当前日期:2018-5-14 1:12:49<br>
当前日期:2018/05/14 01:12:49<br>

null值的处理:123<br>

判断val的值是否为null:<br>
    val中有内容
<br>
引用模板测试:<br>
<h2>学生信息:</h2><br>
学号:1<br>
姓名:张三<br>
年龄:18<br>
地址:北京<br>
<br><br></body>
</html>

student.ftl

<h2>学生信息:</h2><br>
学号:${student.id}<br>
姓名:${student.name}<br>
年龄:${student.age}<br>
地址:${student.address}<br>
<br><br>

html页面显示效果:


freemarker和springmvc整合:

    <!--springmvc整合freemarker-->
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
        <property name="defaultEncoding" value="utf-8"/>
    </bean>
@Controller
public class HtmlGenController {

    @Resource
    private FreeMarkerConfigurer freemarkerConfig;

    @RequestMapping("/genhtml")
    @ResponseBody
    public String htmlGenTest(HttpServletRequest request) throws IOException, TemplateException {

        Configuration configuration = freemarkerConfig.getConfiguration();
        //加载模板
        Template template = configuration.getTemplate("test.ftl");
        //创建一个数据集
        Map data = new HashMap<>();
        data.put("test",123456);
        //指定文件输出路径及文件名
        String realPath = request.getSession().getServletContext().getRealPath("/temp");
        System.out.println(realPath);
        Writer out = new FileWriter(realPath + "/test.html");
        template.process(data,out);
        //输出文件,关闭流
        out.flush();
        out.close();
        return "SUCCESS";
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值