重復(fù)提交的處理
xwork.xml 的配置:
這個(gè)攔截器可以保證一個(gè)令牌對(duì)應(yīng)一個(gè)請(qǐng)求。確保后退按鈕和兩次提交不會(huì)產(chǎn)生不希望的效果。 例如你可以使用這個(gè)來(lái)防止粗心的用戶在在線商店點(diǎn)了兩下"結(jié)帳"按鈕。這個(gè)攔截器使用了非常簡(jiǎn)單的機(jī)制來(lái)處理非法令牌:返回一個(gè)invliad.token的結(jié)果,這樣你就可以在action配置中做映射了。一個(gè)復(fù)雜一些的實(shí)現(xiàn)是TokenSessionStoreInterceptor, 可以在發(fā)現(xiàn)非法令牌時(shí)提供更好的處理邏輯。
注意: 為了設(shè)置表單的令牌,你必須使用token標(biāo)簽。 這個(gè)標(biāo)簽放在表單中,并且這個(gè)表單是提交到受這個(gè)攔截器保護(hù)的action:任何不提供令牌(使用token標(biāo)簽產(chǎn)生的)的請(qǐng)求將被處理為非法請(qǐng)求
國(guó)際化注意事項(xiàng):這個(gè)攔截器用下面的鍵作為錯(cuò)誤信息。
注意: 因?yàn)檫@個(gè)攔截器是擴(kuò)展于MethodFilterInterceptor, 所以可以決定在action中的哪些方法上應(yīng)用它。
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="token"/>
<interceptor-ref name="basicStack"/>
<result name="success">good_result.ftl</result>
</action>
<-- 在這個(gè)例子中,action的myMethod方法不會(huì)做令牌檢查 -->
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="token">
<param name="excludeMethods">myMethod</param>
</interceptor-ref name="token"/>
<interceptor-ref name="basicStack"/>
<result name="success">good_result.ftl</result>
</action>
表單的配置 :
<ww:token />
防止多次提交表單.
使用token標(biāo)簽?zāi)軒椭鉀Q多次提交表單的問(wèn)題.此標(biāo)簽需要你啟用TokenInterceptor 或者TokenSessionInterceptor攔截器.
ww:token標(biāo)簽只不過(guò)放置了一個(gè)隱藏的表單元素,它包含一個(gè)唯一的令牌.
例子:
<form name="demoForm" action="someAction.action" method="Post">
<ww:token />
</form>
posted on 2006-07-25 12:11 wml 閱讀(831) 評(píng)論(0) 編輯 收藏 所屬分類: WebWork