【问题标题】:session to show message and back button会话以显示消息和返回按钮
【发布时间】:2012-01-07 12:49:42
【问题描述】:

我有 3 个 jsp :-

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

我将从 a.jsp 转到 b.jsp 以显示一些结果。当用户更新其中一条记录时,我调用 c.jsp 来实际更新它。所以在更新后它转发到 a.jsp 并带有一条消息“成功更新”。我在会话中设置了这个消息。并在 a.jsp 中显示此消息后。我使会话无效。

问题是,当我按下浏览器后退按钮时,它仍然显示消息。 我该如何解决这个问题。 请帮我。 谢谢

【问题讨论】:

标签: java jsp servlets web


【解决方案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进行基本了解。

【讨论】:

    【解决方案2】:

    如果 a.jsp、b.jsp 和 c.jsp 是单个进程,请尝试将它们放在单个页面上(例如 abc.jsp)。现在使用一些属性显示 a.jsp/b.jsp/c.jsp 的内容,类似于向导。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 2014-08-17
      • 2012-05-28
      • 2018-03-25
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多