您现在的位置是:主页 > news > 深圳vi设计公司联系/seo教程自学
深圳vi设计公司联系/seo教程自学
admin2025/5/5 7:17:51【news】
简介深圳vi设计公司联系,seo教程自学,八宝山做网站的公司,互联网新项目在哪里找Freemarker 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTMLWeb页面,特别是基于MVC模式的应用程序. FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个…
Freemarker 简介
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.
FreeMarker被设计用来生成HTMLWeb页面,特别是基于MVC模式的应用程序.
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件,FreeMarker与Web容器无关,即在Web运行时.它并不知道Servlet或HTTP。
它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java文件等…
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
特点
- 轻量级模板引擎,不需要Servlet环境就可以很轻松的嵌入到应用程序中
- 能生成各种文本,如html,xml,java,等
- 入门简单,它是用java编写的,很多语法和java相似
使用
默认扩展名为 .ftl,放在templates文件夹中,如果想改变,可以通过application配置文件中添加spring.freemarker.suffix=.html,更改后就会找.html结尾的文件模板
为什么使用Freemarker
- SpringBoot虽然支持jsp,但是官方不推荐使用
- SpringBoot官方推荐使用Thymeleaf模板引擎,但是Thymeleaf并没有Freemarker好用
Freemarker与Thymeleaf的比较
thymeleaf优点:
- 静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调
- springboot官方推荐方案
thymeleaf缺点:
- 模板必须符合xml规范,不方便使用,js脚本必须加入/*<![CDATA[ */标识 ]] ,否则一个&符号就会导致后台模板合成抛异常,而且错误信息巨不好找,在html中含有&等符号,还需要转义,太麻烦
取值
${值/对象名.属性名},如果对象可能为null,则使用 ${值/对象名.属性名!""}双引号中可选择如果为null时显示什么内容
获得boolean需要 ${布尔值?string(“true”,“false”)},获得日期需要 ${日期值?string(“yyyy-MM-dd”)}
不被当html解析
${值/对象名.属性名?html}
在页面中自定义变量
<#assign 属性名 = 属性值>
在List集合取值
<#list 要遍历的集合名 as item>
${item} 取值
</#list>
对Map集合取值
<#list map?keys as key>
${key}: ${map[key]}
</#list>
if判断
<#if 条件>
条件成功后显示的内容
<#else>
上面条件不成立后显示的内容
</#if>
if-else 判断
<#if 条件>
条件成功后显示的内容
<#else>
上面条件不成立后显示的内容
</#if>
if-elseif-else判断
<#if 条件1>
条件1成立后显示的内容
<#elseif 条件2>
条件2成立后显示的内容
<#elseif 条件…>
…
<#else>
上面条件不成立后显示的内容
</#if>
引入其他模板
<#include “/cc.html”>
在idea中使用freemarker
pom添加依赖(可在创建项目时添加)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>
-
在templates下创建freemarker
-
controller
-
在freemarker页面中引入js
freemarker页面的一些使用代码
ftl页面:
<body>第一个freemarker页面<br />${stu1.stuDate?string("yyyy-MM-dd")} <#--时间类型取值--><br />${stu1.stuSex?string("男","女")} <#--boolean类型取值--><br />${stu1.stuAge!"20"} <#--如果属性是空 可以直接!默认为空,也可以!"xx" 默认为xx--><br>${stu1.stuName} <#--取值--><br><#assign num = 18><#--自定义变量-->${num}<hr><#list list1 as li> <#--遍历list集合-->${li} <br></#list><hr><#list map1?keys as key> <#--遍历map集合-->${key}: ${map1[key]}</#list><hr><#assign num1 = 18><#if num1 < 18 > <#--判断条件 -->你还小 <#--判断成立输出的内容--><#else>你成年了</#if><hr><#if num1 lt 20>num1<20<#elseif num1 gt 20> <#--注意 大于号不可以使用时,应转义 gt 小于可以使用(lt) -->num1>20<#else>num1=18</#if><hr></body>
controller层
@RestController
public class FreeController {@RequestMapping("toIndex")public ModelAndView free(){ModelAndView mv = new ModelAndView();mv.setViewName("index");Stu stu = new Stu();stu.setStuId(1);stu.setStuName("<font color='red'>zxf</font>"); /*stu.setStuAge(18);*/stu.setStuSex(true);stu.setStuDate(new Date());mv.addObject("stu1",stu);List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);mv.addObject("list1",list);Map<String,String> map = new HashMap<>();map.put("a","a1");map.put("b","b1");map.put("c","c1");map.put("d","d1");map.put("e","e1");mv.addObject("map1",map);return mv;}
}