Freemarker模板引擎详解(一)-------入门

版权声明:原创 https://blog.csdn.net/rambler_designer/article/details/89031642

Freemarker简介

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件配置文件源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件

                                                                                                                                                                                 ------引用百度百科

根据我自己的理解,freemarker其实和jsp等模板引擎一样,服务端提供数据模型,前端提供一个模板

freemarker将数据根据约定的方法填入具体的模板内,最终呈现出一个具体的页面,这就是freemarker的原理

 一、举个简单的例子

实体类User.java

package com.rambler.domain;

public class User {

    private String username;
    private String password;
    private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public User(){

    }

    public User(String username,String password,int age){
        this.password = password;
        this.username = username;
        this.age = age;
    }

}

数据来源,此处用的springmvc,其他的也一样,提供数据源

package com.rambler.controller;

import com.rambler.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;


@Controller
public class MainController {

    @RequestMapping("/user/list")
    public String list(Model model){
        List<User> list = new ArrayList<User>();
        User user = new User("rambler","123456",15);
        User user2 = new User("rambler","123456",15);
        list.add(user);
        list.add(user2);
        model.addAttribute("user",list);
        return "user";
    }
}

模板user.ftl

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <meta content="text/html;charset=utf-8"></meta>
    <title>Hello World!</title>
</head>
<body>
<div class="container">
    <table class="table">
        <caption>用户列表</caption>
        <thead>
        <tr>
            <th>姓名</th>
            <th>密码</th>
            <th>年龄</th>
        </tr>
        </thead>
        <tbody>
        <#list user as user>
            <tr>
                <td>${user.username}</td>
                <td>${user.password}</td>
                <td>${user.age}</td>
            </tr>
        </#list>
        </tbody>
    </table>
</div>
</body>
</html>

效果

二、分析

在这个例子中,服务器端封装了一个User的集合,通过Model发送到ftl模板中

model.addAttribute("user",list);

可见,发送的数据名称为user,因此freemarker通过user访问这个数据模型

类似如下freemarker的循环结构

<#list user as user>
            <tr>
                <td>${user.username}</td>
            </tr>
</#list>

通过<#list>标识这是一个标签其中第一个参数user是获取服务器发送来的user,第二个是user集合中的一个元素,也就是一个User对象

通过这种方式进行遍历,和java的遍历增强一样

for(User user:user){

    user.getUsername();

}

通过这种方式访问user中的每一个user

每一个user在通过${user.username}访问封装的User类的username属性(通过的是该类的get方法,因此必须有get方法)

这就是第一个入门例子,大家有疑问可以在评论区评论,同时欢迎大家关注我后续发布的有关freemarker的博客

猜你喜欢

转载自blog.csdn.net/rambler_designer/article/details/89031642