J2EE 開發中首頁的選擇: index.htm 還是 index.jsp

來源:互聯網
上載者:User

J2EE 開發中首頁的選擇: index.htm 還是 index.jsp

J2EE 開發中,首頁通常可以為 index.htm, index.html, index.jsp, default.htm,default.html,default.jsp 。你是否知道應該用哪一個呢?

以前我以為是無所謂的,都可以。所以我 index.htm , 靜態 HTML 頁面,裡面放一個跳轉,
<meta http-equiv="refresh" content="0;URL=xxx">
轉到一個動態網頁面,比如 http://www.test.com/mysystem/show_home

最近的測試發現,這種辦法是有問題的。主要是這個頁面需要通過 filter 判斷是否已經登入,然後跳轉到“已登入首頁”、“未登入首頁”。這要求此頁面不能被瀏覽器緩衝 http://www.test.com/mysystem/。

在 Tomcat 下,使用 index.htm, 並用 filter 強制要求瀏覽器不快取頁面面,會導致 Tomcat 產生 HTTP response header 如下:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Expires: -1
Cache-Control: no-cache,no-store,private, max-age=0,s-maxage=0, must-revalidate
Pragma: no-cache
Last-Modified: Fri, 15 Oct 2010 01:31:59 GMT
Accept-Ranges: bytes
ETag: W/"680-1287106319011"
Content-Type: text/html
Content-Length: 680
Date: Mon, 08 Nov 2010 07:53:40 GMT

其中的 ETag 為 Tomcat 自動增加,Last-Modified 中時間為 index.htm 檔案時間。
再次訪問 http://www.test.com/mysystem/, 用戶端Firefox 會產生 HTTP request Header:
If-Modified-Since 目前時間。
這時候, 伺服器端 Tomcat 對比 If-Modified-Since 與 index.htm 的檔案時間(Last-Modified), 會直接告訴用戶端"頁面未修改"。這時瀏覽器就從本機快取中取“未登入首頁”,造成“已登入首頁”、“未登入首頁”在用戶端混淆。

問題原因在於“已登入首頁”、“未登入首頁”使用同一個網址, Tomcat 處理 index.htm 時產生了多餘 ETag、錯誤的 Last-Modified。
解決辦法有多種,最簡單的辦法,就是把 index.htm 改為 index.jsp 。
更進一步,為避免問題,我建議把 J2EE 項目中,所有直接存取的 html 檔案,都改成尾碼名為 jsp 。

另外,似乎需要把
<meta http-equiv="refresh" content="0;URL=xxx">
改成
<script language="JavaScript" type="text/javascript">
document.location="xxx";
</script>

因為 meta refresh 在不同的瀏覽器中,被緩衝的方式不同。因此建議避免使用 meta refresh。

來自 http://www.cnblogs.com/jacklondon

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.