如何讓瀏覽器後退顯示頁面已經過期

火星人 @ 2014-03-09 , reply:0


  假如有一個註冊流程,a.jsp:負責輸入信息、b.jsp:負責處理信息、c.jsp:處理完信息后的用戶跳轉的另外一個頁面.

  顯然用戶軌跡為:a.jsp->b.jsp->c.jsp

  我們的目標是:假設現在用戶已經在c.jsp,用戶通過點擊瀏覽器後退按鈕,那麼瀏覽器將顯示「頁面已經過期」.

  下面是三個頁面的源碼,具體每個頁面為什麼那麼設置,什麼都有說明,如果還不明白為什麼,那麼請自己調試一下就知道了.

  a.jsp:

  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

  <%

  //如果設置過期,他的下一個頁面後退的時候,就會重新請求伺服器,狀態碼200,提交方式:get

  //如果沒有設置過期,他的下一個頁面後退的時候,讀取緩存頁面和數據,狀態碼cache,提交方式:get

  response.addHeader("Pragma", "No-cache");

  response.addHeader("Cache-Control", "no-cache");

  response.setDateHeader("Expires",-10);

  %>

  <hi>註冊過期流程測試-步驟1</hi>

  <form action="/a.jsp" method="post">

  <input type="text" name="name"/>

  <input type="submit" value="註冊"/>

  </form>

  b.jsp:

  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

  <%

  //這個是被post的頁面,這個頁面由前一個頁面來決定怎麼顯示,

  //如果設置過期,他的下一個頁面後退將找不到頁面(因為不知道是什麼樣的數據來post給他),頁面會顯示已過期,狀態:ERROR_FILE_NOT_FOUND,提交方式:post

  //如果沒有設置過期,他的下一個頁面後退將找到老的頁面和老的數據,狀態:history cache,提交方式:post

  response.addHeader("Pragma", "No-cache");

  response.addHeader("Cache-Control", "no-cache");

  response.setDateHeader("Expires",-10);

  %>

  <%

  String name = request.getParameter("name");

  %>

  <hi>註冊過期流程測試-步驟2</hi>

  <input type="button" value="確認" onclick="window.location.href='/c.jsp'"/>

  c.jsp:

  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

  <hi>註冊過期流程測試-步驟2</hi>

  <a href='b.jsp'>返回</a> <br>




[火星人 via ] 如何讓瀏覽器後退顯示頁面已經過期已經有82次圍觀

http://www.coctec.com/docs/java/show-post-60714.html