freeMarker学习笔记

FreeMarker是一款Java模板引擎,用于生成输出文本,如HTML、XML等。它与Web容器无关,能有效分离表现层和业务逻辑,提高开发效率。然而,其缺点在于数据更新可能不及时,且需要学习模板语言。本文介绍了FreeMarker的工作原理、优缺点、下载方式及基本语法,包括变量、条件指令、循环指令、包含指令和内置函数。
摘要由CSDN通过智能技术生成

 

  1. FreeMarker
    1. 概述

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

HTML静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以使用FreeMarker将动态页面静态化。

    1. 工作原理

 

模板:就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位符部分的内容。

FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成Html,XML,JSP或Java 等文件。

 

    1. 优缺点
  1. 优点
  1. FreeMarker不支持Java脚本代码;所以可以彻底的分离表现层和业务逻辑;
  2. 提高开发效率。开发过程中,界面设计和开发人员可以并行工作;不必等待完成页面原形后,再开发程序;
  3. 开发过程中的人员分工更加明确。使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。

 

  1. 缺点
  1. 生成静态的HTML页面后,数据更新可能不及时;
  2. 需要学习FreeMarker模版语言。而且FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常。想避免错误就要应用if/elseif/else 指令进行判断,如果对每一个变量都判断的话,那么则反而增加了编程的麻烦。FreeMarker的map限定key必须是string,其他数据类型无法操作。
    1. 下载
  1. 官方网站 http://freemarker.apache.org/
  2. 下载地址

     http://archive.apache.org/dist/incubator/freemarker/engine/ 新版本下载

     https://sourceforge.net/projects/freemarker/files/freemarker/ 旧版本下载

     apache-freemarker-2.3.26-incubating-bin.tar.gz (2017-03-16)

  1. 第一个FreeMarker例子
    1. 搭建maven项目

搭建java项目即可。FreeMarker的依赖坐标为:

<!-- freemarker -->

<dependency>

<groupId>org.freemarker</groupId>

<artifactId>freemarker</artifactId>

<version>2.3.26-incubating</version>

</dependency>

 

pom.xml的内容为:

<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>cn.itcast</groupId>

<artifactId>freemarker_test</artifactId>

<version>0.0.1-SNAPSHOT</version>

 

<!-- 配置依赖关系 -->

<dependencies>

<!-- junit -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<scope>test</scope>

</dependency>

<!-- freemarker -->

<dependency>

    <groupId>org.freemarker</groupId>

    <artifactId>freemarker</artifactId>

    <version>2.3.26-incubating</version>

</dependency>

 

</dependencies>

 

<!-- 构建部分 -->

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.1</version>

<configuration>

<source>1.7</source>

<target>1.7</target>

<encoding>utf-8</encoding>

</configuration>

</plugin>

</plugins>

</build>

</project>

    1. 定义ftl模版

<!DOCTYPE html>

<html>

<head>

<title>freemarker</title>

<meta charset="UTF-8"/>

<meta http-equiv="pragma" content="no-cache"/>

</head>

<body>

${msg}

</body>

</html>

    1. 控制台输出

/** 控制台输出 */

@Test

public void test01() throws Exception {

/** 创建Configuration配置信息对象,需要指定版本号 */

Configuration configuration = new Configuration(Configuration.VERSION_2_3_26);

/** 通过Configuration设置模版文件的基础路径 */

configuration.setClassForTemplateLoading(FreeMarkerTest01.class, "/ftl");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值