我有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