天天看點

防止表單重複送出使用session解決Struts表單送出解決方案

使用session解決

在session中存儲驗證 當驗證碼驗證過後 将session中的驗證碼删除

Struts表單送出解決方案

使用重定向

在action配置中 result type設定為redirect

使用<s:token/>生成令牌配合token攔截器

這種方式差生錯誤後才會告知使用者 一般不用

<action name="register" class="org.ccit.com.web.action.UserAction" >
    <interceptor-ref name="defaultStack"></interceptor-ref>
<!--            token不屬于defaultStack 需要額外添加-->
    <interceptor-ref name="token"></interceptor-ref>
<!--            配置表單重複送出時的結果視圖-->
    <result name="invalid.token">/resubmit.jsp</result>
    <result name="input">/register.jsp</result>
<!--            <result name="success">/login.jsp</result>-->
</action>
           
<s:form  action="register"  namespace="/user" >
    <s:token></s:token>
    <s:textfield name="username" label="使用者名" requiredLabel="true" requiredPosition="left"></s:textfield><br>
    <s:password name="password" label="密碼" requiredLabel="true" showPassword="true"></s:password><br>
    <s:submit value="注冊" ></s:submit>
</s:form>
           

使用<s:token/>生成令牌配合tokensession攔截器

tokensession攔截器會使表單隻被處理一次 重複送出不會被處理

<action name="register" class="org.ccit.com.web.action.UserAction" >
    <interceptor-ref name="defaultStack"></interceptor-ref>
<!--            token不屬于defaultStack 需要額外添加-->
    <interceptor-ref name="tokenSession"></interceptor-ref>
    <result name="input">/register.jsp</result>
<!--            <result name="success">/login.jsp</result>-->
</action>
           
<s:form  action="register"  namespace="/user" >
    <s:token></s:token>
    <s:textfield name="username" label="使用者名" requiredLabel="true" requiredPosition="left"></s:textfield><br>
    <s:password name="password" label="密碼" requiredLabel="true" showPassword="true"></s:password><br>
    <s:submit value="注冊" ></s:submit>
</s:form>
           

繼續閱讀