我遇到了这个<s:token />
标记,它被包含在JSP页面的<s:form></s:form>
标记中。
其他一些StackOverflow链接讨论了它在维护会话和防止双重提交表单方面的用法。这个标签的用途究竟是什么?如果它阻止双重提交表单,那么当我提交表单时会发生什么?它如何阻止它?
答案 0 :(得分:3)
我在这里回答我自己的问题,因为这可能会对未来的某些人有所帮助,不过我会尝试更多地了解这一点并将其更新。
我发现简单的英文解释:
&#34;令牌标记生成一个唯一的令牌,用于查明表单是否已经双重提交。 呈现表单时,隐藏变量将作为标记值放置。让我们说,例如,令牌是&#34; ABC&#34;。提交此表单时,Struts筛选器会根据会话中存储的令牌检查令牌。如果匹配,则从会话中删除令牌。现在,如果表单被意外重新提交(通过刷新或点击浏览器后退按钮),表单将重新提交&#34; ABC&#34;作为代币。在这种情况下,过滤器会再次针对存储在会话中的令牌检查令牌。但因为令牌&#34; ABC&#34;已从会话中删除,它将不匹配,Struts过滤器将拒绝该请求。&#34; (Source)
然而,这两个StackOverflow答案为知识增添了更多。
答案 1 :(得分:0)
<s:token/>
代码的目的:
停止提交表格。
令牌标签用于帮助&#34;双击&#34;服从 问题。如果您使用的是
TokenInterceptor
或者,则需要它TokenSessionInterceptor
。s:token
标记只是隐藏了一个 包含唯一标记的元素。
(资料来源:https://struts.apache.org/docs/token.html)
Struts2中令牌标记的用途是什么?
请参阅example。
它如何运作?
它主要通过使用类,Helper类和配置xml文件来工作: Token.java,TokenHelper.java,struts-token.xml。