目录
- 前言
- Thymeleaf和Freemarker的区别
- 配置文件
- pom.xml
- application.yml
- Thymeleaf
- Freemarker
- 后记
前言
这两个都是属于模板引擎,但是各有各的好处,
enn,在市面上比较多的也就是jsp、freemarker、velocity、thymeleaf等页面方案。
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
org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-freemarker
application.yml
server: port: 81 servlet: context-path: /sssbuser: name: ls pwd: 123 age: 19spring: 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;@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","这是thymeleaf的html页面"); modelAndView.setViewName("thymeleaflist"); return modelAndView; }}
Freemarker
学习网站 Freemarker的基本语法()
freemarkerlist.ftl
Title
1、传普通值(String)
${rname}
2、传集合(list)
角色id 角色名字 ${role.rid} ${role.rname} #list>
3、包含内容
4、如何获取项目名
${springMacroRequestContext.contextPath}
5、如何定义局部变量(assign)/全局变量(global)
${springMacroRequestContext.contextPath}#assign> ${springMacroRequestContext.contextPath}#global>${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;@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","这是thymeleaf的html页面"); modelAndView.setViewName("freemarkerlist"); return modelAndView; }}
后记
这个是讲是讲不完的,可以去查看官网文档和这两篇: