springboot中Thymeleaf和Freemarker模板引擎的区别

Thymeleaf和Freemarker的区别
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

目前企业中:主要用Freemarker做静态页面或是页面展示
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

thymeleaf优点:静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。

配置文件

pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!--freemarker模块引擎-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

pom.xml

application.yml
server:
port: 81
servlet:
context-path: /sss

buser:
name: ls
pwd: 123
age: 19

spring:
thymeleaf:
cache: false
freemarker:
# 设置模板后缀名
suffix: .ftl
# 设置文档类型
content-type: text/html
# 设置页面编码格式
charset: UTF-8
# 设置页面缓存
cache: false
# 设置ftl文件路径,
template-loader-path: classpath:/templates
mvc:
static-path-pattern: /static/**

Thymeleaf
大量的数据我暂时不会去实验,如今只有一小部分:
参考:Thymeleaf的基本语法

thymeleaflist.html

Title

1、传普通值(String)

2、传集合(list)

用户名字用户密码用户年龄

3、传一个html页面代码过来

thymeleafController.java

package com.liwangwang.springboot.controller;

import com.liwangwang.springboot.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

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

/**

  • @authorliwangwang

  • @site www.liwangwang.com

  • @company xxx公司

  • @create 2019-11-08 11:29
    */
    @Controller
    @RequestMapping(“thymeleaf”)
    public class thymeleafController {
    private ModelAndView modelAndView;

    @RequestMapping(“list”)
    public ModelAndView list(){
    modelAndView = new ModelAndView();

     //一、简单传值String
     modelAndView.addObject("uname","李四");
    
     //二、传list集合
     List list = new ArrayList();
     list.add(new User("李四","123",18));
     list.add(new User("王五","123",19));
     list.add(new User("小明","123",20));
     modelAndView.addObject("userList",list);
    
     //三、传一个html页面
     modelAndView.addObject("tohtml","<span style='color:red;'>这是thymeleaf的html页面</span>");
    
     modelAndView.setViewName("thymeleaflist");
     return modelAndView;
    

    }

}

Freemarker
学习网站 Freemarker的基本语法

freemarkerlist.ftl

Title

1、传普通值(String)

${rname}

2、传集合(list)

<#list roleList as role >
角色id角色名字
${role.rid}${role.rname}

4、如何获取项目名

${springMacroRequestContext.contextPath}

5、如何定义局部变量(assign)/全局变量(global)

<#assign ww1> ${springMacroRequestContext.contextPath}

<#global ww2>
${springMacroRequestContext.contextPath}
</#global>

w w 1 和 {ww1}和 ww1{ww2}

freemarkerController.java

package com.liwangwang.springboot.controller;

import com.liwangwang.springboot.entity.Role;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

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

/**

  • @authorliwangwang

  • @site www.liwangwang.com

  • @company xxx公司

  • @create 2019-11-08 15:49
    */
    @Controller
    @RequestMapping(“freemarker”)
    public class freemarkerController {

    private ModelAndView modelAndView;

    @RequestMapping(“list”)
    public ModelAndView list(){
    modelAndView = new ModelAndView();

     //一、简单传值String
     modelAndView.addObject("rname","李四");
    
     //二、传list集合
     List list = new ArrayList();
     list.add(new Role("1","用户"));
     list.add(new Role("2","会员"));
     list.add(new Role("3","管理员"));
     modelAndView.addObject("roleList",list);
    
     //三、传一个html页面
     modelAndView.addObject("tohtml","<span style='color:red;'>这是thymeleaf的html页面</span>");
    
     modelAndView.setViewName("freemarkerlist");
     return modelAndView;
    

    }

}
后记
这个是讲是讲不完的,可以去查看官网文档和这两篇:

Thymeleaf:学习网站https://juejin.im/post/5c271fbde51d451b1c6ded58
Freemarker:学习网站 https://juejin.im/post/5b598eccf265da0f4e62dfbc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值