【发布时间】:2009-08-05 07:35:03
【问题描述】:
当我单击链接时,我会调用 servlet。 当我多次单击该链接时,servlet 会引发错误(错误详细信息并不重要) 尽管此修复程序还有其他解决方法(例如单击后禁用链接等) 我很好奇有没有办法通过请求/响应对象来控制这个。
【问题讨论】:
-
我认为错误详细信息对于查看您要修复的内容很重要。您可以在会话中存储某种状态。
当我单击链接时,我会调用 servlet。 当我多次单击该链接时,servlet 会引发错误(错误详细信息并不重要) 尽管此修复程序还有其他解决方法(例如单击后禁用链接等) 我很好奇有没有办法通过请求/响应对象来控制这个。
【问题讨论】:
错误是相关的,对 servlet 的多次调用表现不同然后一个意味着您有线程安全问题,可能是由于您实现 servlet 的方式
【讨论】:
servlet 错误的细节可能很有趣。 servlet API 通常不应该抛出错误,我猜这是某种应用程序错误。
我尝试应用的一般原则是:
1)。我们构建 UI 以防止用户无意中两次提交相同的请求(例如,借记我的帐户 100 英镑,真的不想发送两个这样的请求。这是一些 nift javascript 可以提供帮助的地方。
2)。我们构建应用程序来防御无意的重复请求,例如通过在请求中包含某种标识符来允许发现重复。
我们不假设 UI 是完美的,我们的业务应用层对防止双重操作负有最终责任。
【讨论】:
这个错误真的非常相关。
您可能会遇到线程安全问题,但您也可能遇到“竞争条件”,即进程的结果取决于执行顺序,其中之一可能会给您带来错误。
【讨论】:
进入 servlet 时在 servlet 会话范围内设置一个标志,并在离开时重置它。如果进入时设置了flag,则默默忽略。
您需要在您的 servlet 中进行错误处理,以便 ServletException 不会留下标记集。
【讨论】: