对于我的Web应用程序,我需要存储跨多个页面的表单输入,直到我最终处理/操作它们以产生一些结果(它主要格式化输入的数据并以某种布局呈现它)。我认为我有的选择是 -
继续将用户的输入发送到服务器,将其存储在某个数据库中,仅在那里进行最终操作,并显示结果。
当用户填写表单时,将输入存储在浏览器的存储中,最后使用此存储的数据来操作和显示结果。
我非常想使用第二种方法,也许可能的方法是使用cookie,但我担心我可能会达到cookie数据存储的上限。我也愿意理解第一种方法或任何第三种方法的优点。
感谢。
答案 0 :(得分:5)
使用webstorage(您可以在客户端存储大约5MB的文本或二进制数据)
Firefox演示:http://codebase.es/test/webstorage.html
这些网络浏览器支持DOM存储:
只需谷歌查看sessionStorage
和localStorage
个对象。
现代webkit浏览器也支持客户端sql。
编辑:
我不确定你想要做什么但是使用AJAX你可以将所有内容存储在javascript变量和服务器端数据库或会话中是一个不错的选择。
答案 1 :(得分:3)
达到cookie的存储限制可能表明您试图在客户端存储过多。将服务器端存储在会话之类的内容可能是谨慎的。然后,会话的密钥可以存储在cookie中。
另一种方法是不要让请求跨越多个页面,只是将数据存储在客户端,而不是cookie,而是存储在不同的表单字段和/或文本字段中(可以隐藏它们)。这种方法的优点是它没有像你一样达到cookie限制。它还使您的服务器端代码更容易/更清洁,因为它不必跟踪状态(如果跨越页面,您必须做的事情,因此首先是您达到cookie限制的原因)
答案 2 :(得分:1)
您可以使用小型Flash电影通过Flash的共享内存Api存储一些数据,或者查看Google Gears。
也许还要考虑,每当您的网站向服务器发出请求时,您存储在cookie中的每个字节都必须传输。
答案 3 :(得分:0)
通常,Cookie的最大大小为4k,因此您可以在其中存储相当多的数据。
小心验证所有生活cookie的信息 - 所有信息都驻留在客户端浏览器上,并且可以随时由网站用户轻松操纵。
您没有说明您使用的是哪个平台。 Spring Webflow完全可以实现您想要的表单处理: http://www.springsource.org/webflow
即使您不使用Java,也可以使用一些原则。
编辑:大/复杂持久性cookie的另一个缺点是,您必须确保您部署的任何新代码都向后兼容所有野外的cookie。
答案 4 :(得分:0)
我建议将数据存储在会话变量中,直到你到达最后一步而不是cookie。我认为这对您的数据更安全,因为用户无法直接访问数据,因此您可以随时进行验证。