Web应用程序,处理状态的最佳方式

时间:2011-02-18 04:09:37

标签: http session cookies session-state

我有一些crud页面,我必须存储一些状态信息,如当前页面,每页记录,当前顺序,过滤条件,有时还有更多信息......

我想使用类似于休息风格的友好网址,例如http://microformats.org/wiki/rest/urls(用于浏览的GET,要添加的POST,要编辑的PUT,要删除的删除)

Cookie的问题在于,如果我打开多个标签,所有标签都会共享相同的Cookie,它与会话相同,因为会话ID存储在Cookie中

如果我尝试将这些参数保留在URL中(类似于GET / clients?page = 1& len = 10& sort = name& filter = smith),一旦我发出POST,我就会丢失这些值

另一个解决方案是将状态存储在隐藏的输入上,并始终发布带有这些隐藏输入的帖子,但在这种情况下我不能使用GET进行查询......

那么,你如何处理网络演示状态???

-

加入:

更具体

我有一个crud页面,用户可以过滤,更改页面,页面长度和 排序顺序..

发布更新或插入后,如何检索以前的页面, 页面长度,排序顺序,条件过滤器(表示逻辑 考虑到如果用户打开另一个选项卡,则考虑到... 两个标签都可以使用相同的Cookie ...

我能想到的唯一解决方案是使用隐藏字段......

3 个答案:

答案 0 :(得分:1)

我认为你必须完成你的两个建议。

每当您生成页面服务器端时,请确保页面上的任何表单都将您的参数作为隐藏值,并且任何链接都在URL中包含参数...

答案 1 :(得分:1)

如果您不想要cookie和会话,您唯一的选择是将它们作为查询字符串参数(在GET上)和隐藏字段(在表单POST上)传递。

答案 2 :(得分:1)

澄清

为不同的页面存储不同的键值对有什么问题?例如,对于页面/product/4,您可以存储密钥product-4-orderproduct-4-filter等。

或者我错过了你的意图?

修改
另一种方法是不刷新当前页面 并使用AJAX进行所有操作。但是,会话之间不会保留设置。