ディレクトリ
高度なJavaのテンプレートエンジンFreemarker2.x詳細
序文
静的なページを実装するためのプロジェクトの必要性では、プロのフロントエンド要員定義されたテンプレートを取得し、あなたが少しを開始することができ、なぜ、あなたは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 |
著作権: | この記事では、ブロガーオリジナル記事です、再版にソーステキスト明博を注意してください! |