struts2中使用token避免重复提交
<action name="register" class="org.sunxin.struts2.action.RegisterAction">
<!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面-->
<exception-mapping result="error" exception="java.lang.Exception"/>
<result name="input">/pages/register.jsp</result>
<result name="success">/pages/success.jsp</result>
<result name="error">/pages/error.jsp</result>
<result name="invalid.token">/pages/register.jsp</result>
<result name="wait">wait.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token">
<param name="excludeMethods">input</param>
</interceptor-ref>
</action>
2.在页面中加
<s:actionerror/>
<s:form action="register" method="post">
<s:token></s:token>
</s:form>
3.<interceptor-ref name="token"/>
<interceptor-ref name="token-session"/>
<!--注意struts2.0 拦截器名字为token-session struts2.1.2 已经更改为tokenSession -->
token: 在活动中检查合法令牌(token), 防止表单的重复提交; 在<s:actionerror/>会产生提示信息
token-session: 同上, 但是在接到非法令牌时将提交的数据保存在session中; 不会在<s:actionerror/>会产生提示信息
只会在后台发出警告并处理,如下:
警告: Form token KO80SIJW4F84034NG5HM1ZBUGOVNY64D does not match the session token null.