简易配置freemarker
FreeMarker 中文官方参考手册http://freemarker.foofun.cn/
FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
创建freemarker模板
点击+号新建一个files,生成一个默认的文件
项目结构
步骤
1.创建maven
项目导入对应的jar包
2.创建目录templaters
,并创建freemarket
模板文件index.ftl
,编写yml文件
3.创建一个运行FreeMarker
模版引擎的 FreeMarkerApplication.java
文件
4.运行main
方法
导入jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
application.yml
server:
port: 9091
#springboot 整合 freemarket
spring:
freemarker:
template-loader-path: /templaters/
suffix: .ftl
FreemarkerApplication
package com.t49.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class FreemarkerApplication {
public static void main(String[] args) {
SpringApplication.run(FreemarkerApplication.class,args);
}
}
代码测试
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
// 直接进入页面
@RequestMapping("/{path}.html")
public String path(@PathVariable String path){
return path;//返回值:与jsp相同- 只返回视图名称
}
}
freemark基本语法
HelloController.java
package com.t49.springboot.controller;
import com.t49.springboot.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
import java.util.*;
@Controller
public class HelloController {
// 直接进入页面
@RequestMapping("/{path}.html")
public String path(@PathVariable String path, Model model){
//普通取值
model.addAttribute("name","zhangsan");
//传递空值
model.addAttribute("sex",null);
//传递boolean值
model.addAttribute("bo",1>2);
//封装对象
User user = new User();
user.setUserName("张三");
user.setPassword("123456");
model.addAttribute("user",user);
//时间类型
model.addAttribute("date1","2021/12/12");
//HTML转义
model.addAttribute("aa","a");
//list集合取值
List list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
model.addAttribute("list1",list);
//对Map集合取值
Map<String,User> map = new HashMap();
map.put("aa",new User(1,"zhangsan","123"));
map.put("bb",new User(2,"lisi","123"));
map.put("cc",new User(3,"wangwu","123"));
model.addAttribute("map",map);
// switch语句
model.addAttribute("sw1",2);
return path;//返回值:与jsp相同- 只返回视图名称
}
}
inde.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$Title$</title>
</head>
<body>
<#--普通取值-->
${name}<br>
<#--对null或者不存在的对象取值,为空时设置默认值-->
${sex! "男"}<br>
<#--传递boolean值-->
${bo?string("true","false")}<br>
<#--封装对象-->
${user.userName} ${user.password}<br>
<#--日期类型-->
<input value="${date1}" pattern="yyyy-MM-dd"/><br>
<#--${date1?string("yyyy-MM-dd")}-->
<#--HTML转义-->
${aa?html}<br>
<#--定义变量-->
<#assign num = 10/>
值= ${num * 10}<br>
<#--list集合取值-->
<#list list1 as item>
${item}
</#list><br>
<#--对Map集合取值-->
<#list map?keys as key>
${key}: ${map[key]}
</#list><br>
<#--if-else判断-->
<#assign num1 = 10/>
<#assign num2 = 100/>
<#if num1 > num2>
123
<#else>
456
</#if><br>
<#--if-else-if级联判断-->
<#if num1 > num2>
123
<#elseif num1 == num2>
456
<#elseif num1 < num2>
789
<#else>
098
</#if>
<br/>
<br/>
<#switch sw1>
<#case 1>
case 1
<#break >
<#case 2>
case 2
<#break >
<#default >
default 1
</#switch>
<#--<#switch sw1>-->
<#-- <#case 1>-->
<#-- 123-->
<#-- <#break>-->
<#-- <#case 2>-->
<#-- 456-->
<#-- <#break>-->
<#-- <#default>-->
<#-- 789-->
<#--</#switch>-->
</body>
</html>