導航:首頁 > 編程語言 > jsp網頁靜態化

jsp網頁靜態化

發布時間:2021-12-04 13:38:04

jsp如何靜態化

文件的名字還是jsp但是url的名字可以改。當然這只是改了url的後綴名,比如Struts的.action、.do;名字無所謂,你要改成.html也可以。。這跟靜態化沒關系。

② JSP 頁面靜態化 的幾種方式 哪個比較好

1.保存數據,然後馬上生成頁面,在頁面生成前,用戶是無法訪問到的。
這個方法最簡單,也最常見。
2.可以過濾器,可以用freemarker等

③ 各位大神,請問現在一般的Jsp頁面靜態化是如何實現的呢

你說的靜態是什麼靜態啊? 頁面內容靜態還是 訪問URL 路徑顯示偽靜態的啊?
前者 可以使用模板技術 velocity 和freemarker 實現
後者 通過 apache 配置重寫規則 配置虛擬主機 Rewirite 自己去 google~

④ 如何使用freemarker將jsp網頁靜態化

整個網站首頁的基本結構是通過jsp的include標簽將所有通過freemarker生成的靜態頁面組織起來。後台控制各個部分的靜態頁生成。這樣做將首頁進行了拆分,便於了靜態頁面的維護,當我們需要生成「友情鏈接」部分的時候就只生成友情鏈接部分,而不需要將整個頁面都從新生成一次。
以下是我生成靜態頁最核心的方法,使用freemarker。

/**
* 生成靜態頁面主方法
* @param context ServletContext
* @param data 一個Map的數據結果集
* @param templatePath ftl模版路徑
* @param targetHtmlPath 生成靜態頁面的路徑
*/
public static void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){
Configuration freemarkerCfg = new Configuration();
//載入模版
freemarkerCfg.(context, "/");
freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
try {
//指定模版路徑
Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8");
template.setEncoding("UTF-8");
//靜態頁面路徑
String htmlPath = context.getRealPath("/html")+"/"+targetHtmlPath;
File htmlFile = new File(htmlPath);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
//處理模版
template.process(data, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}

其實很簡單,只要Google一下就有很多這方面的代碼。我也是Google的代碼然後自己再根據實際情況修改。簡單說明一下參數:
ServletContext :這個不用說了吧。做java web的應該都知道,只不過struts2中這樣獲取ServletActionContext.getServletContext()
Map<String,Object> data : 模版的數據來源。freemarker通過一個Map給ftl模版送數據。
現在已友情鏈接為列子詳細介紹靜態頁面如何生成。其他模塊以此類推。
String templatePath : ftl所在的路徑。我這里相對於網站的一個相對路徑然後通過ServerContext獲取絕對路徑。
String targetHtmlPath : 最後生成靜態頁的路徑:我這里相對於網站的一個相對路徑然後通過ServerContext獲取絕對路徑。

友情鏈接根據這段代碼<jsp:include page="/html/index_link.html" flush="true"></jsp:include>我們需要freemarker生成一個index_link.html文件。友情鏈接數據來源通過資料庫查詢獲取。
然後再寫一個方法專門生成友情鏈接靜態頁面:

/**
* 生成友情鏈接的靜態頁index_link.html
* @param context
* @param data
*/
public static void createIndexFriendLink(ServletContext context,Map<String,Object> data){
crateHTML(context,data,"index_link.ftl","index_link.html");
}

此方法調用上面的createHTML方法。
然後根據以上方法我們就可以再Struts2的action裡面從資料庫查詢數據放入map調用createIndexFriendLink()方法生成靜態頁了。
這是action中的一個方法:
/**
* 生成友情鏈接靜態頁index_link.html
* @return
*/
public String createLink(){
//許可權驗證
if(! this.isAccess())
return "error";
try{
//得到友情鏈接
List links = friendLinkDAO.findAll();
//准備數據
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
//調用靜態頁面方法
HTML.createIndexFriendLink(ServletActionContext.getServletContext(), data);
addActionMessage("靜態頁面生成成功!");
return "message";
}catch(Exception e){
e.printStackTrace();
return "failure";
}
}

List links = friendLinkDAO.findAll();通過spring注入action的hiberate DAO獲取數據給list然後通過以下代碼
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
准備數據調用createIndexFriendLink()方法。
以下是:ftl模版源碼:

<#if links?size != 0>
< div class="link">
<strong>友情鏈接:</strong>
<#list links as link>
<a href="${link.linkUrl}" target="_blank" title="${link.linkName}">${link.linkName}</a>
</#list>
< /div>
< #else>
< div class="link"></div>
< /#if>

閱讀全文

與jsp網頁靜態化相關的資料

熱點內容
數控編程怎麼來的 瀏覽:103
廣西廣電網路的默認ip 瀏覽:191
政府發紅頭文件內容會實現嗎 瀏覽:552
騰訊貴安七星數據中心英文怎麼寫 瀏覽:489
玩火的女孩有幾個版本 瀏覽:113
tvshowtracker安卓版 瀏覽:983
App數據分析應該從哪些緯度 瀏覽:17
到底要不要升級ios92 瀏覽:875
cad2014安裝包安裝文件在哪裡 瀏覽:63
電信密碼無法登錄 瀏覽:820
cad的列印到文件怎麼設置 瀏覽:902
智行app鉑金會員怎麼還有期限 瀏覽:581
win10用子文件夾改名 瀏覽:234
ae鋼筆工具在哪裡 瀏覽:460
gn105數據線插哪裡 瀏覽:916
破鎖屏密碼方法 瀏覽:835
股票數據放哪裡 瀏覽:576
m格式庫文件 瀏覽:279
天際通數據服務怎麼開票 瀏覽:430
寫小說發哪個網站比較好 瀏覽:244

友情鏈接