婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > jsp實現將動態網頁轉換成靜態頁面的方法

jsp實現將動態網頁轉換成靜態頁面的方法

熱門標簽:高德地圖標注樣式 商洛電銷 杭州ai語音電銷機器人功能 杭州語音電銷機器人軟件 北票市地圖標注 電銷機器人是有一些什么技術 電銷機器人好賣么 四川保險智能外呼系統商家 地圖標注線上教程

本文實例講述了jsp實現將動態網頁轉換成靜態頁面的方法。分享給大家供大家參考。具體如下:

如果我可以將jsp動態網頁轉換成靜態頁面,那么訪問的時候就不需要頻繁的訪問數據庫了。

jsp 顯示內容緩存技巧

前段時間做自己社區的論壇,在jive 的基礎上做一個頁面顯示所有論壇的帖子,可以稱之為總版,模仿forum 類的接口做個superforum 并且實現cachable,不過因為這個頁面刷新量比較大,雖然被cache 了,我還是想辦法進行頁面的緩存,感覺用jsp 產生的html靜態內容當緩存,頁面訪問速度應該有所提高。

首先想到的一種辦法,是采用java.net 的urlconnection 把服務器上的jsp 抓過來做緩存,不過我覺得這樣做太見外了,自己服務器上的東西,為何要用http 去訪問.于是想另外一個辦法,把jsp 的out 對象的輸出控制到自己希望的地方.比如輸出到靜態文件,又或者保存成全局的字符串變量.這樣的話,瀏覽就不需要執行jsp,只是瀏覽該html 了.僅僅在數據有更新的時候進行一次update 操作,把jsp 重新輸出為html.

我覺得,瀏覽事件比數據插入或更新發生的次數多的時候.不妨試試這個辦法來提高頁面訪問速度.

整件事情有點像把jsp 當作模板,生成靜態的html 頁面.

將如下代碼寫入web-xml:

filter> 
filter-name>filecapturefilter/filter-name> 
filter-class>com.junjing.filter.filecapturefilter/filter-class> 
/filter> 
filter-mapping> 
filter-name>filecapturefilter/filter-name> 
url-pattern>/latest.jsp/url-pattern> 
/filter-mapping> 

latest.jsp 是我要cache 的頁面

java 源碼代碼如下:

/** * start file filecapturefilter.java */ 
package com.junjing.filter; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
public class filecapturefilter implements filter 
{ 
private string protdirpath; 
public void init(filterconfig filterconfig) 
throws servletexception 
{ 
protdirpath = filterconfig.getservletcontext().getrealpath("/"); 
} 
public void dofilter(servletrequest request,servletresponse response,filterchain 
chain) 
throws ioexception, servletexception 
{ 
string filename = protdirpath + "forum/lastest.html"; 
printwriter out = response.getwriter(); 
filecaptureresponsewrapper responsewrapper = new 
filecaptureresponsewrapper((httpservletresponse)response); 
chain.dofilter(request, responsewrapper); 
// fill responsewrapper up 
string html = responsewrapper.tostring(); 
//得到的html 頁面結果字符串 
// responsewrapper.writefile(filename); 
// dump the contents 寫成html 文件,也可以保存在內存 
//responsewrapper.writeresponse( out ); 
// back to browser 
//responsewrapper.sendredirect("lastestthread.jsp"); 
} 
public void destroy() {} 
} 
/** * end file filecapturefilter.java */ 

/** * start file filecaptureresponsewrapper.java */ 
package com.junjing.filter; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
public class filecaptureresponsewrapper 
extends httpservletresponsewrapper 
{ 
private chararraywriter output; 
public string tostring() 
{ 
return output.tostring(); 
} 
public filecaptureresponsewrapper(httpservletresponse response) 
{ 
super(response); 
output = new chararraywriter(); 
} 
public printwriter getwriter() 
{ 
return new printwriter(output); 
} 
public void writefile(string filename) 
throws ioexception 
{ 
filewriter fw = new filewriter(filename); 
fw.write( output.tochararray() ); 
fw.close(); 
} 
public void writeresponse(printwriter out) 
{ 
out.print( output.tochararray() ); 
} 
} 
/** * end file filecaptureresponsewrapper.java */ 

附件源代碼:

不過采用resin 服務器的話,以上代碼會失效。因為resin 沒有實現getwriter 方法,而是采用getoutputstream 取而代之,所以必須修改些代碼來迎合resin 運行環境:

/** * start file filecaptureresponsewrapper.java */ 
package com.junjing.filter; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
public class filecaptureresponsewrapper 
extends httpservletresponsewrapper 
{ 
private chararraywriter output; 
public string tostring() 
{ 
return output.tostring(); 
} 
public filecaptureresponsewrapper(httpservletresponse response) 
{ 
super(response); 
output = new chararraywriter(); 
} 
public printwriter getwriter() 
{ 
return new printwriter(output); 
} 
public void writefile(string filename) 
throws ioexception 
{ 
filewriter fw = new filewriter(filename); 
fw.write( output.tostring()); 
fw.close(); 
} 
public servletoutputstream getoutputstream() 
throws java.io.ioexception 
{ 
return new servletoutputstream(); 
} 
public void write(int b) 
throws ioexception 
{ 
output.write(b); 
} 
public void write(byte b[]) 
throws ioexception 
{ 
output.write(new string(b,"gbk")); 
} 
public void write(byte b[], int off, int len) 
throws ioexception 
{ 
output.write(new string(b, off, len)); 
} 
}; 
} 
public void writeresponse(printwriter out) 
{ 
out.print(output.tochararray()); 
} 
} 
/** * end file filecaptureresponsewrapper.java */

希望本文所述對大家的JSP程序設計有所幫助。

您可能感興趣的文章:
  • JSP動態網頁開發技術概述
  • JSP動態網頁開發原理詳解

標簽:丹東 宿州 西藏 青島 紅河 云浮 江西 貴州

巨人網絡通訊聲明:本文標題《jsp實現將動態網頁轉換成靜態頁面的方法》,本文關鍵詞  jsp,實,現將,動態,網頁,轉,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《jsp實現將動態網頁轉換成靜態頁面的方法》相關的同類信息!
  • 本頁收集關于jsp實現將動態網頁轉換成靜態頁面的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 满洲里市| 荆州市| 五河县| 吴江市| 鹿邑县| 门源| 丹凤县| 武义县| 扬中市| 松桃| 从江县| 平江县| 哈巴河县| 盐亭县| 辰溪县| 讷河市| 三原县| 漠河县| 乃东县| 道真| 德清县| 库车县| 顺昌县| 泾源县| 洱源县| 华坪县| 琼中| 汝州市| 余姚市| 和田县| 旬邑县| 邯郸市| 滨州市| 呼伦贝尔市| 苏州市| 建湖县| 淮阳县| 江陵县| 盐山县| 肇州县| 清水河县|