跟着江南一点雨学习SpringBoot(二)整合视图层技术Freemarker
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
Freemarker的学习
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
今天继续学习SpringBoot的知识>>>>>>>>视图层的技术freemarker
提示:以下是本篇文章正文内容,下面案例可供参考
一、freemarker是什么
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
二、freemarker使用步骤
1.导入包
在pom.xml中新增依赖
代码如下(示例):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2.建立bean对象
代码如下(示例):
public class User {
private Long id ;
private String userName;
private String userAddress;
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", userAddress='" + userAddress + '\'' +
'}';
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
}
3.建立Controller层
@Controller
public class UserController {
@GetMapping("/user")
public String user(Model model){
List<User> users = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setId((long)i);
user.setUserName("mixxx>>>"+i);
user.setUserAddress("永德路>>>"+i);
users.add(user);
}
model.addAttribute("users",users);
return "user";
}
}
4.创建视图模版
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<td>编号</td>
<td>用户名</td>
<td>用户地址</td>
</tr>
<#list users as user>
<tr>
<td>${user.id}</td>
<td>${user.userName}</td>
<td>${user.userAddress}</td>
</tr>
</#list>
</table>
</body>
</html>
5.最终页面呈现
三、spring-boot-starter-freemarker一些源码注解分析
(1)FreeMarkerAutoConfiguration.class
FreeMarker的自动配置类,是FreeMarker配置的核心类
@ConditionalOnClass
@ConditionalOnClass({freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class})
这个注解的意思是只有当classpath中存在这个类时,才会建立该Bean,正因为我们导入了FreeMarker包,所以才存在这个类,所以才创建了该Bean
@Import
@Import({FreeMarkerServletWebConfiguration.class, FreeMarkerReactiveWebConfiguration.class, FreeMarkerNonWebConfiguration.class})
注解是用来导入配置类或者一些需要前置加载的类.
(2)FreeMarkerProperties.class
FreeMarker的配置类,里面写着一些默认的配置,例如:
默认将视图文件放哪里:
public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
视图文件后缀是什么:
public static final String DEFAULT_SUFFIX = ".ftlh";
(3)FreeMarkerServletWebConfiguration.class
WEB核心实现类,体现实际页面处理的过程
@ConditionalOnMissingBean
@ConditionalOnMissingBean(
name = {"freeMarkerViewResolver"}
)
该标签说明,如果设置了Resulver就用你自己设置的,如果没有就用默认的freeMarkerViewResolver
四、freemarker常见指令
具体可参考:http://freemarker.foofun.cn/
总结
提示:这里对文章进行总结:
浅学了一下freemarker