2012-05-05 12 views
0

我已经创建了一个Web应用程序,并将其部署在tomcat7中。这个应用程序的工作原理如下: 用户通过正确的身份验证登录,然后在用户选择答案并提交测试的地方显示测试页面(html)。在提交另一个servlet之后,将向用户显示分数。如何禁用servlet中的后退按钮?

如果用户返回(通过浏览器后退按钮)并再次提交测试,得分后会出现问题,分数正在改变。我该怎么做以防止这种情况发生?

回答

1

通常的技巧(某些框架为您提供)是在生成表单时生成令牌,将其存储在用户的会话中以及表单中的隐藏字段中。表单提交后,您会将您收到的令牌与会话中的令牌进行比较。如果它们匹配,则从会话中删除令牌并继续进行表单提交。

如果用户返回并重新提交表单,会话中将不再有任何标记,并且您将显示错误消息而不是处理表单提交。

另一种方法是对表单处理进行编码,以便提交是幂等的。例如,不要盲目提高分数,而是可以检查问题是否已经被用户回答,并忽略第二个答案。