2012-01-07 121 views
0

我有3分JSP的: -會顯示消息和後退按鈕

  1. a.jsp
  2. b.jsp
  3. c.jsp

從a.jsp我要去以b.jsp來顯示一些結果。當用戶更新其中一條記錄時,我會調用實際更新它的c.jsp。所以更新後,它轉發到a.jsp與消息說「成功更新」。我在會話中設置此消息。在顯示此消息後顯示在a.jsp中。我使會話無效。

問題是,當我按下瀏覽器後退按鈕它仍然顯示消息。 我該如何解決這個問題。 請幫幫我。 感謝

+0

你能分享一些源代碼嗎?不過,我懷疑你是把java代碼放在一個反模式的jsp中。 – 2012-01-07 13:02:08

+0

也許[這裏] [1]將有助於... [1]:http://stackoverflow.com/questions/8785682/preventing-user-to-got-back-after-logout-in -jsf – 2012-01-11 08:07:57

回答

1

我建議幾個步驟做到這一點...

當您單擊後退按鈕瀏覽器將會從緩存中的網頁...所以設置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進行基本瞭解。

+0

你能給我推薦一些示例代碼或鏈接嗎?謝謝 – 2012-01-07 13:31:53

0

如果a.jsp,b.jsp和c.jsp是一個單獨的進程,請嘗試將它們放在單個頁面上(比如說abc.jsp)。現在使用一些屬性顯示a.jsp/b.jsp/c.jsp的內容,類似於嚮導。