我有 3 个 jsp :-
- a.jsp
- b.jsp
- c.jsp
从 a.jsp 我将转到 b.jsp 以显示一些结果。当用户更新其中一条记录时,我调用 c.jsp 来实际更新它。因此,更新后,它会转发到 a.jsp,并显示一条消息“成功更新”。我在 session 中设置了此消息。在 a.jsp 中显示此消息后。我使 session 无效。
问题是,当我按浏览器后退按钮时,它仍然显示该消息。 我该如何解决这个问题。 请帮我。 谢谢
最佳答案
我建议采取几个步骤来做到这一点......
当您单击后退按钮时,浏览器将从缓存中获取页面...因此,将 JSP 页面 Expires
日期设置为前一天/时间,以从服务器(源)而不是缓存中获取它。这可以通过编写自定义标记并在 HttpServletRequest
对象上设置 Expires
header 并将该标记添加到 JSP 页面来完成。
要使页面无效并在没有有效 session 时重定向到 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/>
对于 session 处理,您可以通过 this以获得基本的理解。
关于java - 显示消息和后退按钮的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769807/