【发布时间】:2014-04-10 19:26:22
【问题描述】:
我在一个 JAVA/JEE 面试问题中被问到如何实现以下场景的业务逻辑
要构建一个通过表单(注册表单)获取用户数据的网页,并且总共 11 个提交(用户)构成 1 个团队,并且一旦总共有 4 个这样的团队,该页面就不应该再允许了提交。
我的回答是“我们需要一个动作类,它接收通过表单提交的数据,并首先检查 DB(计数器)中的条目是否随每个条目递增。如果等于 11,该类将检查计数器 - 另一个计数器是递增以显示 db 中的团队(编号)。一旦 DB 中的团队编号达到 4,操作类应转发到另一个页面并防止进一步提交"
我的逻辑在这里是正确的还是有更好的选择?
【问题讨论】:
-
我想说只有一个问题:如果你有 43 个提交,对于数字 44,我可以触发 10 个模拟执行相同请求的线程,服务器端将有 10 个线程参与,这将在其中一些通过少于 4 个团队的验证并存储超过 44 个用户后触发竞争条件。
-
那么正确的方法应该是什么?
-
我不确定这是否有具体的答案。 AFAIK,我会在预插入时在用户表中使用触发器来检查当前插入的行数。如果超过 4 个团队,则引发异常,由应用程序处理。另一种选择是在 Web 应用程序中同步搜索和添加数据的代码,因此不涉及触发器。但请注意,同步块会使您的应用程序变慢。
标签: java forms jsp jakarta-ee webpage