下面是我使用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;