Struts2中令牌标签的用途是什么?它是如何工作的?

时间:2015-04-27 07:50:12

标签: jsp struts2 token

我遇到了这个<s:token />标记,它被包含在JSP页面的<s:form></s:form>标记中。 其他一些StackOverflow链接讨论了它在维护会话和防止双重提交表单方面的用法。这个标签的用途究竟是什么?如果它阻止双重提交表单,那么当我提交表单时会发生什么?它如何阻止它?

2 个答案:

答案 0 :(得分:3)

我在这里回答我自己的问题,因为这可能会对未来的某些人有所帮助,不过我会尝试更多地了解这一点并将其更新。

我发现简单的英文解释:

  

&#34;令牌标记生成一个唯一的令牌,用于查明表单是否已经双重提交。   呈现表单时,隐藏变量将作为标记值放置。让我们说,例如,令牌是&#34; ABC&#34;。提交此表单时,Struts筛选器会根据会话中存储的令牌检查令牌。如果匹配,则从会话中删除令牌。现在,如果表单被意外重新提交(通过刷新或点击浏览器后退按钮),表单将重新提交&#34; ABC&#34;作为代币。在这种情况下,过滤器会再次针对存储在会话中的令牌检查令牌。但因为令牌&#34; ABC&#34;已从会话中删除,它将不匹配,Struts过滤器将拒绝该请求。&#34; (Source

然而,这两个StackOverflow答案为知识增添了更多。

答案 1 :(得分:0)

<s:token/>代码的目的:

  

停止提交表格。

     

令牌标签用于帮助&#34;双击&#34;服从   问题。如果您使用的是TokenInterceptor或者,则需要它   TokenSessionInterceptors:token标记只是隐藏了一个   包含唯一标记的元素。

(资料来源:https://struts.apache.org/docs/token.html

  

Struts2中令牌标记的用途是什么?

请参阅example

  

它如何运作?

它主要通过使用类,Helper类和配置xml文件来工作: Token.javaTokenHelper.javastruts-token.xml