FreeMarker 是一個(gè)用Java編寫(xiě)的模板引擎,主要用來(lái)生成HTML Web頁(yè)面,特別是基于MVC模式的應(yīng)用程序。雖然FreeMarker具有一些編程的能力,但不像PHP,通常由Java程序準(zhǔn)備要顯示的數(shù)據(jù),由 FreeMarker模板生成頁(yè)面。 FreeMarker可以作為Web應(yīng)用框架一個(gè)組件,但它與容器無(wú)關(guān),在非Web應(yīng)用程序環(huán)境也能工作的很好。 FreeMarker適合作為MVC的視圖組件,還能在模板中使用JSP標(biāo)記庫(kù)。
成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比馬龍網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式馬龍網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋馬龍地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴(lài)。
所以你其實(shí)是用freemarker的ftl 做前端頁(yè)面來(lái)生成對(duì)應(yīng)的html頁(yè)面。
ftl模板 + Map數(shù)據(jù)模型 = 輸出html
然后web.xml其實(shí)就是ftl的模板,使用ftl的話,其實(shí)就是java+xml利用freemarker的模板來(lái)生成HTML。當(dāng)然你生成的HTML是可以跟HTML做的前端一起有的。
jstl 跟freemarker 的區(qū)別如下:
一、jstl?
JSTL(JSP Standard Tag Library,JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))是一個(gè)不斷完善的開(kāi)放源代碼的JSP標(biāo)簽庫(kù),是由apache的jakarta小組來(lái)維護(hù)的。
1、使用條件
jstl帶來(lái)的優(yōu)雅編程體驗(yàn)人所皆知,在java社區(qū)蒸蒸日上的今天使用jstl已無(wú)需考慮很多問(wèn)題,我們可以用myeclipse等java集成開(kāi)發(fā)環(huán)境輕松搭建一個(gè)jstl的web項(xiàng)目。即便有了myeclipse這么得力的工具幫我們快速開(kāi)發(fā)web項(xiàng)目,但是有一些知識(shí)我們必須了解的 ---- 那就是jstl與servlet版本,以及jsp版本之間的依賴(lài)關(guān)系。
2、優(yōu)點(diǎn)
在應(yīng)用程序服務(wù)器之間提供了一致的接口,最大程度地提高了WEB應(yīng)用在各應(yīng)用服務(wù)器之間的移植。
簡(jiǎn)化了JSP和WEB應(yīng)用程序的開(kāi)發(fā)。
二、freemarker?
FreeMarker是一個(gè)用Java語(yǔ)言編寫(xiě)的模板引擎,它基于模板來(lái)生成文本輸出。FreeMarker與Web容器無(wú)關(guān),即在Web運(yùn)行時(shí),它并不知道Servlet或HTTP。它不僅可以用作表現(xiàn)層的實(shí)現(xiàn)技術(shù),而且還可以用于生成XML,JSP或Java 等。
1、特性
——通用
能夠生成各種文本:HTML、XML、RTF、Java源代碼等等。
易于嵌入到產(chǎn)品中:輕量級(jí);不需要Servlet環(huán)境。
插件式模板載入器:可以從任何源載入模板,如本地文件、數(shù)據(jù)庫(kù)等等。
可以按所需生成文本:保存到本地文件;作為Email發(fā)送;從Web應(yīng)用程序發(fā)送它返回給Web瀏覽器。
——強(qiáng)大的模板語(yǔ)言
所有常用的指令:include、if/elseif/else、循環(huán)結(jié)構(gòu)。
在模板中創(chuàng)建和改變變量。
幾乎在任何地方都可以使用復(fù)雜表達(dá)式來(lái)指定值。
命名的宏,可以具有位置參數(shù)和嵌套內(nèi)容。
名字空間有助于建立和維護(hù)可重用的宏庫(kù),或者將一個(gè)大工程分成模塊,而不必?fù)?dān)心名字沖突。
輸出轉(zhuǎn)換塊:在嵌套模板片段生成輸出時(shí),轉(zhuǎn)換HTML轉(zhuǎn)義、壓縮、語(yǔ)法高亮等等;可以定義自己的轉(zhuǎn)換。
——通用數(shù)據(jù)模型
FreeMarker不是直接反射到Java對(duì)象,Java對(duì)象通過(guò)插件式對(duì)象封裝,以變量方式在模板中顯示。
可以使用抽象(接口)方式表示對(duì)象(JavaBean、XML文檔、SQL查詢(xún)結(jié)果集等等),告訴模板開(kāi)發(fā)者使用。方法,使其不受技術(shù)細(xì)節(jié)的打擾。
為Web準(zhǔn)備
在模板語(yǔ)言中內(nèi)建處理典型Web相關(guān)任務(wù)(如HTML轉(zhuǎn)義)的結(jié)構(gòu)。
能夠集成到Model2 Web應(yīng)用框架中作為JSP的替代。
支持JSP標(biāo)記庫(kù)。
為MVC模式設(shè)計(jì):分離可視化設(shè)計(jì)和應(yīng)用程序邏輯;分離頁(yè)面設(shè)計(jì)員和程序員。
2、簡(jiǎn)介
FreeMarker允許Java servlet保持圖形設(shè)計(jì)同應(yīng)用程序邏輯的分離,這是通過(guò)在模板中密封HTML完成的。模板用servlet提供的數(shù)據(jù)動(dòng)態(tài)地生成 HTML。模板語(yǔ)言是強(qiáng)大的直觀的,編譯器速度快,輸出接近靜態(tài)HTML頁(yè)面的速度。雖然FreeMarker具有一些編程的能力,但通常由Java程序準(zhǔn)備要顯示的數(shù)據(jù),由FreeMarker生成頁(yè)面,通過(guò)模板顯示準(zhǔn)備的數(shù)據(jù)。
剛好在用freemarker做一個(gè)項(xiàng)目模塊,freemarker上手簡(jiǎn)單,功能也很強(qiáng)。模板引擎大體相同??梢钥匆幌卢F(xiàn)在的一些模板引擎:
這個(gè)看你網(wǎng)站功能和性能需求了。網(wǎng)上有很多關(guān)于這些技術(shù)區(qū)別的,你可以去看一看。
引用篇文章給你:
淺談jsp、freemarker、velocity區(qū)別
作者:浮云中的毛驢
以前做web開(kāi)發(fā)頁(yè)面層用的基本就是就是,最近公司java項(xiàng)目頁(yè)面層用的技術(shù)是velocity。聽(tīng)說(shuō)jsp要淘汰,也不知道是真是假,但本人還是比較喜歡jsp的,下面是網(wǎng)上查找的javaweb項(xiàng)目頁(yè)面3種技術(shù)的區(qū)別。
在java領(lǐng)域,表現(xiàn)層技術(shù)主要有三種:jsp、freemarker、velocity。
jsp是大家最熟悉的技術(shù)
優(yōu)點(diǎn):
1、功能強(qiáng)大,可以寫(xiě)java代碼
2、支持jsp標(biāo)簽(jsp tag)
3、支持表達(dá)式語(yǔ)言(el)
4、官方標(biāo)準(zhǔn),用戶(hù)群廣,豐富的第三方j(luò)sp標(biāo)簽庫(kù)
5、性能良好。jsp編譯成class文件執(zhí)行,有很好的性能表現(xiàn)
缺點(diǎn):
jsp沒(méi)有明顯缺點(diǎn),非要挑點(diǎn)骨頭那就是,由于可以編寫(xiě)java代碼,如使用不當(dāng)容易破壞mvc結(jié)構(gòu)。
velocity是較早出現(xiàn)的用于代替jsp的模板語(yǔ)言
優(yōu)點(diǎn):
1、不能編寫(xiě)java代碼,可以實(shí)現(xiàn)嚴(yán)格的mvc分離
2、性能良好,據(jù)說(shuō)比jsp性能還要好些
3、使用表達(dá)式語(yǔ)言,據(jù)說(shuō)jsp的表達(dá)式語(yǔ)言就是學(xué)velocity的
缺點(diǎn):
1、不是官方標(biāo)準(zhǔn)
2、用戶(hù)群體和第三方標(biāo)簽庫(kù)沒(méi)有jsp多。
3、對(duì)jsp標(biāo)簽支持不夠好
freemarker
優(yōu)點(diǎn):
1、不能編寫(xiě)java代碼,可以實(shí)現(xiàn)嚴(yán)格的mvc分離
2、性能非常不錯(cuò)
3、對(duì)jsp標(biāo)簽支持良好
4、內(nèi)置大量常用功能,使用非常方便
5、宏定義(類(lèi)似jsp標(biāo)簽)非常方便
6、使用表達(dá)式語(yǔ)言
缺點(diǎn):
1、不是官方標(biāo)準(zhǔn)
2、用戶(hù)群體和第三方標(biāo)簽庫(kù)沒(méi)有jsp多
選擇freemarker的原因:
1、性能。velocity應(yīng)該是最好的,其次是jsp,普通的頁(yè)面freemarker性能最差(雖然只是幾毫秒到十幾毫秒的差距)。但是在復(fù)雜頁(yè)面上(包含大量判斷、日期金額格式化)的頁(yè)面上,freemarker的性能比使用tag和el的jsp好。
2、宏定義比jsp tag方便
3、內(nèi)置大量常用功能。比如html過(guò)濾,日期金額格式化等等,使用非常方便
4、支持jsp標(biāo)簽
5、可以實(shí)現(xiàn)嚴(yán)格的mvc分離
模板引擎就是用于制作頁(yè)面模板的。啥是模板?不就是做好模子,然后套入數(shù)據(jù),就成一個(gè)產(chǎn)品了嗎?模板引擎有很多,常用的有freemarker、velocity等。它們都有自己的語(yǔ)法,只為簡(jiǎn)化頁(yè)面數(shù)據(jù)展示。只要你稍微了解一下freemarker,就能很好的理解什么是模板了。