小编Gab*_*ela的帖子

管理多个选项卡的webapp会话数据/控制器流

我有一个Java Web应用程序,它在会话中存储一些数据.当用户与应用程序交互时,会话中的数据发生变化(例如,流程由控制器管理,每个控制器具有多个表单页面,在每个表单页面上,一些数据在会话中更新,流程转到下一个表单页面).

问题是一些用户向应用程序打开了多个选项卡,每个选项卡在流程中都有不同的步骤.此时会话中的数据混乱,因为选项卡共享同一会话(应用程序使用cookie托管会话).

告诉用户使用不同的浏览器以避免共享相同的会话ID(例如,一个Firefox窗口和一个IE窗口)不是一种选择,因为在某些时候肯定会有人忘记这样做而是使用制表符,从而弄乱他们的数据.

添加一些检测从另一个选项卡请求另一个流并向用户显示不允许这样的消息的验证不是一个选项,因为它对用户很生气,我们不希望这样做吗?:d

事实是,使用另一个选项卡对用户很有用,因为它们在使用应用程序时更有效,所以我保留了这个选项.但现在的问题是如何最好地管理更多标签的一个会话数据?

我想到的是让控制器在启动流时生成一个令牌,并将此令牌传递给每个表单页面,然后将其发送回标识自身.如果另一个选项卡在存在正在进行的流时请求相同的控制器操作,则生成另一个标记并将其传递.

基本上,我希望每个流都有一个令牌,在会话中我不仅会保留一组数据,而是为每个令牌提供一组数据,然后根据令牌匹配请求.

现在的问题是这种方法需要对应用程序进行大量的重写,我想知道是否存在管理这种情况的最佳实践,或者是否有人建议其他方法.我对这些想法持开放态度.

你遇到过这种情况吗?你是怎么处理的呢?

java session jsp servlets

23
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

jsp ×1

servlets ×1

session ×1