2015-04-27 17 views
1

我遇到了這個<s:token />標籤,它被包含在一個JSP頁面中的<s:form></s:form>標籤中。 其他一些StackOverflow鏈接討論了它在維護會話和防止雙重提交表單中的用法。這個標籤的用途究竟是什麼?如果它阻止了表單的雙重提交,那麼當我提交表單時會發生什麼,以及它如何阻止它?Struts2中令牌標記的用法是什麼?它如何工作?

+1

[Token Interceptor和Token Session Interceptor之間的區別?](http://stackoverflow.com/q/19525888/1700321) –

+0

@AleksandrM這個問題/答案與Struts2標記無關,只是一個這段代碼告訴差異,但並未展示它的工作原理。 –

+0

你想知道什麼? –

回答

3

在這裏,我回答了我自己的問題,因爲這可能有助於未來的人,但我會嘗試挖掘更多這一點,並得到它更新。

的純英文解釋,我發現:

「的標記標籤產生一個獨特的標記,用來找出是否一個表格已經雙提交 當形式呈現,一個隱藏的變量。放置爲標記值,​​比如說標記是「ABC」,當這個表單被提交時,Struts Filter會檢查存儲在會話中的令牌,如果匹配,它會從現在,如果表單被意外重新提交(通過刷新或通過點擊瀏覽器後退按鈕),表單將以「ABC」作爲標記重新提交,在這種情況下,篩選器將檢查標記與存儲在標記中的標記s再次激情。但由於令牌「ABC」已經從會話中刪除,它不會匹配和Struts的過濾器將拒絕該請求。」(Source

但是這兩個StackOverflow的答案,更多的知識補充。

+0

注意:* Struts Filter *應該由**攔截器**替換。 –

+0

我不知道:P接受! –

0

<s:token/>的用途標籤:

停止雙重提交表格。

令牌標記用於幫助「雙擊」提交 問題。如果您使用TokenInterceptorTokenSessionInterceptor,則需要此選項。 s:token標籤只是放置一個包含唯一標記的隱藏的 元素。

(來源:https://struts.apache.org/docs/token.html

什麼是在Struts2使用令牌標籤?

請參閱example

它是如何工作的?

它的工作原理主要是利用一類,一種輔助類和XML配置文件: Token.javaTokenHelper.javastruts-token.xml

相關問題