有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java处理多个用户在web应用程序中更新同一表单

假设用户A打开了一个包含填充数据的表单

当用户A修改表单数据时,用户B打开相同的表单,并为用户A填充数据

然后,当用户B对数据进行修改时,用户A点击提交更新记录的表单

因此,现在当用户B完成更新表单并单击提交按钮时,会显示一条警告消息,表明在他对数据进行修改时,该记录已被修改,以便他可以再次重新加载表单

我想这是最好的解决方案(警告信息)在用户的角度为这种情况下,对吗?那么如何在后端实现这一点呢


共 (3) 个答案

  1. # 1 楼答案

    这可能是最好的解决方案,但肯定不是唯一的

    当用户输入数据时(无需点击提交),可以实时更新表单中的数据。这样,看到同一文档的其他用户可以看到其他人在做什么,有点像谷歌文档

    有了WebSocket,实现起来就不那么难了Here这是一个主要用于客户端脚本编写的教程,还有一些指向一些后端模块的链接。如果这些都不能满足你的后端需求,我相信如果你在谷歌上搜索的话,一定会有一个模块和一些你喜欢的语言的示例代码

  2. # 2 楼答案

    如果您使用的是JPA/Hibernate,您可以看到脏检查标志是否为true

  3. # 3 楼答案

    我建议您在database中维护version文档(表单数据)。因此,在从数据库获取信息时,您可以读取版本值,在提交时只需验证并增加它

    因此,在你的情况下,下面将发生

    1.User A read form data (version 1)

    2.User B read from data (version 1)

    3.User A submit the data(now match the version with value in DB,it is still 1, so just increment 1,now it's value is 2 in DB).

    4.Now when User B submit the form,while matching the value,will find mismatch (1(step2) != 2(current value in DB)).

    5.From this point,you can raise some error message/warning to front end.

    这是一种乐观的锁定

    见:-Optimistic Concurrency Control