java - 显示消息和后退按钮的 session

标签 java jsp servlets web

我有 3 个 jsp :-

  1. a.jsp
  2. b.jsp
  3. 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/

相关文章:

java - sitebricks 中如何实现 jsp 中的注释支持?

java - 通过LogManger.getLogger()获取自定义logger

java - 为什么我的 BorderLayout 不能与 JPanel 一起使用?

java - 无法立即在 Facebook 中看到发布的消息

jsp - 如何用双击图标启动Tomcat?

java - 为什么jsp在将Jsp转换为Servlet时创建PageContext和JspWriter的两个引用

java.lang.NoClassDefFoundError : org/wildfly/swarm/bootstrap/util/MavenArtifactDescriptor

java - 从用户注册中检查数据库中的唯一值约束

java - 对象作为HashMap中的键值并在jsp中使用

java - Servlet 接收基于 XML 的请求,然后创建一个新的 XML 文件作为响应发回