2012-01-07 123 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的内容,类似于向导。