首页 > 其他分享 >freemarker 介绍 环境搭建&&快速入门 静态化测试

freemarker 介绍 环境搭建&&快速入门 静态化测试

时间:2024-11-10 23:15:15浏览次数:3  
标签:&& freemarker 创建 name 测试 Student 模板 入门

概述:freemarker 介绍 环境搭建&&快速入门 静态化测试

FreeMarker

freemarker简介

FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本 (HTML 网页,电子邮件,配置文件,源代码等) 的通用工具。 它不是面向最终用户的,而是一个 Java 类库,是一款程序员可以嵌入他们所开发产品的组件。

    模板编写为FreeMarker Template Language (FTL) 。它是简单的,专用的语言, 不是 像 PHP 那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。

常用的 java 模板引擎还有哪些?

Jsp、Freemarker、Thymeleaf 、Velocity 等。

1.Jsp 为 Servlet 专用,不能单独进行使用。

2.Thymeleaf 为新技术,功能较为强大,但是执行的效率比较低。

3.Velocity从2010年更新完 2.0 版本后,便没有在更新。Spring Boot 官方在 1.4 版本后对此也不在支持,虽然 Velocity 在 2017 年版本得到迭代,但为时已晚。

环境搭建&&快速入门

freemarker 作为 springmvc 一种视图格式,默认情况下 SpringMVC 支持 freemarker 视图格式。

需要创建 Spring Boot+Freemarker 工程用于测试模板。

创建测试工程

创建一个 freemarker-demo 的测试工程专门用于 freemarker 的功能测试与模板的测试。

pom.xml 如下

<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>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
  </dependency>
  <!--  lombok  -->
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
  </dependency>
  <!--  apache 对 java io 的封装工具库  -->
  <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
  </dependency>
</dependencies>

配置文件

配置application.yml

server:
  port: 8881 #服务端口
spring:
  application:
    name: freemarker-demo #指定服务名
  freemarker:
    cache: false  #关闭模板缓存,方便测试
    settings:
      template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
    suffix: .ftl               #指定Freemarker模板文件的后缀名
    template-loader-path: classpath:/templates

创建模型类

在freemarker的测试工程下创建模型类型用于测试

@Data
public class Student {
    private String name;//姓名
    private int age;//年龄
    private Date birthday;//生日
    private Float money;//钱包
}

创建模板

在 resources 下创建 templates ,此目录为 freemarker 的默认模板存放目录。

在 templates 下创建模板文件 01-basic.ftl ,模板中的插值表达式最终会被 freemarker 替换成具体的数据。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello World!</title>
</head>
<body>
<b>普通文本 String 展示:</b><br><br>
Hello ${name!} <br>
<hr>
<b>对象Student中的数据展示:</b><br/>
姓名:${(stu.name)!}<br/>
年龄:${stu.age}
<hr>
</body>
</html>

创建controller

创建Controller类,向Map中添加name,最后返回模板文件。

@Controller
public class HelloController {
 
    @GetMapping("/basic")
    public String hello(Model model){
 
        //name
        model.addAttribute("name","freemarker");
        //stu
        Student student = new Student();
        student.setName("zkt");
        student.setAge(18);
        model.addAttribute("stu",student);
 
        return "01-basic";
    }
}

创建启动类

@SpringBootApplication
public class FreemarkerDemoApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(FreemarkerDemoApplication.class,args);
    }
}

测试

请求:http://localhost:8881/basic

静态化测试

之前的测试都是SpringMVC 将 Freemarker 作为视图解析器( ViewReporter )来集成到项目中,工作中,有的时候需要使用Freemarker 原生 Api 来生成静态内容,下面一起来学习下原生 Api 生成文本文件。

需求分析

使用 freemarker 原生 Api 将页面生成 html 文件,本节测试 html 文件生成的方法:

静态化测试

根据模板文件生成 html 文件

①:修改 application.yml 文件,添加以下模板存放位置的配置信息,完整配置如下:

server:
  port: 8881 #服务端口
spring:
  application:
    name: freemarker-demo #指定服务名
  freemarker:
    cache: false  #关闭模板缓存,方便测试
    settings:
      template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
    suffix: .ftl               #指定Freemarker模板文件的后缀名
    template-loader-path: classpath:/templates

②:在test下创建测试类

@SpringBootTest(classes = FreemarkerDemoApplication.class)
@RunWith(SpringRunner.class)
public class FreemarkerTest {
 
    @Autowired
    private Configuration configuration;
 
    @Test
    public void test() throws IOException, TemplateException {
        //freemarker的模板对象,获取模板
        Template template = configuration.getTemplate("02-list.ftl");
        Map params = getData();
        //合成
        //第一个参数 数据模型
        //第二个参数  输出流
        template.process(params, new FileWriter("D:\\work\\list.html"));
    }
 
    private Map getData() {
        Map<String, Object> map = new HashMap<>();
 
        //zkt1对象模型数据
        Student stu1 = new Student();
        stu1.setName("zkt1");
        stu1.setAge(18);
        stu1.setMoney(1000.86f);
        stu1.setBirthday(new Date());
 
        //zkt2对象模型数据
        Student stu2 = new Student();
        stu2.setName("zkt2");
        stu2.setMoney(200.1f);
        stu2.setAge(19);
 
        //将两个对象模型数据存放到List集合中
        List<Student> stus = new ArrayList<>();
        stus.add(stu1);
        stus.add(stu2);
 
        //向map中存放List集合数据
        map.put("stus", stus);
 
        //返回Map
        return map;
    }
}

标签:&&,freemarker,创建,name,测试,Student,模板,入门
From: https://blog.csdn.net/weixin_60583755/article/details/143669181

相关文章

  • Grafana快速入门指南下篇
    作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。目录一.tables(表格)展示数据1.环境准备2.配置Query(查询)3.配置Transform(转换)4.添加Overrides(覆盖)属性5.配置多指......
  • 刚入门大模型该如何快速上手?
    前言在AI技术日新月异的今天,大模型成为了引领科技浪潮的明星产品。它们凭借强大的数据处理能力和深度学习能力,正在改变着我们的工作和生活方式。对于初学者来说,如何快速上手大模型,成为了一个迫切而又具有挑战性的问题。前排提示,文末有大模型AGI-CSDN独家资料包哦!一、了......
  • Redis 入门使用
    第一步:下载安装redis服务端1.网盘地址: 链接:https://pan.baidu.com/s/1lUQMTSb1laFfoSbN9Z85lw?pwd=pvmd提取码:pvmd2.官网自行下载: https://redis.io/downloads/第二步:下载安装redis可视化管理工具1.网盘地址: 通过百度网盘分享的文件:redis-desktop-manager-0.8.8.3......
  • Python 入门-2
    1.函数输出函数:print 1.*values:表示可以一次性输出多个对象,输出多个对象时,需要用,隔开(英文逗号) 输出多个内容逗号隔开,英文符号 print('哈哈哈','嘻嘻嘻','嘿嘿嘿')2.sep:用来间隔多个对象,默认值是一个空格,可随意更换 print('哈哈哈','嘻嘻嘻','嘿嘿嘿',sep=',') sep......
  • 【电子通识】白皮书、应用手册、用户指南、快速入门指南一般的定义是什么?
        一般大厂家的器件或模块,除了给数据表以外,还提供应用手册、技术说明、白皮书等各种文档资料。    如下图所示为ST25NFC/RFID标签和读卡器的文件资料:其中就有技术说明、白皮书、应用手册等。    如下所示为TIINA228技术文档相关资料:也有应用手......
  • 洛谷题单入门1顺序结构(C语言版)
    【入门1】顺序结构Hello,World!#include<stdio.h>intmain(){printf("Hello,World!");return0;}输出字符菱形#include<stdio.h>intmain(){printf("*\n");printf("***\n");printf("*****\n&q......
  • 超详细!ComfyUI 全方位入门指南,初学者必看,附多个实践操作
    本文正文字数约8300字,阅读时间20分钟。如果按照文章实操一遍,预计时间在半小时到两小时不等。我还是推荐在自己电脑上自行搭建一套GUI(也就是用户图形界面)来学习和使用StableDiffusion,也就是本文即将介绍的ComfyUI。本文将为你提供一份全面的ComfyUI入门指南,涵盖......
  • 黑客入门基础知识(非常详细),黑客入门到精通教程,收藏这篇就够了
    黑客基础知识(一)IP地址是什么网际协议地址(即IP地址)。它是为标识Internet上主机位置而设置的。Internet上的每一台计算机都被赋予一个世界上唯一的32位Internet地址(InternetProtocolAddress,简称IPAddress),这一地址可用于与该计算机机有关的全部通信。为了方便起见,在应用上......
  • 网络安全学习路线(非常详细)从零基础入门到精通,看完这一篇就够了_网络安全体系培训内容
    小白人群想学网安但是不知道从哪入手?一篇文章告诉你如何在4个月内吃透网安课程,掌握网安技术一、基础阶段1.了解网安相关基础知识了解中华人民共和国网络安全法、熟知网络安全的相关概念:包括信息安全、风险管理、网络攻防原理、认证与加密等基本概念,2.Linux操作系统Lin......
  • 「Mac玩转仓颉内测版3」入门篇3 - Cangjie的基本语法与结构
    本篇将深入探讨Cangjie语言的基本语法与结构。这些基础知识为编写高效、可维护的代码奠定了坚实基础。通过理解语句结构、表达式、注释及数据类型,能够更自信地使用Cangjie进行编程。关键词Cangjie基本语法语句结构表达式注释数据类型控制结构一、基本语法1.1语句结构......