jsp動態網頁靜態化,jsp動態網頁特性

本文目錄一覽:

如何將動態頁面jsp轉換為html靜態的網頁

要自動生成靜態頁面,用Filter截獲jsp請求並先進行預處理,自動生成Html,是個不錯的主意。一個很容易想到的方法是在Filter截獲Request後,,導向一個Servlet,在這個Servlet中向本機發送一個http請求,然後將響應寫入一個文件:

URLConnection urlConn = URLConnection.open();

注意要避免遞歸。

另一個方法是不模擬http,而是定製Response,把伺服器返回的JSP響應輸出到我們自己的Response中,就可以將響應快速寫入Html文件,然後再發送給客戶。而且,由於沒有http模擬請求,直接讀取伺服器響應速度非常快。

截獲Response的關鍵便是實現一個WrappedResponse,讓伺服器將響應寫入我們的WrappedResponse中。這類似於一個代理模式,Servlet 2.x已經提供了一個WrappedResponse類,我們只需要複寫其中的一些關鍵方法即可。

WrappedResponse實現了Response介面,它需要一個Response作為構造函數的參數,事實上這正是代理模式的應用:WrappedResponse充當了代理角色,它會將JSP/Servlet容器的某些方法調用進行預處理,我們需要實現自己的方法。

綜上:用Filter實現HTML緩衝的步驟是:

1. 用Filter截獲請求,如/a.jsp?id=123,映射到對應的html文件名為/html/a.jspid=123.htm。

2. 查找是否有/html/a.jspid=123.htm,如果有,直接forward到此html,結束。

3. 如果沒有,實現一個WrappedResponse,然後調用filterChain(request, wrappedResponse)。

4. 將返回的WrappedResponse寫入文件/html/a.jspid=123.htm,然後返迴響應給用戶。

5. 下一次用戶發送相同的請求時,到第2步就結束了。

使用這個方法的好處是不用更改現有的Servlet,JSP頁,限制是,JSP頁面結果不能與Session相關,需要登陸或用戶定製的頁面不能用這種方法緩衝。

jsp動態網站靜態化

我有個個人的想法,就是定期把解析好的html 頁面做成一個備份,比如每天做一備份,如果內容沒有改變的時候就讓用戶直接訪問靜態的html 如果檢測到有內容改變的話重新吧新生成的頁面備份下來替換原來的頁面。 不知道對你有沒有幫助!!

如何將jsp頁面轉換成靜態頁面

將jsp頁面轉換成靜態頁面的步驟:

1、在jsp頁面中加入servlet.代碼如下:

 

public class ToHtml extends HttpServlet {

     public void service(HttpServletRequest request, HttpServletResponse response)

       throws ServletException, IOException {

      String url = “”;

      String name = “”;

      ServletContext sc = getServletContext();

      String file_name = request.getParameter(“file_name”);// 你要訪問的jsp文件名,如index,不包括擴展名

      // 則你訪問這個servlet時加參數.如

      url = “/” + file_name + “.jsf”;// 你要生成的頁面的文件名。我的擴展名為jsf .

      name = ConfConstants.CONTEXT_PATH+”\\”+ file_name + “.htm”;// 這是生成的html文件名,如index.htm.文件名字與源文件名相同。擴展名為htm

    //ConfConstants.CONTEXT_PATH為你的應用的上下文路徑。

      RequestDispatcher rd = sc.getRequestDispatcher(url);

      final ByteArrayOutputStream ōs = new ByteArrayOutputStream();

      final ServletOutputStream stream = new ServletOutputStream() {

       public void write(byte[] data, int offset, int length) {

        os.write(data, offset, length);

       }

       public void write(int b) throws IOException {

        os.write(b);

       }

      };

      final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));

      HttpServletResponse rep = new HttpServletResponseWrapper(response) {

       public ServletOutputStream getOutputStream() {

        return stream;

       }

       public PrintWriter getWriter() {

        return pw;

       }

      };

      rd.include(request, rep);

      pw.flush();

      FileOutputStream fos = new FileOutputStream(name); // 把jsp輸出的內容寫到xxx.htm

      os.writeTo(fos);

      fos.close();

      PrintWriter ōut = response.getWriter();

      out

        .print(“p align=centerfont size=3 color=red頁面已經成功生成!singlebr? 233/font/p”);

     }

    }

2、配置web.xml

servlet

      servlet-nametoHtml/servlet-name

      servlet-classmj.util.html.ToHtml/servlet-class//你的servlet的類。

     /servlet

     servlet-mapping

      servlet-nametoHtml/servlet-name

      url-pattern/toHtml/url-pattern

     /servlet-mapping

3、運行servlet。如: 

在test項目的根目錄下,生成了一個index.htm的靜態文件。 

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/185427.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 12:18
下一篇 2024-11-26 12:18

相關推薦

  • Python計算機語言的特性與應用

    Python,是一種高層次、解釋型的、面向對象的計算機編程語言。 一、簡介 Python編程語言的初衷是:代碼簡潔易讀、可拓展性強、適用範圍廣。其應用領域包括Web開發、數據科學、…

    編程 2025-04-29
  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網路介面 在配置靜態ip之前,我們首先需要查看系統中的網路介面,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python中通過對象不能調用類方法和靜態方法的解析

    當我們在使用Python編寫程序時,可能會遇到通過對象調用類方法和靜態方法失敗的問題,那麼這是為什麼呢?接下來,我們將從多個方面對這個問題進行詳細解析。 一、類方法和靜態方法的定義…

    編程 2025-04-27
  • Apache偽靜態配置Java

    本文將會從多個角度闡述如何在Apache中正確偽裝Java應用程序,實現URL的靜態化,提高網站的SEO優化和性能。以下是相關的配置和代碼實例。 一、RewriteEngine的配…

    編程 2025-04-27
  • Python列表的特性

    Python列表是一種能夠保存任意對象的動態數組結構。Python列表具有以下特性: 一、可變性 Python列表是可變的,可以動態改變其元素。可以通過索引來訪問和修改列表中的元素…

    編程 2025-04-27
  • Java8特性詳解

    Java8是Java語言的一個重要版本。有很多新的特性被加入,比如Lambda表達式、方法引用、Stream API等。這些特性提供了更為一致、緊湊的代碼風格和更好的可讀性,使得J…

    編程 2025-04-25
  • 為什麼web項目的歡迎頁必須是jsp?

    在web項目中,歡迎頁通常是用戶首次訪問的頁面。而對於這個頁面的選擇,我們通常會選擇jsp作為歡迎頁,其原因是什麼呢? 一、JSP的優勢 JSP與HTML和CSS的結合,可以實現動…

    編程 2025-04-25
  • Java 14:新的特性和改進

    一、Records Java 14中引入了Records,這是一種新的類聲明,用於聲明輕量、不可變值類。Records類似於傳統Java類,但通過簡化聲明,目的是更容易地定義數據聚…

    編程 2025-04-25
  • 刪除靜態路由

    一、靜態路由的定義 路由(Routing)是指在一組互聯的計算機網路中,根據一定的演算法規則實現兩個節點之間選擇合適的路徑並且傳送數據包的過程。簡單來說,路由就是在網路中選擇一條可達…

    編程 2025-04-25
  • 靜態文件伺服器

    一、文件伺服器簡介 靜態文件伺服器是一個基於HTTP協議的伺服器應用程序,它旨在提供對本地或遠程文件系統中的靜態內容(包括HTML、CSS、圖像、視頻和JavaScript文件等)…

    編程 2025-04-24

發表回復

登錄後才能評論