静的なウェブ技術-Freemarker
理由は:私たちの開発プロセスでは、一般的には、問題を解決するためには、このような静的なニュースのものと静的なページ、ニュースサイトのかなりの部分になり、当社の主要な電気の供給項目の別の例は、各アイテムの詳細ページには、いくつかの静的なリソースがあり、データベースへのすべてのユーザーのアクセスがアクセスする場合、それは高い同時現象だけでなく、資源の浪費の原因となります。
テクノロジー:静的なWeb技術とキャッシング技術の共通点は、データベースにアクセスするための圧力を減少させることであるが、特定のアプリケーションシナリオに応じて、キャッシュは、小規模なデータのために、より適しており、静的なページでは、大規模かつ比較的まれな変化に、より適していますデータ。また、静的なWebページもに有益である SEO。
また、私たちは純粋な静的フォーム場合は、ページを表示するには、使用することができます nginxのを、このような高性能なウェブ展開するサーバー。nginxのは、運ぶことができる5 同時実行のための百万、およびTomcatのわずか数百。
##まず、私たちは何時間Freemarkerの権利を知るようになっていること?
FreeMarkerのは、あるJavaのテキスト出力を生成するためのテンプレートに基づいて書かれた言語テンプレートエンジン。FreeMarkerのとウェブ非依存性の容器は、すなわちでのWeb ランタイム、それは知りませんサーブレットまたはHTTPを。技術的なプレゼンテーション層を達成するために使用することができ、また生成するために使用することができないだけでXMLを、JSP 、またはJavaのようにして。
##第二に、我々は、下の小さなエンジニアリングの経験に来ます:
プロジェクトの依存関係:
<依存>
<groupIdを> org.freemarker </ groupIdを>
<たartifactId> FreeMarkerの</たartifactId>
<バージョン> 2.3。23 </バージョン>
</依存関係>
我々はまた、多くの人々を残すための要求をに書き込まれたり書かれたかもしれません前回は、テンプレートそれはない何かを見つけるでしょう、書きたいですか?
**親愛なる、こんにちは! ************************************************** ********************** 署名: 日付:
だから我々は今日を作成する必要があります。
<HTML>
<HEAD>
<METAのcharset = " UTF-8 " >
<タイトル>の取得Freemarkerの小さなDEMO </ TITLE>
</ HEAD>
<BODY>
<# -私はコメントをだ、私は任意の出力を持っていません- - >
$ {名前}、こんにちは。メッセージ{} $
</ BODY>
</ HTML>
クラスを作成してみましょう:
cn.liurui.core.demoパッケージ;
インポートfreemarker.template.Configuration;
インポートfreemarker.template.Template;
インポートはjava.io.File;
インポートjava.io.FileWriter;
インポートjava.util.Date;
輸入java.util.HashMapを;
インポートjava.util.Map;
/ * *
* @author liurui
* @date日$ {12:04}
* /
パブリック クラスFreemarker_Demo {
公共 静的 ボイドメイン(文字列[]引数)がスロー例外{
// 準備データ・モデルJSONデータは、データ型がJavaBeanのことができるされている
地図データマップを= 新しい新規HashMapの();
// 構成FreeMarkerの
//コンフィギュレーションに設定設定
設定設定を= 新しい新しいコンフィギュレーション(Configuration.VERSION_2_3_23);
// テンプレートパス設定
configuration.setDirectoryForTemplateLoading(新しい新しいファイル(" D:/ユーザー/管理者/
shop_pinyougou_demo_parent / freemarker_demo / srcに/メイン/リソース" ));
// テンプレート・コンテンツのエンコーディング設定
configuration.setDefaultEncoding(「UTF-8。」);
// テンプレートオブジェクトセット
テンプレートテンプレート= configuration.getTemplate(「index.ftlを」);
// テンプレートファイルを設定
FileWriterライター= 新しいてFileWriter(" D:/1.html " );
// 合成输出
template.process(DATAMAP、作家);
// 关闭
writer.flush();
writer.close();
}
}
// 5.データモデルを作成して
地図マップ= 新しい新しいHashMapの();
map.put(「名前」、「ジョー・スミス」);
map.put(「メッセージ」、「魔法のFreemarkerの世界へようこそ!」);
その後、我々は、mainメソッドを起動します。私たちは、ページ上の出力ジョー・スミスが表示され、Freemarkerのは魔法の世界へようこそ!
如果这个Freemarker模板仅仅只能做到这么简单的,那我们也不会用它是吧。。。。
下面我们来看看Ftl指令:
<#assign linkman="赵四">
联系人:${linkman}//联系人:赵四
<#assign info={"mobile":"110",'address':'黄河西路'} >
电话:${info.mobile} 地址:${info.address}//电话:110 地址:黄河西路
##一,我们一般网页前端写的页面,如果几个页面头部相同,会单独写一个头部,然后通过inculde命令去导入,那么我们模板也会有这个指令:
<#include "head.ftl">
##二,if指令
在我们的类中我们会添加一个:
dataMap.put("success",false);//当为true时,为ok,当为false时,为no
<#if success=true> ok <#else> no </#if>
##三,list指令
List goodsList=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);
goodsList.add(goods1);
goodsList.add(goods2);
goodsList.add(goods3);
map.put("goodsList", goodsList);
在我们的模板中添加;
----商品价格表----<br>
<#list goodsList as goods>
${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}<br>
</#list>
打印结果:
1 商品名称:苹果 价格:5.8
2 商品名称:香蕉 价格:2.5
3 商品名称:橘子 价格:3.2
##四,我们需要将json字符串转成对象:
<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />
<#assign data=text?eval />
开户行:${data.bank} 账号:${data.account}
##五,日期格式:
Map dataMap = new HashMap();
dataMap.put("today",new Date());
/**
* 当前日期:2019-9-30
当前时间:16:38:50
当前日期加时间;2019-9-30 16:38:50
日期格式化:2019年09月30日 16时38分50秒
*/
当前日期:${today?date}<br>
当前时间:${today?time}<br>
当前日期加时间;${today?datetime}<br>
日期格式化:${today?string("yyyy年MM月dd日 HH时mm分ss秒")}
##六,判断变量是否存在?
<#if aaa??>
aaa变量存在
<#else >
aaa变量不存在
</#if>