當前位置:編程學習大全網 - 源碼下載 - jsp頁面轉換成HTML

jsp頁面轉換成HTML

摟主的問題是不是在用戶第壹次訪問壹個動態頁面的時候將該動態頁面保存為壹個靜態頁面,當有用戶再次訪問該動態頁面時只需要將保存的靜態頁面展示給用戶即可.

這樣可以減少服務器解釋jsp代碼的次數.

1、編寫壹個實現 Filter 接口的類,這個類命名為 CacheFilter.java

2、修改web.xml添加Cache Filter的配置參數,將jsp的過濾類指向 CacheFilter 類。

3、在 CacheFilter 類中獲取請求,如果請求為需要緩存頁面,首先先判斷是否被緩存過,如果沒有被緩存過便將請求的頁面保存為靜態頁面文件。最後從文件中讀取靜態頁面並寫入請求的響應裏。重復本次操作進行其它頁面的緩存。

原理如上所訴,很簡單

為了方便,在實現中使用了網上的 jspbook 包,對包中的程序進行了修改,具體實現步驟如下:

1、下載 jspbook 包,地址: /onjava/2003/11/19/examples/jspbook.zip

2、解壓縮 jspbook 包,修改 CacheFilter 類 和 CacheResponseWrapper 類。

CacheFilter 類

69行:name = name.substring(0,name.lastIndexOf("/")==-1?0:name.lastIndexOf("/"));

改為:String filesp = System.getProperty("file.separator");

name = name.substring(0, name.lastIndexOf(filesp) == -1 ? 0 : name.lastIndexOf(filesp));//修改 獲得系統文件夾符號(源程序作者應該是外國人沒有考慮中文符號)

75行:wrappedResponse.flushBuffer();// 增加 強制刷新

CacheResponseWrapper 類

35行:stream.flush();

改為: writer.flush();

3、建立動態web項目,建立com.jspbook包,將修改好的jspbook包中的類加入該包下面

4、將jspbook包中的jsp文件拷入web目錄下

5、修改web.xml文件,下面是我寫的項目的配置文件,請重點看帶 filter 的標簽

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns=" /xml/ns/j2ee" xmlns:xsi=" /xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd">

<display-name>

JSP2HTML</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<!-- The Cache Filter -->

<filter>

<!-- 設計過濾處理類,生成靜態頁面 -->

<filter-name>CacheFilter</filter-name>

<filter-class>com.jspbook.CacheFilter</filter-class>

<!-- 不需要緩存的URL -->

<init-param>

<param-name>/TimeMonger.jsp</param-name>

<param-value>nocache</param-value>

</init-param>

<init-param>

<param-name>/TestCache.jsp</param-name>

<param-value>nocache</param-value>

</init-param>

<!-- 緩存超時時間, 單位為秒 -->

<init-param>

<param-name>cacheTimeout</param-name>

<param-value>600</param-value>

</init-param> <!-- 是否根據瀏覽器不同的地區設置進行緩存(生成的緩存文件為 test.jspid=1_zh_CN 的格式) -->

<init-param>

<param-name>locale-sensitive</param-name>

<param-value>true</param-value>

</init-param> </filter> <!-- 設置需要緩存的 URL, 可以使用通配符, 如 /*.jsp, 或者加入多個映射地址 -->

<!--

<filter-mapping>

<filter-name>CacheFilter</filter-name>

<url-pattern>/news.jsp</url-pattern>

</filter-mapping>

-->

<filter-mapping>

<filter-name>CacheFilter</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

</web-app>6、配置web環境,運行web應用,妳會發現由於 TestCache.jsp 和 TimeMonger.jsp 被配置成為 nocache 所以每次都回被重新加載。

<init-param>

<param-name>/TimeMonger.jsp</param-name>

<param-value>nocache</param-value>

</init-param>

其它的jsp頁面會被保存成為靜態文件,然後將靜態文件返回給請求的響應。

<filter-mapping>

<filter-name>CacheFilter</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

具體的緩存保存路徑,請查找 CacheFilter 類 中53行的 String temp = tempDir.getAbsolutePath();

以上代碼已經執行通過,如有問題請留言

  • 上一篇:求寫個比較簡單的php登陸頁面代碼
  • 下一篇:什麽是redis分布式鎖
  • copyright 2024編程學習大全網