成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP技術實現動態頁面到靜態頁面的方案

開發 后端
實現動態頁面到靜態頁面以減小數據庫與服務器的壓力和負擔,這是很多實際開發應用工作當中的一個理想的解決辦法,那么本文就向你講解如何實現實現動態頁面到靜態頁面的方案。

對于JSP技術實現動態頁面到靜態頁面的方案,我們從三個步驟來說明:

JSP技術實現動態頁面到靜態頁面的方案***:

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

下面是一個JSP文件test.jsp

  1. ﹤%@ page language=java  contentType=text/html;charset=GB2312 %﹥  
  2.  
  3. ﹤%  
  4. out.write(﹤!--文件開始--﹥);  
  5. %﹥  
  6.  
  7. ﹤html﹥  
  8. ﹤head﹥  
  9. ﹤body﹥  
  10. ﹤%=輸出%﹥  
  11. ﹤/body﹥  
  12. ﹤/head﹥  
  13. ﹤/html﹥  
  14.  

經過Tomcat轉換出的Java文件test$jsp.java內容如下:

  1. package org.apache.jsp;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4. import javax.servlet.jsp.*;  
  5. import org.apache.jasper.runtime.*;  
  6.  
  7. public class test$jsp extends HttpJspBase {  
  8.  
  9.  static {  
  10.  
  11.  }  
  12.  public testOutRedir$jsp( ) {  
  13.  }  
  14.  
  15.  private static boolean _jspx_inited = false;  
  16.  
  17.  public final void _jspx_init() throws org.apache.jasper.runtime.JspException {  
  18.  
  19.     }  
  20.    public void _jspService(HttpServletRequest request, HttpServletResponse  response)  
  21.  
  22.         throws java.io.IOException, ServletException {  
  23.  JspFactory _jspxFactory = null;  
  24.  PageContext pageContext = null;  
  25.  HttpSession session = null;  
  26.         ServletContext application = null;  
  27.         ServletConfig config = null;  
  28.        JspWriter outnull;  
  29.         Object page = this;  
  30.         String  _value = null;  
  31.         try {  
  32.  
  33.             if (_jspx_inited == false) {  
  34.                 synchronized (this) {  
  35.                     if (_jspx_inited == false) {  
  36.                         _jspx_init();  
  37.                        _jspx_inited = true;  
  38.  
  39.                     }  
  40.                 }  
  41.             }  
  42.             _jspxFactory = JspFactory.getDefaultFactory();  
  43.  
  44.             response.setContentType(text/html;charset=GB2312);  
  45.  
  46.             pageContext = _jspxFactory.getPageContext(this, request, response,  
  47.  
  48.                           , true, 8192, true);  
  49.  
  50.             application = pageContext.getServletContext();  
  51.             config = pageContext.getServletConfig();  
  52.             session = pageContext.getSession();  
  53.            outpageContext.getOut();  
  54.  
  55.                //為了節省篇幅,我刪除了解釋器添加的注釋  
  56.  
  57.                out.write(\r\n);  
  58.  
  59.   //上一句是由于  
  60.  ﹤%@ page language=java  contentType=text/html;charset=GB2312 %﹥后面的換行產生的  
  61.  
  62.                out.write(﹤!--文件開始--﹥);  
  63.  
  64.                out.write(\r\n﹤html﹥\r\n﹤head﹥\r\n﹤body﹥\r\n);  
  65.  
  66.                out.print(輸出);  
  67.  
  68.                out.write(\r\n﹤/body﹥\r\n﹤/head﹥\r\n﹤/html﹥\r\n);  
  69.  
  70.         } catch (Throwable t) {  
  71.  
  72.             if (out!= null &&out.getBufferSize() != 0)  
  73.  
  74.                out.clearBuffer();  
  75.  
  76.             if (pageContext != null) pageContext.handlePageException(t);  
  77.  
  78.         } finally {  
  79.  
  80.             if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);  
  81.  
  82.         }  
  83.  
  84.     }  
  85.  
  86. }  
  87.  

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

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

  1. abstractpublicclassjavax.servlet.jsp.JspWriterextends java.io.Writer{  
  2.  
  3.       final public static intNO_BUFFER = 0;  
  4.  
  5.       final public static intDEFAULT_BUFFER = -1;  
  6.  
  7.       final public static intUNBOUNDED_BUFFER = -2;  
  8.  
  9.       protected intbufferSize;  
  10.  
  11.       protected BooleanautoFlush;  
  12.  
  13.       protectedjavax.servlet.jsp.JspWriter(intarg1,booleanarg2);  
  14.  
  15.         
  16.  
  17.    abstractpublicvoidnewLine()throwsIOException;  
  18.  
  19.    abstractpublicvoidprint(booleanarg0)throwsIOException;  
  20.  
  21.    abstractpublicvoidprint(chararg0)throwsIOException;  
  22.  
  23.    abstractpublicvoidprint(intarg0)throwsIOException;  
  24.  
  25.    abstractpublicvoidprint(longarg0)throwsIOException;  
  26.  
  27.    abstractpublicvoidprint(floatarg0)throwsIOException;  
  28.  
  29.    abstractpublicvoidprint(doublearg0)throwsIOException;  
  30.  
  31.    abstractpublicvoidprint(char[]arg0)throwsIOException;  
  32.  
  33.    abstractpublicvoidprint(Stringarg0)throwsIOException;  
  34.  
  35.    abstractpublicvoidprint(Objectarg0)throwsIOException;  
  36.  
  37.    abstractpublicvoidprintln()throwsIOException;  
  38.  
  39.    abstractpublicvoidprintln(booleanarg0)throwsIOException;  
  40.  
  41.    abstractpublicvoidprintln(chararg0)throwsIOException;  
  42.  
  43.    abstractpublicvoidprintln(intarg0)throwsIOException;  
  44.  
  45.    abstractpublicvoidprintln(longarg0)throwsIOException;  
  46.  
  47.    abstractpublicvoidprintln(floatarg0)throwsIOException;  
  48.  
  49.    abstractpublicvoidprintln(doublearg0)throwsIOException;  
  50.  
  51.    abstractpublicvoidprintln(char[]arg0)throwsIOException;  
  52.  
  53.    abstractpublicvoidprintln(Stringarg0)throwsIOException;  
  54.  
  55.    abtractpublicvoidprintln(Objectarg0)throwsIOException;  
  56.  
  57.    abstractpublicvoidclear()throwsIOException;  
  58.  
  59.    abstractpublicvoidclearBuffer()throwsIOException;  
  60.  
  61.    abstractpublicvoidflush()throwsIOException;  
  62.  
  63.    abstractpublicvoidclose()throwsIOException;  
  64.  
  65.    publicintgetBufferSize() ;  
  66.  
  67.    abstractpublicintgetRemaining();  
  68.  
  69.    publicbooleanisAutoFlush();  
  70.  
  71. }  
  72.  

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

JSP技術實現動態頁面到靜態頁面的方案第二:

實現替換

假設

 

  1. ﹤%@ page language=java  contentType=text/html;charset=GB2312 import=jwb.util.HtmlIntoFile,jwb.util.TempSinglet,java.io.File%﹥  
  2. ﹤%  
  3.  
  4. JspWriter outout_bak =out;String arg1=argument1;String filePath = /cache/根據參數生成文件名_ + arg1 + .html;  
  5.  
  6. //首先判斷文件是否已經存在,如果不存在則執行本頁面,否則跳轉到靜態頁面就OK了File f = new File(pageContext.getServletContext().getRealPath(filePath));  
  7.  
  8. if(f.exists()){ out_bak.clear(); pageContext.forward(filePath); System.out.println(直接轉到靜態頁面);  
  9.  
  10.  return;}outnew HtmlIntoFile(pageContext.getServletContext().getRealPath(filePath));out.write(﹤!--文件開始--﹥);  
  11. %﹥  
  12. ﹤html﹥  
  13. ﹤head﹥  
  14. ﹤body﹥  
  15. ﹤%= 看吧,這就是輸出被重定向到文件的實現,很簡單吧^_^%﹥  
  16. ﹤/body﹥  
  17. ﹤/head﹥  
  18. ﹤/html﹥  
  19. ﹤%  
  20. out.close();  
  21.  
  22. //關閉生成的靜態文件out_bak.clear();pageContext.forward(filePath);  
  23.  
  24. System.out.println(執行本頁面后再轉到靜態頁面);return;  
  25. %﹥  
  26.  

 

JSP技術實現動態頁面到靜態頁面的方案第三:

更新問題

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

◆當用來生成頁面的數據更新時

◆如果不需要很提供時時的數據可以定時更新

◆永遠不更新

那么通過這個JSP技術實現動態頁面到靜態頁面的方案,從動態頁面到靜態的轉變就已經告一段落,你是否有點啟發呢?

 

【編輯推薦】

  1. JSP開發中的腳本編程淺析
  2. JSP教程基礎篇之JSP的技術特點
  3. JSP教程基礎知識之JSP2.0特性
  4. JSP入門之網站環境搭建的步驟
  5. JSP入門之避免Form表單重復提交的幾種方案
責任編輯:仲衡 來源: 互聯網轉載
相關推薦

2009-07-06 18:23:56

Struts和JSPJSP頁面

2009-07-03 18:12:49

JSP頁面

2009-11-23 16:09:50

PHP實現偽靜態化頁面

2011-05-11 16:54:49

JSP

2009-01-18 10:56:27

JSTLEL表達式JSP標準標記庫

2011-05-06 09:36:16

動態頁面

2009-07-02 09:25:41

JSP實現頁面跳轉

2009-08-24 18:00:52

ASP.NET模板生成

2009-02-05 17:09:02

動態圖片JSPTomcat

2009-06-25 14:05:01

JavaBean實現J

2009-07-01 11:05:18

頁面與代碼分離JSP源碼

2009-07-06 09:34:19

JSP頁面

2009-07-01 18:50:29

Dreamweaver

2012-06-13 02:10:46

Java并發

2012-07-19 10:59:18

Jav并發

2009-07-06 10:00:31

JSP頁面傳值

2010-03-25 18:09:23

Nginx配置文件

2009-07-24 10:53:51

ASP.NET實現靜態

2012-05-04 09:40:01

JSP時間控件Java

2009-03-05 10:10:52

餅圖數據庫JSP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品福利 | 亚洲在线一区 | 国产一区91精品张津瑜 | 欧美aⅴ | 碰碰视频 | 综合色导航 | 久久久99精品免费观看 | 中文字幕免费视频 | 精品成人av | 干出白浆视频 | 日韩精品一区二 | 青娱乐一区二区 | 中文字幕一区二区三区四区五区 | 日本在线网站 | 国产精品麻 | 国产一级片 | 久久专区 | 亚洲精品国产电影 | 欧美成人a| 精品毛片 | 日韩精品一区二区三区中文在线 | 91欧美精品成人综合在线观看 | 97国产精品视频人人做人人爱 | 人人人干| 精品国产91乱码一区二区三区 | 一区二区在线不卡 | 亚洲超碰在线观看 | 精品欧美乱码久久久久久 | 国产精品久久久久久久久久久久冷 | 久久久久成人精品免费播放动漫 | 欧美精品久久久久久 | 日本激情视频网 | 午夜小视频免费观看 | 97人人澡人人爽91综合色 | av手机在线看 | 午夜国产在线 | 久久综合久久综合久久 | 成人在线国产 | 久久亚洲91 | 免费观看毛片 | av免费网站在线观看 |