本篇文章为你整理了07(07年属什么)的详细内容,包含有07年现在多大岁了 07年属什么 0713男团 07式军服 07,希望能帮助你了解 07。
即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件
它是简单的,专用的语言,不是像PHP那样成熟的变成语言。那就意味着要准备数据在在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示以及准备好的数据。在模板中,可以更加专注于如何展现数据,而在模板之外可以专注于要展示什么数据
二、freemarker环境搭建 快速入门
需要创建Spring Boot + Freemarker 工程用于测试模板
2.1、创建测试工程
?xml version="1.0" encoding="UTF-8"?
project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
modelVersion 4.0.0 /modelVersion
groupId com.coolman /groupId
artifactId freemarker-demo /artifactId
version 1.0-SNAPSHOT /version
properties
maven.compiler.source 8 /maven.compiler.source
maven.compiler.target 8 /maven.compiler.target
/properties
dependencies
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-web /artifactId
/dependency
!--freemarker springboot starter--
dependency
groupId org.springframework.boot /groupId
artifactId spring-boot-starter-freemarker /artifactId
/dependency
!-- lombok --
dependency
groupId org.projectlombok /groupId
artifactId lombok /artifactId
/dependency
/dependencies
/project
settings:
template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
suffix: .ftl #指定Freemarker模板文件的后缀名
template-loader-path: classpath:/templates #指定模板文件存放的位置
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);
在resources下创建templates,并创建模板文件freemarker.ftl文件(模板中的插值表达式最终会被freemarker替换成具体的数据)
import freemarker.template.TemplateException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
@RestController
@RequestMapping("/freemarker")
public class FreemarkerController {
// 引入freemarker.template包下的Configuration类,用来获取指定的模板对象
@Autowired
private Configuration configuration;
* 通过模板文件,生成html文件
@GetMapping("/test")
public String getHtml() {
try {
// 使用Configuration的getTemplate方法,指定模板文件,获取模板对象
Template template = configuration.getTemplate("HelloFreemarker.ftl");
// 绑定数据
// 数据1:
HashMap String, Object map = new HashMap ();
map.put("name", "SuperCoolMan");
map.put("age", 99);
FileWriter fileWriter = new FileWriter("E:\\系统默认\\桌面\\news-init\\freemarker-demo\\src\\main\\resources\\testHtml\\HelloFreemarker.html");
template.process(map, fileWriter);
return "SUCCESS!";
} catch (IOException TemplateException e) {
e.printStackTrace();
return "ERROR!";
import freemarker.template.TemplateException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
@RestController
@RequestMapping("/freemarker")
public class FreemarkerController {
// 引入freemarker.template包下的Configuration类,用来获取指定的模板对象
@Autowired
private Configuration configuration;
* 通过模板文件,生成html文件
@GetMapping("/test")
public String getHtml() {
try {
// 使用Configuration的getTemplate方法,指定模板文件,获取模板对象
Template template = configuration.getTemplate("HelloFreemarker.ftl");
// 绑定数据
// 数据1:
HashMap String, Object map = new HashMap ();
map.put("name", "SuperCoolMan");
map.put("age", 99);
// 数据2:
map.put("person", new Person("超级猛男", 18));
FileWriter fileWriter = new FileWriter("E:\\系统默认\\桌面\\news-init\\freemarker-demo\\src\\main\\resources\\testHtml\\HelloFreemarker.html");
template.process(map, fileWriter);
return "SUCCESS!";
} catch (IOException TemplateException e) {
e.printStackTrace();
return "ERROR!";
插值(Interpolation):即${...}部分,freemarker会用真实的值代替${}(PS:如果返回的数据中没有该真实值,freemarker服务会直接报错)
FTL指令:和HTML标记类似,名字前加#予以区分,Freemarker会解析标签中的表达式或逻辑
文本,仅文本信息,这些不是freemarker的注释、插值、FTL指令的内容会被freemarker忽略解析,直接输出内容
为了Controller尽可能简略,创建一个getData方法,返回一个Map集合,Controller方法直接调用这个getData生成测试数据即可
private Map String, Object getData() {
HashMap String, Object map = new HashMap ();
// String类型:
map.put("name", "SuperCoolMan");
map.put("age", 99);
// Person类型:
map.put("person", new Person("超级猛男", 18));
return map;
#list wifeList as wife
序号:${wife_index + 1} br/ #--freemarker中FTL指令自带的序号属性,默认从0开始--
姓名:${wife.name} br/
年龄:${wife.age} br/ br/
/#list
HashMap String, Object anOtherMap = new HashMap ();
anOtherMap.put("smallWife1", new Person("莫妮卡", 18));
anOtherMap.put("smallWife2", new Person("玛丽莲梦露", 18));
map.put("smallWife", anOtherMap);
b Map + Person 类型中的数据展示: /b br/
b 方式一:通过map[keyname].property 输出对应信息: /b br/
性别:${wifeMap[smallWife1].name} br/
年龄:${wifeMap[smallWife1].age} br/
b 方式二:通过map.keyname.property 输出对应信息: /b br/
性别:${wifeMap.smallWife2.name} br/
年龄:${wifeMap.smallWife2.age} br/
if指令即判断指令,是常用的FTL指令,freemarker在解析的时候遇到if会进行判断,条件为真则输出if中间的内容,否则跳过内容不在输出
例:${(stu.bestFriend.name)!"默认值"}表示如果stu或者bestFriend或者name为空默认显示默认值
point是数字型,使用${point}会显示这个数字的值,每三位使用逗号隔开
如果不像显示为每三位分隔的数字,可以使用c函数将数字转成字符串输出
指令格式如下所示
${point?c}
以上就是07(07年属什么)的详细内容,想要了解更多 07的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。