JavaのテンプレートエンジンFreemarker2.x上級ガイド

 

ディレクトリ

序文

高度なJavaのテンプレートエンジンFreemarker2.x詳細

静的なページでI、

第二に、静的なページの機能

Freemarkerの上の第三に、

四、Freemarkerの使用手順

五、Freemarkerの使用

六、Freemarkerの共通の文法

七つの関連文書


序文

静的なページを実装するためのプロジェクトの必要性では、プロのフロントエンド要員定義されたテンプレートを取得し、あなたが少しを開始することができ、なぜ、あなたはFreemarkerの静的フレームワークを使用したい、ああやります!この問題は、ここで議論されていない、フィルムのブログには、JavaのテンプレートエンジンFreemarker2.x高度なガイドを紹介します。

高度なJavaのテンプレートエンジンFreemarker2.x詳細

静的なページでI、

静的なWebページとは何ですか:など、いくつかの技術的手段またはThymeleafの動的なページJSPによってFreemarkerの、asp.net、PHPは、静的なページに直接ブラウザから既製の静的ページへのアクセスを変換されます。

 

第二に、静的なページの機能

    1は、ブラウザを介してアクセス直接静的ページは、プログラムは、その速度に治療、高い必要はない
    ; 2、良好な安定性
    、より効果的にこのようなハッカーの攻撃を受けにくく、セキュリティの脆弱性、防止3
    4、静的ページをより簡単に検索エンジンでインデックス化。

 

Freemarkerの上の第三に、

FreeMarkerのテンプレート出力テキストに基づいてJava言語のテンプレートエンジンです。FreeMarkerのは、Webコンテナとは何の関係もありませんウェブであり、それは、サーブレットまたはHTTPを知りません。それだけでなく、技術的なプレゼンテーション層を達成するために使用することができますが、また、XML、JSPやJavaとして生成するために使用することができます。

FreeMarkerのテンプレート言語(FTL)。テンプレートでは、データを提示する方法に焦点を当てることができますが、テンプレートの外には、あなたがデータを表示したいのかに焦点を当てることができます。これは、多くの場合、MVC(モデルビューコントローラ)モードと呼ばれる、動的なページのために、それは特に人気の高いモデルです。

パターンサーブレットアプリケーションFreeMarkerのデザインは、実際にはMVC( - - ビューコントローラモデルビューコントローラ、モデル)によって認識に基づいて具体的には、HTMLページを生成するために使用されています。あなたは(HTMLで書かれた)、フロントエンドの設計者は、プログラマから分離することができるように動的なWebページのMVCパターンを使用してのアイデア。その職務のすべてが、その良い面を再生します。Webデザイナーは、アプリケーション(Javaプログラム)とページデザイン(FreeMarkerのテンプレート)のロジックが分離されているので、コードをコンパイルし、プログラマに影響されることなく、表示ページを上書きすることができます。ページのテンプレートコードは、複雑なコードに影響を与えたことはありません。偶数ページデザイナーとプログラマのための思考のこの分離は、分離コードはシンプルに保つことと、簡単に維持することができるので、同じ人のプロジェクトは、非常に有用です。

FreeMarkerのもスキルをプログラミングしているが、それは包括的なPHPプログラミング言語のようなもののようではありませんが。代わりに、Javaプログラムは、(例えば、SQLクエリが)、FreeMarkerのが唯一の存在テキストが用意されたデータとなっていることをページを生成するためのテンプレートを使用してディスプレイにデータを準備します。

現在では、企業は、主にFreemarkerのを使用しているので、このブログでは、ブロガーが主に静的Freemarkerの例を行うために使用され、静的なページやページの表示回数を行います。

 

四、Freemarkerの使用手順

    1)Configurationオブジェクト、新しい直接オブジェクトを作成します。Freemarkerのコンストラクタのパラメータは、のバージョン番号である;
    2)テンプレートファイルのパスが配置されている設定、
    3)、文字セットテンプレートファイル。図8は、一般UTFである
    。4)、テンプレートオブジェクトを作成するためのテンプレートをロードする;
    5)、POJOマップされるデータセットのテンプレートを作成するために用いてもよいです。一般地図;
    6)、一般FileWriterオブジェクトを作成し、ライタオブジェクトを作成するために、指定されたファイル名の生成;
    7)は、この方法は、プロセス出力ファイルテンプレートオブジェクト呼び出し
    8)、クローズストリームを、

 

次のようにコード例は以下のとおりです。

package com.huazai.freemarker.test;

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

import org.junit.Test;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出
 *              </ul>
 * @className TGenerateHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TGenerateHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "模板文件所在的路径的目录";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.htm");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, String> model = new HashMap<>();
		model.put("hello", "hello");
		String pre_file_path = "生成的静态文件的文件路径";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}

 

五、Freemarkerの使用

1)、新しいMavenプロジェクト

2)のpom.xmlプロファイルにMavenの依存添加FreeMarkerのプロジェクトの依存関係を導入します

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

3)、新しいデータキャリアEmployeeDTO

package com.huazai.freemarker.dto;

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 员工实体
 *              </ul>
 * @className Employee
 * @package com.huazai.freemarker.pojo
 * @createdTime 2017年06月18日
 *
 * @version V1.0.0
 */
public class EmployeeDTO
{

	/**
	 * 员工ID
	 */
	private String empId;

	/**
	 * 员工姓名
	 */
	private String empName;

	public String getEmpId()
	{
		return empId;
	}

	public void setEmpId(String empId)
	{
		this.empId = empId;
	}

	public String getEmpName()
	{
		return empName;
	}

	public void setEmpName(String empName)
	{
		this.empName = empName;
	}

	@Override
	public String toString()
	{
		return "Employee [empId=" + empId + ", empName=" + empName + "]";
	}

	public EmployeeDTO()
	{
		super();
	}

	public EmployeeDTO(String empId, String empName)
	{
		super();
		this.empId = empId;
		this.empName = empName;
	}

}

 

六、Freemarkerの共通の文法

1)、<Mapのアクセスキー属性>テンプレート技術による出力の静的ページを達成するために

package com.huazai.freemarker.test;

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

import org.junit.Test;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出<访问Map中的key属性>
 *              <li>--访问Map中的key属性<br>
 *              <li>${hello}
 *              </ul>
 * @className TGenerateHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TKeyHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "D:\\fremarker";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.ftl");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, String> model = new HashMap<>();
		model.put("hello", "hello world!");
		String pre_file_path = "D:\\fremarker";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}

テンプレートの内容:

--访问Map中的key属性<br>
${hello}

 

次のような効果があります

 

2)テンプレート技術による出力の静的ページを達成するために、<POJOのプロパティにアクセスします>

package com.huazai.freemarker.test;

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

import org.junit.Test;

import com.huazai.freemarker.dto.EmployeeDTO;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出<访问POJO中的属性>
 * 				<li>-- 访问POJO中的属性<br>
 * 				<li>${employee.empId}
 * 				<li>${employee.empName}
 *              </ul>
 * @className TPojoHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TPojoHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "D:\\fremarker";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.ftl");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, Object> model = new HashMap<>();
		model.put("employee", new EmployeeDTO("001", "huazai"));
		String pre_file_path = "D:\\fremarker";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}

テンプレートの内容:

-- 访问POJO中的属性<br>
${employee.empId}
${employee.empName}

 

次のような効果があります

 

3)、出力ページテンプレートアート静的を達成するために、<アクセスするデータセット>

package com.huazai.freemarker.test;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.huazai.freemarker.dto.EmployeeDTO;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出<访问集合中的数据>
 * 				<li>-- 访问集合中的数据<br>
 * 				<li><#list list as item>
 * 				<li>	${item_index}
 * 				<li>	${item.empId}
 * 				<li>	${item.empName}<br>
 * 				<li></#list>
 * 				<li>
 * 				<li>-- 逻辑判断语句<br>
 * 				<li><#list list as item>
 * 				<li>	<#if item_index%2==0>
 * 				<li>		这是偶数行》
 * 				<li>	<#else>
 * 				<li>		这是奇数行》
 * 				<li>	</#if>
 * 				<li>	${item_index}
 * 				<li>	${item.empId}
 * 				<li>	${item.empName}<br>
 * 				<li></#list>
 *              </ul>
 * @className TArrayHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TArrayHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "D:\\fremarker";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.ftl");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, Object> model = new HashMap<>();
		List<EmployeeDTO> employeeDTOs = new ArrayList<EmployeeDTO>();
		employeeDTOs.add(new EmployeeDTO("1001", "冰心"));
		employeeDTOs.add(new EmployeeDTO("1002", "季羡林"));
		employeeDTOs.add(new EmployeeDTO("1003", "汪曾祺"));
		model.put("list", employeeDTOs);
		String pre_file_path = "D:\\fremarker";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}

テンプレートの内容:

-- 访问集合中的数据<br>
<#list list as item>
	${item_index}
	${item.empId}
	${item.empName}<br>
</#list>

 

次のような効果があります

 

4)、出力は静的なページテンプレート技術<マップデータセットへのアクセス>によって達成しました

package com.huazai.freemarker.test;

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

import org.junit.Test;

import com.huazai.freemarker.dto.EmployeeDTO;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出<访问map集合中的数据>
 * 				<li>-- 访问map集合中的数据<br>
 * 				<li><#list map?keys as key>
 * 				<li>	${map[key].empId}
 * 				<li>	${map[key].empName}<br>
 * 				<li></#list>
 *              </ul>
 * @className TMapHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TMapHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "D:\\fremarker";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.ftl");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, Object> model = new HashMap<>();
		Map<String, Object> map = new HashMap<>();
		map.put("m1", new EmployeeDTO("1001", "冰心"));
		map.put("m2", new EmployeeDTO("1002", "季羡林"));
		map.put("m3", new EmployeeDTO("1003", "汪曾祺"));
		model.put("map", map);
		String pre_file_path = "D:\\fremarker";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}

テンプレートの内容:

-- 访问map集合中的数据<br>
<#list map?keys as key>
	${map[key].empId}
	${map[key].empName}<br>
</#list>

 

次のような効果があります

 

5)、静的なページテンプレート技術<フォーマットされた日付タイプ>によって出力を達成するために

package com.huazai.freemarker.test;

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

import org.junit.Test;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出<日期类型格式化>
 * 				<li>-- 日期类型格式化<br>
 * 				<li>当前日期:${date?date}<br>
 * 				<li>当前时间:${date?time}<br>
 * 				<li>当前日期和时间:${date?datetime}<br>
 * 				<li>自定义日期格式:${date?string("yyyy年MM月dd日 HH时mm分ss秒")}<br>
 *              </ul>
 * @className TDateHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TDateHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "D:\\fremarker";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.ftl");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, Object> model = new HashMap<>();
		model.put("date", new Date());
		String pre_file_path = "D:\\fremarker";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}
	

テンプレートの内容:

-- 日期类型格式化<br>
当前日期:${date?date}<br>
当前时间:${date?time}<br>
当前日期和时间:${date?datetime}<br>
自定义日期格式:${date?string("yyyy年MM月dd日 HH时mm分ss秒")}<br>

 

次のような効果があります

 

6)、静的ページテンプレート技術の出力を達成するために、<+非エンプティフレームのラベルを決定しました>

package com.huazai.freemarker.test;

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

import org.junit.Test;

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

/**
 * 
 * @author HuaZai
 * @contact [email protected]
 *          <ul>
 * @description 通过模板技术实现静态网页的输出<非空判断 + 框架标签>
 * 				<li>-- 非空判断 + 框架标签<br>
 * 				<li>空值处理:${list!"这个是空值"}<br>
 * 				<li>引用页面01:<#include "page_01.htm"><br>
 * 				<li>引用页面02:<#include "page_02.htm"><br>
 * 				<li>引用页面03:<#include "page_03.htm"><br>
 *              </ul>
 * @className TRestHtml
 * @package com.huazai.freemarker.test
 * @createdTime 2017年06月17日
 *
 * @version V1.0.0
 */
public class TRestHtml
{

	@Test
	public void GenHtml() throws Exception
	{
		// 1、创建个Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		String diretoryp_ath = "D:\\fremarker";
		// 2、设置模板文件所在的路径的目录
		configuration.setDirectoryForTemplateLoading(new File(diretoryp_ath));
		// 3、设置模板文件的字符集
		configuration.setDefaultEncoding("UTF-8");
		// 4、首先创建模板文件,再加载模板文件 模板文件的后缀官方统一的标准是.ftl 其实任何类型都行。
		Template template = configuration.getTemplate("template.ftl");// 可以是<相对路径>,也可以是<绝对路径>
		// 5、创建模板文件需要展示数据的数据集对象,可以使用POJO,也可以使用map 一般是使用map
		Map<String, Object> model = new HashMap<>();
		model.put("list", null);
		model.put("page_01_name", "这是01号页面");
		model.put("page_02_name", "这是02号页面");
		model.put("page_03_name", "这是03号页面");
		String pre_file_path = "D:\\fremarker";
		// 6、创建一个FileWriter对象 指定生成的静态文件的文件路径及文件名
		// 拼接一个前缀和后缀
		FileWriter writer = new FileWriter(new File(pre_file_path + "/result.html"));
		// 7、调用模板对象的process方法,执行输出文件。
		template.process(model, writer);
		// 8、关闭流
		writer.close();
	}
}

テンプレートの内容:

-- 非空判断 + 框架标签<br>
空值处理:${list!"这个是空值"}<br>
引用页面01:<#include "page_01.ftl"><br>
引用页面02:<#include "page_02.ftl"><br>
引用页面03:<#include "page_03.ftl"><br>

 

次のような効果があります

複数のページを含む、この図は省略されています!

 

 

 

七つの関連文書

文書のFreeMarkerの中国バージョン:[ FreeMarkerのガイド_ドキュメントの中国語版 ]

GitHubのサンプルソースアドレス:[ JavaのテンプレートエンジンFreemarker2.x上級ガイド ]


 さて、JavaのテンプレートエンジンFreemarker2.xステップガイドにここに書くこと、およびご質問やご質問は、質問をするスキャンコードを喜ば発生した場合、あなたは私にメッセージああ、私は11詳細な回答になりますを与えることができます。 
早口:「一般的な学習と共通の進捗状況は、」私は注意CSND ITコミュニティの多くのあなたを願っています。


著者: 華ツァイ
著者にお問い合わせください: [email protected]
出典: CSDN(中国のソフトウェア開発者ネットワーク)
原        文: https://blog.csdn.net/Hello_World_QWP/article/details/103805984
著作権: この記事では、ブロガーオリジナル記事です、再版にソーステキスト明博を注意してください!
发布了321 篇原创文章 · 获赞 651 · 访问量 149万+

おすすめ

転載: blog.csdn.net/Hello_World_QWP/article/details/103805984