日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

002_模板 + 数据模型 = 输出

發(fā)布時(shí)間:2025/5/22 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 002_模板 + 数据模型 = 输出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 假設(shè)在一個(gè)在線商店的應(yīng)用系統(tǒng)中需要一個(gè)html頁(yè)面, 和下面這個(gè)頁(yè)面類似:

<!DOCTYPE html> <html><head><title>手機(jī)專賣</title><meta charset="utf-8" /></head><body><h1>歡迎: 張三</h1><p>最新商品: <a href="products/mobile.html">華為P40</a></p></body> </html>

2. 這里的用戶名(上面的"張三"), 應(yīng)該是登錄這個(gè)網(wǎng)頁(yè)的訪問者的名字, 并且最新產(chǎn)品的數(shù)據(jù)應(yīng)該來自于數(shù)據(jù)庫(kù), 這樣它才能隨時(shí)更新。那么不能直接在html頁(yè)面中輸入它們, ?不能使用靜態(tài)的html代碼。此時(shí), 可以使用要求輸出的模板。模板和靜態(tài)html是相同的, 只是它會(huì)包含一些FreeMarker將它們變成動(dòng)態(tài)內(nèi)容的指令:

<!DOCTYPE html> <html><head><title>手機(jī)專賣</title><meta charset="utf-8" /></head><body><h1>歡迎: ${user}</h1><p>最新商品: <a href="${latestProduct.url}">${latestProduct.name}</a></p></body> </html>

3. 模板文件存放在Web服務(wù)器上, 就像通常存放靜態(tài)html頁(yè)面那樣。當(dāng)有人來訪問這個(gè)頁(yè)面, ?FreeMarker將會(huì)介入執(zhí)行, 然后動(dòng)態(tài)轉(zhuǎn)換模板, 用最新的數(shù)據(jù)內(nèi)容替換模板中${...}的部分, ?之后將結(jié)果發(fā)送到訪問者的Web瀏覽器中。訪問者的Web瀏覽器就會(huì)接收到例如第一個(gè)html示例那樣的內(nèi)容(也就是沒有FreeMarker指令的html代碼), 訪問者也不會(huì)察覺到服務(wù)器端使用的FreeMarker。 (當(dāng)然, 存儲(chǔ)在Web服務(wù)器端的模板文件是不會(huì)被修改的; 替換也僅僅出現(xiàn)在Web服務(wù)器的響應(yīng)中。)

4. 請(qǐng)注意, 模板并沒有包含程序邏輯來查找當(dāng)前的訪問者是誰(shuí), 或者去查詢數(shù)據(jù)庫(kù)獲取最新的產(chǎn)品。顯示的數(shù)據(jù)是在FreeMarker之外準(zhǔn)備的, 通常是一些"真正的"編程語(yǔ)言(比如Java) 所編寫的代碼。模板作者無需知道這些值是如何計(jì)算出的。事實(shí)上, 這些值的計(jì)算方式可以完全被修改, 而模板可以保持不變, 而且頁(yè)面的樣式也可以完全被修改而無需改動(dòng)模板。當(dāng)模板作者(設(shè)計(jì)師)和程序員不是同一人時(shí), 顯示邏輯和業(yè)務(wù)邏輯相分離的做法是非常有用的, 即便模板作者和程序員是一個(gè)人, 這么來做也會(huì)幫助管理應(yīng)用程序的復(fù)雜性。保證模板專注于顯示問題(視覺設(shè)計(jì), 布局和格式化)是高效使用模板引擎的關(guān)鍵。

5. 為模板準(zhǔn)備的數(shù)據(jù)整體被稱作為 數(shù)據(jù)模型。 模板作者要關(guān)心的是, 數(shù)據(jù)模型是樹形結(jié)構(gòu)(就像硬盤上的文件夾和文件), 在視覺效果上, 數(shù)據(jù)模型可以是:

6. 上面只是一個(gè)形象化顯示; 數(shù)據(jù)模型不是文本格式, 它來自于Java對(duì)象。對(duì)于Java程序員來說, root就像一個(gè)有g(shù)etUser()和getLatestProduct()方法的Java對(duì)象, 或者是有"user"和"latestProducts"鍵值的Java Map對(duì)象。相似地, latestProduct就像是有g(shù)etUrl()和getName()方法的Java對(duì)象, 或者是有"url"和"name"鍵值的Java Map對(duì)象。

7. 可以從數(shù)據(jù)模型中選取這些值, 使用user和latestProduct.name表達(dá)式即可。如果我們類推, 數(shù)據(jù)模型就像一個(gè)文件系統(tǒng), 那么"(root)"和latestProduct就對(duì)應(yīng)著目錄(文件夾), 而user, url和name就是這些目錄中的文件。

8. 總的來說, 模板和數(shù)據(jù)模型是FreeMarker來生成輸出(比如第一個(gè)展示的HTML)所必須的: 模板 + 數(shù)據(jù)模型 = 輸出。

總結(jié)

以上是生活随笔為你收集整理的002_模板 + 数据模型 = 输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。