當前位置:編程學習大全網 - 源碼下載 - freemarker是如何讓主頁變成純靜態的?

freemarker是如何讓主頁變成純靜態的?

整個網站首頁的基本結構是通過jsp的include標簽組織freemarker生成的所有靜態頁面。背景控制每個部分的靜態頁面生成。這樣做可以拆分主頁,這有利於靜態頁面的維護。當我們需要生成“友情鏈接”部分時,我們只生成友情鏈接部分,而不必重新生成整個頁面。

下面是我使用freemarker生成靜態頁面的核心方法。

/**

*生成靜態頁面的main方法

* @param context ServletContext

* @param data地圖的數據結果集。

* @param templatePath ftl模板路徑

* @param targetHtmlPath生成靜態頁面的路徑。

*/

public static void crate html(servlet context上下文,Map & lt字符串,對象& gtdata,String templatePath,String targetHtmlPath){

Configuration freemarkerCfg = new Configuration();

//加載模板

freemarkercfg . setservletcontextfortemplatloading(上下文,“/”);

freemarkercfg . set encoding(locale . get default(),“UTF-8”);

嘗試{

//指定模板路徑

template template = freemarkercfg . get template(template path,“UTF-8”);

template . set encoding(" UTF-8 ");

//靜態頁面路徑

string html path = context . get realpath("/html ")+"/"+target html path;

File htmlFile =新文件(html path);

writer out = new buffered writer(new output streamwriter(new file output stream(html file)," UTF-8 "));

//處理模板

template.process(data,out);

out . flush();

out . close();

} catch(異常e) {

e . printstacktrace();

}

}

其實很簡單,只要妳谷歌壹下,這方面的代碼很多。我也是Google的代碼,然後會根據實際情況修改。簡要解釋參數:

ServletContext:不用說。做java web的應該都知道,但是在struts2中,servletactioncontext。getservletContext()就是這樣獲得的。

地圖& lt字符串,對象& gt數據:模板的數據源。Freemarker通過地圖向ftl模板發送數據。

現在我有壹個友好的鏈接來詳細介紹如何為該列生成靜態頁面。其他模塊等等。

字符串模板路徑:ftl所在的路徑。我在這裏有壹個到網站的相對路徑,然後通過ServerContext得到絕對路徑。

String targetHtmlPath:生成靜態頁面的路徑最後:我這裏有壹個網站的相對路徑然後通過ServerContext得到絕對路徑。

友情鏈接按照這個代碼

然後編寫壹個方法來生成友誼鏈接的靜態頁面:

/**

*生成友情鏈接的靜態頁面index_link.html。

* @param上下文

* @param數據

*/

公共靜態void createIndexFriendLink(servlet context上下文,Map & lt字符串,對象& gt數據){

crateHTML(context,data," index_link.ftl "," index _ link . html ");

}

這個方法調用上面的createHTML方法。

然後按照上面的方法,我們可以在Struts2的動作中把數據庫中的查詢數據放到地圖中,調用createIndexFriendLink()方法生成靜態頁面。

這是壹種有效的方法:

/**

*生成靜態友情鏈接頁面index_link.html

* @返回

*/

公共字符串createLink(){

//授權驗證

如果(!this.isAccess())

返回“錯誤”;

嘗試{

//獲取友好鏈接

list links = friendlink Dao . find all();

//準備數據

HashMap & lt字符串,對象& gtdata = new HashMap & lt字符串,對象& gt();

data.put("links ",鏈接);

//調用靜態頁面方法

html . createindexfriendlink(servletactioncontext . getservletcontext(),data);

AddActionMessage("靜態頁面生成成功!");

返回“消息”;

}catch(異常e){

e . printstacktrace();

返回“失敗”;

}

}

list links = friendlink Dao . find all();通過將hiberate DAO of action註入spring來獲取列表中的數據,然後傳遞以下代碼。

HashMap & lt字符串,對象& gtdata = new HashMap & lt字符串,對象& gt();

data.put("links ",鏈接);

準備數據並調用createIndexFriendLink()方法。

以下是:ftl模板源代碼:

& lt#如果鏈接?尺寸!= 0 & gt

& ltdiv class="link " >

& ltstrong & gt友情鏈接:

& lt#將鏈接作為鏈接列出& gt

& lta href = " $ { link . linkurl } " target = " _ blank " title = " $ { link . linkname } " & gt;$ { link.linkName } & lt/a & gt;

& lt/# list & gt;

& lt/div & gt;

& lt# else & gt

& ltdiv class="link " >& lt/div & gt;

& lt/# if & gt;

  • 上一篇:2020-07-21
  • 下一篇:Windows10系統更新有必要嗎?
  • copyright 2024編程學習大全網