主頁 > 知識庫 > JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法

JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法

熱門標簽:南京新思維電話機器人 百度地圖添加標注圖標樣式 泰州泰興400電話 怎么申請 企業(yè)怎么在聯(lián)通申請400電話 如何用中國地圖標注數(shù)字點 聊城智能電銷機器人外呼 南昌市地圖標注app 好操作的電話機器人廠家 地圖標注市場怎么樣

本文是介紹了jsp技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法,分享給大家,具體如下:

對于JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方案,我們從三個步驟來說明:

JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方案第一:

為了能深入淺出的理解這個框架的由來,我們首先來了解一下JSP解析器將我們寫的JSP代碼轉(zhuǎn)換成的JAVA文件的內(nèi)容。

下面是一個JSP文件test.jsp

﹤%@ page language=java contentType=text/html;charset=GB2312 %﹥ 
﹤% 
out.write(﹤!--文件開始--﹥); 
%﹥ 
﹤html﹥ 
﹤head﹥ 
﹤body﹥ 
﹤%=輸出%﹥ 
﹤/body﹥ 
﹤/head﹥ 
﹤/html﹥ 

經(jīng)過Tomcat轉(zhuǎn)換出的Java文件test$jsp.java內(nèi)容如下:

package org.apache.jsp; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import javax.servlet.jsp.*; 
import org.apache.jasper.runtime.*; 
 
public class test$jsp extends HttpJspBase { 
 
 static { 
 
 } 
 public testOutRedir$jsp( ) { 
 } 
 
 private static boolean _jspx_inited = false; 
 
 public final void _jspx_init() throws org.apache.jasper.runtime.JspException { 
 
  } 
  public void _jspService(HttpServletRequest request, HttpServletResponse response) 
 
    throws java.io.IOException, ServletException { 
 JspFactory _jspxFactory = null; 
 PageContext pageContext = null; 
 HttpSession session = null; 
    ServletContext application = null; 
    ServletConfig config = null; 
    JspWriter out= null; 
    Object page = this; 
    String _value = null; 
    try { 
 
      if (_jspx_inited == false) { 
        synchronized (this) { 
          if (_jspx_inited == false) { 
            _jspx_init(); 
            _jspx_inited = true; 
 
          } 
        } 
      } 
      _jspxFactory = JspFactory.getDefaultFactory(); 
 
      response.setContentType(text/html;charset=GB2312); 
 
      pageContext = _jspxFactory.getPageContext(this, request, response, 
 
             , true, 8192, true); 
 
      application = pageContext.getServletContext(); 
      config = pageContext.getServletConfig(); 
      session = pageContext.getSession(); 
      out= pageContext.getOut(); 
 
        //為了節(jié)省篇幅,我刪除了解釋器添加的注釋 
 
        out.write(\r\n); 
 
 //上一句是由于 
 ﹤%@ page language=java contentType=text/html;charset=GB2312 %﹥后面的換行產(chǎn)生的 
 
        out.write(﹤!--文件開始--﹥); 
 
        out.write(\r\n﹤html﹥\r\n﹤head﹥\r\n﹤body﹥\r\n); 
 
        out.print(輸出); 
 
        out.write(\r\n﹤/body﹥\r\n﹤/head﹥\r\n﹤/html﹥\r\n); 
 
    } catch (Throwable t) { 
 
      if (out!= null out.getBufferSize() != 0) 
 
        out.clearBuffer(); 
 
      if (pageContext != null) pageContext.handlePageException(t); 
 
    } finally { 
 
      if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); 
 
    } 
 
  } 
 
} 

 從上面的代碼中可以清晰的看到JSP內(nèi)建的幾個對象(out、request、response、session、pageContext、application、config、page)是怎么產(chǎn)生的,懂servlet的朋友一看就能明白。

下面重點理解一下out對象,它被聲明為JspWriter類型,JspWriter是一個抽象類,在包javax.servlet.jsp中可以找到它的定義。

abstractpublicclassjavax.servlet.jsp.JspWriterextends java.io.Writer{ 
 
   final public static intNO_BUFFER = 0; 
 
   final public static intDEFAULT_BUFFER = -1; 
 
   final public static intUNBOUNDED_BUFFER = -2; 
 
   protected intbufferSize; 
 
   protected BooleanautoFlush; 
 
   protectedjavax.servlet.jsp.JspWriter(intarg1,booleanarg2); 
 
    
 
  abstractpublicvoidnewLine()throwsIOException; 
 
  abstractpublicvoidprint(booleanarg0)throwsIOException; 
 
  abstractpublicvoidprint(chararg0)throwsIOException; 
 
  abstractpublicvoidprint(intarg0)throwsIOException; 
 
  abstractpublicvoidprint(longarg0)throwsIOException; 
 
  abstractpublicvoidprint(floatarg0)throwsIOException; 
 
  abstractpublicvoidprint(doublearg0)throwsIOException; 
 
  abstractpublicvoidprint(char[]arg0)throwsIOException; 
 
  abstractpublicvoidprint(Stringarg0)throwsIOException; 
 
  abstractpublicvoidprint(Objectarg0)throwsIOException; 
 
  abstractpublicvoidprintln()throwsIOException; 
 
  abstractpublicvoidprintln(booleanarg0)throwsIOException; 
 
  abstractpublicvoidprintln(chararg0)throwsIOException; 
 
  abstractpublicvoidprintln(intarg0)throwsIOException; 
 
  abstractpublicvoidprintln(longarg0)throwsIOException; 
 
  abstractpublicvoidprintln(floatarg0)throwsIOException; 
 
  abstractpublicvoidprintln(doublearg0)throwsIOException; 
 
  abstractpublicvoidprintln(char[]arg0)throwsIOException; 
 
  abstractpublicvoidprintln(Stringarg0)throwsIOException; 
 
  abtractpublicvoidprintln(Objectarg0)throwsIOException; 
 
  abstractpublicvoidclear()throwsIOException; 
 
  abstractpublicvoidclearBuffer()throwsIOException; 
 
  abstractpublicvoidflush()throwsIOException; 
 
  abstractpublicvoidclose()throwsIOException; 
 
  publicintgetBufferSize() ; 
 
  abstractpublicintgetRemaining(); 
 
  publicbooleanisAutoFlush(); 
 
} 

相信到這里你可能已經(jīng)知道怎么做了。是的,來個偷天換日,繼承JspWriter類,然后實現(xiàn)其定義的虛函數(shù),然后把out變量替換成你自己實現(xiàn)的類的實例就ok了。

JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方案第二:

實現(xiàn)替換

假設(shè)

﹤%@ page language=java contentType=text/html;charset=GB2312 import=jwb.util.HtmlIntoFile,jwb.util.TempSinglet,java.io.File%﹥ 
﹤% 
 
JspWriter outout_bak =out;String arg1=argument1;String filePath = /cache/根據(jù)參數(shù)生成文件名_ + arg1 + .html; 
 
//首先判斷文件是否已經(jīng)存在,如果不存在則執(zhí)行本頁面,否則跳轉(zhuǎn)到靜態(tài)頁面就OK了File f = new File(pageContext.getServletContext().getRealPath(filePath)); 
 
if(f.exists()){ out_bak.clear(); pageContext.forward(filePath); System.out.println(直接轉(zhuǎn)到靜態(tài)頁面); 
 
 return;}out= new HtmlIntoFile(pageContext.getServletContext().getRealPath(filePath));out.write(﹤!--文件開始--﹥); 
%﹥ 
﹤html﹥ 
﹤head﹥ 
﹤body﹥ 
﹤%= 看吧,這就是輸出被重定向到文件的實現(xiàn),很簡單吧^_^%﹥ 
﹤/body﹥ 
﹤/head﹥ 
﹤/html﹥ 
﹤% 
out.close(); 
 
//關(guān)閉生成的靜態(tài)文件out_bak.clear();pageContext.forward(filePath); 
 
System.out.println(執(zhí)行本頁面后再轉(zhuǎn)到靜態(tài)頁面);return; 
%﹥ 

 JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方案第三:

更新問題

下面就討論一下如何更新生成靜態(tài)文件,其實從上面實現(xiàn)中你可以看到,很簡單的就是將生成的靜態(tài)文件刪除即可,至于什么時候刪除,要看你的需求了。我能想到的幾種情況如下:

◆當(dāng)用來生成頁面的數(shù)據(jù)更新時

◆如果不需要很提供時時的數(shù)據(jù)可以定時更新

◆永遠不更新

那么通過這個JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方案,從動態(tài)頁面到靜態(tài)的轉(zhuǎn)變就已經(jīng)告一段落,你是否有點啟發(fā)呢?感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • jsp實現(xiàn)將動態(tài)網(wǎng)頁轉(zhuǎn)換成靜態(tài)頁面的方法
  • 動態(tài)JSP頁生成靜態(tài)HTML的方法
  • jsp中include指令靜態(tài)導(dǎo)入和動態(tài)導(dǎo)入的區(qū)別詳解
  • JSP中動態(tài)include與靜態(tài)include的區(qū)別介紹

標簽:烏蘭察布 銅川 山南 吉林 開封 白銀 臨汾 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標題《JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法》,本文關(guān)鍵詞  JSP,技術(shù),實現(xiàn),動態(tài),頁面,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于JSP技術(shù)實現(xiàn)動態(tài)頁面到靜態(tài)頁面的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章