1

在 Ajax Web 应用程序中,是否有标准的或公认的从页面刷新中恢复的方法?

我现在的兴趣主要在于具有 Java(JSP/Servlet)后端的 Web 应用程序。我的页面最初是从 JSP 呈现的,然后用户使用 javascript 事件通过界面进行。

是否有涵盖此的设计模式,我假设刷新按钮是 Web 开发人员需要经常担心的问题,因此应该有一种方法可以从中恢复,同时保持状态。

4

3 回答 3

4

有很多方法可以处理这个问题。

  • 锚点- 这是 Gmail 在添加时所做的事情,#inbox/123这意味着它应该显示123带有标签收件箱的电子邮件 ID。这不是很有表现力,对简单的状态很有用。但是,它确实为用户提供了为页面添加书签和使用浏览器历史记录导航的能力。
  • Cookies - 这样做的好处是可以完全在客户端进行管理。您可以通过 Javascript 设置 cookie 并通过 Javascript 恢复它们。它很便宜,不需要回邮。状态信息通常不需要保存在服务器上,因为通常状态是临时的。
  • 会话- 这需要您在客户端更新页面时通过 AJAX 将状态信息发回服务器。如果客户端刷新页面,新页面会将更改后的状态合并到新呈现的页面中。这在性能方面是相当昂贵的,而且设计也很复杂,但可能对某些应用有用。
于 2009-06-02T13:49:17.527 回答
2

我的建议是为服务器端的每个用户保留一个状态机,通过 AJAX 调用更改状态。这样在刷新时,您就已经知道用户处于哪个状态位置,从而可以从中恢复。

如果您在编码时不小心,这可能会给您带来可伸缩性问题。

另一种解决方案可能是将状态变量存储在 cookie 中(假设用户有活动的 cookie)。在页面加载时,状态变量将提交给您的 Web 应用程序,让您恢复。

于 2009-06-02T13:42:00.240 回答
1

这是我们在项目中使用的一种解决方案:

  1. 您在用户访问页面时为页面分配一个序列号/随机 guid。您可以将其放入 url 的 get 部分(例如 yourpage.jsp?pid=1337 其中 1337 是页面查看序列号)

  2. 当您处理 AJAX 请求时,您在会话中的服务器端维护页面状态的“镜像”,或者您可以在 JSP 中使用的任何机制来存储状态。

  3. 当用户请求页面时,您检查给定的序列号是否已经存在,如果存在,则表示这是一次刷新,因此您使用会话中的镜像数据呈现页面。

于 2009-06-02T13:43:57.990 回答