springboot 中自带的页面渲染工具为thymeleaf ,freemarker这种模板引擎用的也比较多。
一、在spring中springMVC代表着view层组件
二、为什么使用freemarker:简单容易学、逻辑分明
三、freemarker优点:不依赖servlet、网络或者web环境
1、新建maven项目,对应的pom.xml文件如下
4.0.0
spring-cloud
sc-freemarker
0.0.1-SNAPSHOT
jar
sc-freemarker
http://maven.apache.org
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
org.springframework.cloud
spring-cloud-dependencies
Finchley.RELEASE
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-freemarker
2、新建配置文件application.yml
server:
port: 8081
spring:
application:
name: sc-freemarker
freemarker:
allow-request-override: false
cache: true
check-template-location: true
charset:UTF-8
content-type: text/html
expose-request-attributes: false
expose-session-attributes: false
suffix: .ftl
templateEncoding: UTF-8
templateLoaderPath: classpath:/templates/
expose-spring-macro-helpers: false
备注:freemarker有哪些配置项可以参考类
org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties
3、新建一个controller
package sc.freemarker.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import sc.freemarker.model.User;
@Controller
public class FreemarkerController {
@RequestMapping("/getUser")
public StringgetUser(Integer id, Model model){
User u = new User();
u.setId(1);
u.setAge(13);
u.setSex(1);
u.setUserName("黄金");
User l = new User();
l.setId(1);
l.setAge(23);
l.setSex(0);
l.setUserName("白银");
List friends = newArrayList();
friends.add(l);
u.setFriends(friends);
model.addAttribute("user",u);
return"getUser";
}
}
备注:注意最外层的控制层注解只能用@Controller
4、新建模板文件getUser.ftl
Hello World!
welcome${user.userName} to freemarker!
年龄: ${user.age}
性别:
<#ifuser.sex==0> 女 <#elseifuser.sex==1> 男 <#else> 保密
#if>
我的好友:
<#listuser.friends as f> 姓名:${f.userName} , 年龄${f.age}
#list>