struts2中使用token避免重复提交

1.在struts.xml中

<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.

posted @ 2009-09-18 15:40  jamin  阅读(885)  评论(0编辑  收藏  举报