一.freemaker
1.简介
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据
2.freemark构建
1、首先要构建一个freemark工程 步骤和之前构建springBoot项目大致相同,但是多了一步就是要勾选模板引擎中的apache freemark 2、导入pom依赖,更改资源文件 pom依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
application.yml配置文件:
在这里插入代码片server:
port: 8080
spring:
datasource:
username: *****
password: *****
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/crm?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
freemarker:
allow-request-override: false
request-context-attribute: req
suffix: .ftl
content-type: text/html;charset=utf-8
enabled: true
cache: false
template-loader-path: classpath:/templates/
charset: UTF-8
logging:
level:
com.zxy.code.mapper: debug
注意 模板加载路径:要放在该路径下
#设定模板的加载路径,多个以逗号分隔,默认: [“classpath:/templates/”] template-loader-path: classpath:/templates/
在Java中写配置freemaker的类
package com.chinaunicom.ibos.order.web.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import freemarker.template.TemplateModelException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.annotation.PostConstruct;
/**
* Freemarker配置
*
* @author Mark sunlightcs@gmail.com
*/
@Configuration
public class FreemarkerConfig {
@Value("${spring.profiles.active}")
private String activeProfile;
@Autowired
private freemarker.template.Configuration config;
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() throws TemplateModelException{
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("classpath:/templates");
Map<String, Object> variables = new HashMap<>(1);
variables.put("param", "param");
configurer.setFreemarkerVariables(variables);
Properties settings = new Properties();
settings.setProperty("default_encoding", "utf-8");
settings.setProperty("number_format", "0.##");
configurer.setFreemarkerSettings(settings);
return configurer;
}
@PostConstruct
public void setConfigure() throws Exception {
config.setSharedVariable("activeProfile", activeProfile);
}
}
3、新建user界面 如果没有模板的话,到设置里面进行新建一个freemark模板
在生成的user.ftl模板中,通过${}的形式获取controller控制层中传的数据集
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>hello,家人们</h1>
<h1>msg:${msg}</h1>
<div>
<
<h1>msg:${msg}</h1>
</
<
<div>
<h1>${users.userName}</h1>
<h1>${users.password}</h1>
</div>
</
</div>
</body>
</html>
4.创建controller控制层,使用ModelAndView返回数据
返回以上数据值,则表示 新建freemark模板成功
更多freemaker介绍: https://blog.csdn.net/zxy15974062965/article/details/122818338
官网: http://freemarker.foofun.cn/ref_builtins_boolean.html
|