假如有一個註冊流程,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>
[火星人 ] 如何讓瀏覽器後退顯示頁面已經過期已經有1038次圍觀