Freemarker入門デモ

Freemarkerとは

FreeMarkerは、Java言語で記述されテンプレートエンジンであり、テンプレートに基づいてテキスト出力を生成します。FreeMarkerWebコンテナは何の関係もありません。つまり、Webが実行されているときは、サーブレットまたはHTTPを認識しませんプレゼンテーション層の実現技術として使用できるだけでなく、XML JSP、またはJavaの生成にも使用できます

1.はじめに割り当て命令この命令は、ページ上の変数を定義するために使用されます 

1. Mavenプロジェクトを作成し、依存関係をインポートします。

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
</dependency>

2.resourcesフォルダーにtest.ftlテンプレートファイルを作成します。

<html>
<title>demo</title>
<meta charset="utf-8">

<body>
<!-- 这是一个注释 -->
${name}, ${message}
<br>
<!-- 定义简单类型 -->
<#assign linkman="曾先生"> 联系人:${linkman}
<!-- 定义对象类型 -->
<!assign info={"mobile":"1537767311*",'address':'湖北省武汉市'}>   电话:${info.mobile}   地址:${info.address}
</body>

</html>

3.Javaテストクラスを記述します。

package cn.cast.demo;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

public class Test {

    public static void main(String[] args) throws Exception {
        //1.创建配置类
        Configuration configuration=new Configuration(Configuration.getVersion());
        //2.设置模板所在的目录 - test.ftl
        configuration.setDirectoryForTemplateLoading(new File("D:\\MyProject\\Idea\\freemarkerDemo\\src\\main\\resources\\"));
        //3.设置字符集
        configuration.setDefaultEncoding("utf-8");
        //4.加载模板
        Template template = configuration.getTemplate("test.ftl");
        //5.创建数据模型
        Map map=new HashMap();
        map.put("name", "张三 ");
        map.put("message", "你好!");
        //6.创建 Writer 对象 - 指定输出路径
        Writer out =new FileWriter(new File("d:/test.html"));
        //7.执行输出
        template.process(map, out);
        //8.关闭 Writer 对象
        out.close();
    }

}

4. Javaコードを実行して、指定したパスの下にtest.htmlページを生成します。ページの内容:

手順をMakefileます。

最初のステップ:構成オブジェクトを作成し、オブジェクトを直接新規作成します。構築方法のパラメータは、フリーマーカーのバージョン番号です。

ステップ2:テンプレートファイルが配置されているパスを設定します。

ステップ3:テンプレートファイルで使用される文字セットを設定します。通常はutf-8です。

ステップ4:テンプレートをロードし、テンプレートオブジェクトを作成します。

手順5:テンプレートで使用されるデータセットを作成します。データセットはpojoまたはmapです。一般的にマップ;

手順6:Writerオブジェクトを作成し、通常はFileWriterオブジェクトを作成して、生成されたファイルの名前を指定します。

手順7:テンプレートオブジェクトのprocessメソッドを呼び出して、ファイル出力します。

手順8:ストリームを閉じます。

 

2. Includeディレクティブ  このディレクティブは、テンプレートファイルのネストに使用されます

1.ファイルhead.ftlを作成して、ページをインポートします。

<h3>我是一个引入文件,可以被引入到其他模板</h3>

2.test.ftlテンプレート<body> </ body>にhead.ftlファイルを導入します。

<#include "head.ftl">

 

 3.命令の場合

<#if success=true> 
  success 为 true, 我就显示出来.....
<#else>   
  success 为 false, 我就显示出来.....
</#if> 

Javaテストクラスのマップコレクションに追加する必要があります。

map.put("success", true);

 

Four。listコマンド

<#list list as goods> 
  商品序号:  ${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}<br> 
</#list> 

Javaテストクラスのマップコレクションに追加する必要があります。

//创建集合 - 往集合中添加多个商品
List list = new ArrayList();
Map goods1 = new HashMap();
goods1.put("name", "苹果");
goods1.put("price", 5.8);
Map goods2 = new HashMap();
goods2.put("name", "香蕉");
goods2.put("price", 2.5);
Map goods3 = new HashMap();
goods3.put("name", "橘子");
goods3.put("price", 3.2);
list.add(goods1);
list.add(goods2);
list.add(goods3);
//将商品集合存入 map 集合
map.put("list", list);

5.組み込み関数

1.商品の数量を取得します

<!-- 內建函数 -->
共 ${list?size} 件商品<#-- 获取商品 list 集合的长度 -->

2.json文字列をjsonオブジェクトに変換します

<!-- 定义一个 json 字符串 -->
<#assign studetn="{'name':'张三', 'age':'24', 'sex':'男'}" />
<!-- json 字符串转换成 json 对象 -->
<#assign stu=studetn?eval />
姓名: ${stu.name}  年龄: ${stu.age}  性别: ${stu.sex}

3.日付を取得します

<!-- 获取相关时间日期 -->
当前日期: ${today?date}
<br>
当前时间:${today?time}
<br>
当前日期+时间:${today?datetime}
<br>
日期格式化:
${today?string("yyyy年MM月")}
<br>

Javaテストクラスのマップコレクションに追加する必要があります。

map.put("today", new Date());

4.データを取得します

账户金额: ${money}  去除逗号: ${money?c}

Javaテストクラスのマップコレクションに追加する必要があります。

map.put("money", 200000000.00);

 

6. 変数が存在するかどうかを判断します

<!-- 判断 a b 变量是否存在 -->
<#if a??>
  a 变量存在
<#else>
  a 变量不存在
</#if>
<br>
${b!'b 变量不存在'}

 

セブン。オペレーター

<!-- 比较 -->
<#if (money > 1000000) >
  富豪
</#if>
<br>
<#if money lt 100 >
  穷鬼
</#if>

1.算術演算子

算術演算は、完全にサポートされているFreeMarkerのを表現算術演算子。でサポートされているFreeMarkerのは含ま:+、 - 、*、/、%。

2.論理演算子

論理AND :&&  論理OR :||論理NOT  :! 

論理演算子は、ブール値に基づいて行動することができ、 それ以外の場合はエラーが発生します。

3.比較演算子

式でサポートされている比較演算子は次のとおりです。 

  1. または ==:  2つの値が等しいかどうかを判断します;
  2. !=:  2つの値が等しくないかどうかを判断します。;
  3. またはgt: 左側の値が右側の値より大きいかどうかを判別します。
  4. > = またはgte: 左側の値が右側の値以上であるかどうかを判別します。
  5. またはlt: 左側の値が右側の値よりも小さいかどうかを判別します。
  6. <= またはlte: 左側の値が右側の値以下であるかどうかを判別します。

:= と != 文字列に使用することができ、 それらが等しいかどうかを比較するために、数値や日付、 しかし の両側と =! 値の同じ型でなければならないそうでない場合はエラーが発生します、 FreeMarkerのは正確です比較、「X」、「X」、「X」 に等しいではありません。 他の事業者は、数値や日付に基づいて行動することができ、 文字列の上ではなく。 ほとんどの時間は、 使用して のようなアルファベットの演算子をGT の代わりに >は、 より良い効果がありますので、FreeMarkerのはウィル 解釈などの終了文字FTLのタグ。 もちろん、 ブラケットには、このような状況を回避するために使用することができなど :<#if(x> y)> 

 

コードのダウンロード:https:  //pan.baidu.com/s/1wyHldU4RpB0UFNdSKj4wmQ

***このコードはjdk1.8で実行および使用する必要があります***

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_42629433/article/details/84109244