亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP顯示內容緩存技巧

2019-11-18 19:54:17
字體:
來源:轉載
供稿:網友

  前段時間做自己社區的論壇,在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 */ 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91在线播放| 国产91ⅴ在线精品免费观看| 亚洲精品第一国产综合精品| 久久国产精品偷| 久久久成人的性感天堂| 91av在线免费观看视频| 91精品久久久久久久| 亚洲a一级视频| 午夜精品福利在线观看| 精品久久久视频| 色www亚洲国产张柏芝| 日韩中文在线不卡| 久久久在线免费观看| 欧美体内谢she精2性欧美| 久久久久久欧美| 日韩av电影手机在线观看| 国产精品扒开腿做爽爽爽男男| 国产日韩精品视频| 中文字幕欧美亚洲| 一区二区福利视频| 国产午夜精品视频| 国产a级全部精品| 国产精品免费久久久| 国产精品久久久久一区二区| 精品国产自在精品国产浪潮| 亚洲一二三在线| 热久久免费国产视频| 成人激情在线播放| 国产精品偷伦免费视频观看的| 亚洲国产高清自拍| 日韩av电影中文字幕| 欧美性生交大片免网| 欧美性猛交xxxx免费看漫画| 欧美香蕉大胸在线视频观看| 久久免费少妇高潮久久精品99| 欧美黄色性视频| 亚洲第一精品久久忘忧草社区| 久久久久久久久久国产| 欧美一区二区视频97| 欧美大片在线看| 国产成人精品免高潮在线观看| 欧美激情视频免费观看| 日韩在线激情视频| 久久国产精品首页| 久久久女人电视剧免费播放下载| 欧美精品中文字幕一区| 国产z一区二区三区| 性欧美在线看片a免费观看| 久久久999国产精品| 91久久国产综合久久91精品网站| 国产日韩av在线播放| 欧美精品videosex极品1| 欧美视频13p| 国产主播欧美精品| 国产精品久久激情| 国产91精品久久久久| 中文日韩电影网站| 国产99久久精品一区二区永久免费| 伦理中文字幕亚洲| 久久在线免费视频| 亚洲综合在线播放| 日韩美女毛茸茸| 亚洲第一视频网| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产美女精品视频免费观看| 国产欧美精品一区二区| 欧美高清不卡在线| 国产一区二区欧美日韩| 欧美一区第一页| 精品亚洲永久免费精品| 国产成人综合一区二区三区| 久久精品亚洲热| 国产精品wwww| 夜夜躁日日躁狠狠久久88av| 欧美日韩国产影院| 欧美人与性动交| 亚洲小视频在线观看| 亚洲性生活视频在线观看| 91精品久久久久久久久| 国模视频一区二区三区| 国产激情综合五月久久| 欧美日韩加勒比精品一区| 国产日韩欧美中文在线播放| 亚洲奶大毛多的老太婆| 亚洲bt欧美bt日本bt| 中文在线资源观看视频网站免费不卡| 亚洲护士老师的毛茸茸最新章节| 欧美大奶子在线| 久久精品99久久久久久久久| 操日韩av在线电影| 欧美性开放视频| 亚洲综合成人婷婷小说| 国产精欧美一区二区三区| 91成人天堂久久成人| 精品成人久久av| 国产精品99久久久久久久久久久久| 亚洲欧美视频在线| 视频在线观看一区二区| 亚洲电影天堂av| 欧美性猛xxx| 国语自产精品视频在线看抢先版图片| 91久久久久久久久久| 久久久国产精彩视频美女艺术照福利| 国产精品久久激情| 欧美日韩午夜视频在线观看| 青青草原成人在线视频| 日韩美女免费观看| 欧美做受高潮电影o| 久久夜精品va视频免费观看| 久久久久久久久久久亚洲| 亚州av一区二区| 成人免费网站在线看| 国产精品美女av| 国产精品综合久久久| 日韩高清av在线| 国产视频亚洲视频| 国产精品一区二区三区在线播放| 亚洲福利精品在线| 亚洲视频第一页| 亚洲高清免费观看高清完整版| 欧美日韩中文字幕综合视频| 在线亚洲国产精品网| 精品国产福利在线| 精品美女久久久久久免费| 另类少妇人与禽zozz0性伦| 国产精品视频区1| 欧美性猛交xxxx乱大交| 欧美精品久久久久a| 久久亚洲精品成人| 欧美久久精品一级黑人c片| 日韩美女视频在线观看| 国产乱肥老妇国产一区二| 亚洲在线第一页| 国产极品jizzhd欧美| 91av在线网站| 国产婷婷97碰碰久久人人蜜臀| 日韩欧美国产黄色| 一区二区日韩精品| 91精品免费久久久久久久久| 亚洲精品中文字幕av| 日韩av在线网页| 亚洲高清一二三区| 26uuu久久噜噜噜噜| 精品久久久中文| 亚洲黄色有码视频| 亚洲社区在线观看| 欧洲中文字幕国产精品| 91高潮精品免费porn| 欧美三级xxx| 亚洲一区二区三区成人在线视频精品| 国产精品久久久久久亚洲影视| 国产精品揄拍500视频| 成人黄色片网站| 亚洲天堂男人的天堂| 精品日本美女福利在线观看| 美女视频黄免费的亚洲男人天堂| 国产精品久久久久久亚洲影视| 91极品女神在线| 日韩在线观看免费全| 精品无人区乱码1区2区3区在线| 亚洲精品v欧美精品v日韩精品| 欧美性猛交xxxx免费看漫画| 久久久欧美精品| 精品国产一区二区三区久久狼黑人|