使用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>