Java 网页表单提交(数量有限)

Java 网页表单提交(数量有限),java,forms,jsp,jakarta-ee,webpage,Java,Forms,Jsp,Jakarta Ee,Webpage,在JAVA/JEE访谈中,我被问及如何实现以下场景的业务逻辑 要构建一个通过表单(注册表单)获取用户数据的网页,总共11个提交(用户)将构成一个团队,一旦总共有4个这样的团队,该页面将不允许再提交 我的回答是“我们需要一个action类,它接收通过表单提交的数据,并首先检查DB(计数器)中的条目,每个条目递增。如果计数器等于11,则该类将检查计数器-另一个计数器递增以显示团队(编号)在db中。一旦db中的团队编号达到4,action类应转发到另一个页面并阻止进一步提交“ 我的逻辑正确吗?或者有更

在JAVA/JEE访谈中,我被问及如何实现以下场景的业务逻辑

要构建一个通过表单(注册表单)获取用户数据的网页,总共11个提交(用户)将构成一个团队,一旦总共有4个这样的团队,该页面将不允许再提交

我的回答是“我们需要一个action类,它接收通过表单提交的数据,并首先检查DB(计数器)中的条目,每个条目递增。如果计数器等于11,则该类将检查计数器-另一个计数器递增以显示团队(编号)在db中。一旦db中的团队编号达到4,action类应转发到另一个页面并阻止进一步提交“


我的逻辑正确吗?或者有更好的选择吗?

您可以将每次提交放入队列。某些进程可以将项目从队列中拉出来,并将它们放入数据库中。到达44后,您将停止处理队列中的项目,并设置一些标志,指示所有团队都已满。

我想说的是,只有一个问题:如果您有43个提交,对于44号,我可以启动10个线程,模拟执行相同的请求,服务器端将有10个线程参与,这将在其中一些通过少于4个团队的验证并存储超过44个用户后触发竞赛条件。那么正确的方法应该是什么呢?我不确定这是否有具体的答案。好的,我会在预插入时在用户表中使用触发器来检查当前插入的行数。如果有4个以上的团队,则引发一个异常,该异常将由应用程序处理。另一种选择是在web应用程序中同步搜索和添加数据的代码,因此不涉及触发器。但请注意,同步块会使应用程序变慢。