我有3分JSP的: -會顯示消息和後退按鈕
- a.jsp
- b.jsp
- c.jsp
從a.jsp我要去以b.jsp來顯示一些結果。當用戶更新其中一條記錄時,我會調用實際更新它的c.jsp。所以更新後,它轉發到a.jsp與消息說「成功更新」。我在會話中設置此消息。在顯示此消息後顯示在a.jsp中。我使會話無效。
問題是,當我按下瀏覽器後退按鈕它仍然顯示消息。 我該如何解決這個問題。 請幫幫我。 感謝
我有3分JSP的: -會顯示消息和後退按鈕
從a.jsp我要去以b.jsp來顯示一些結果。當用戶更新其中一條記錄時,我會調用實際更新它的c.jsp。所以更新後,它轉發到a.jsp與消息說「成功更新」。我在會話中設置此消息。在顯示此消息後顯示在a.jsp中。我使會話無效。
問題是,當我按下瀏覽器後退按鈕它仍然顯示消息。 我該如何解決這個問題。 請幫幫我。 感謝
我建議幾個步驟做到這一點...
當您單擊後退按鈕瀏覽器將會從緩存中的網頁...所以設置JSP頁面Expires
日至以前的一些日期/時間從服務器(原始)而不是緩存中獲取它。這可以通過編寫自定義標籤來完成,並且在HttpServletRequest
對象上設置Expires
標頭,並將該標籤添加到JSP頁面就足夠了。
要在無效會話時使頁面無效並重定向到a.jsp,請將Filter
寫入該作業。
標籤可以這樣寫
public class ExpiryTag extends SimpleTagSupport{
@Override
public void doTag() throws JspException, IOException {
PageContext pageContext = (PageContext) getJspContext();
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DAY_OF_MONTH, -1);
HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
response.addHeader("Expires", instance.getTime().toString());
}
}
地圖標記的TLD文件中像這樣
<tag>
<name>expired</name>
<tag-class>com.analysis.mvc.tags.ExpiryTag</tag-class>
<body-content>empty</body-content>
</tag>
然後用標籤在JSP中
<prefix:expired/>
對於會話處理您可以通過this進行基本瞭解。
你能給我推薦一些示例代碼或鏈接嗎?謝謝 – 2012-01-07 13:31:53
如果a.jsp,b.jsp和c.jsp是一個單獨的進程,請嘗試將它們放在單個頁面上(比如說abc.jsp)。現在使用一些屬性顯示a.jsp/b.jsp/c.jsp的內容,類似於嚮導。
你能分享一些源代碼嗎?不過,我懷疑你是把java代碼放在一個反模式的jsp中。 – 2012-01-07 13:02:08
也許[這裏] [1]將有助於... [1]:http://stackoverflow.com/questions/8785682/preventing-user-to-got-back-after-logout-in -jsf – 2012-01-11 08:07:57