webwork及struts2.0防止表单重复提交

关键字: struts2, webwork

1.struts2<s:token/>
这个标签在页面中的生成效果如下:
<input type="hidden" value="struts.token" name="struts.token.name"/>
<input type="hidden" value="2TGL4IX4EUI7OSQ0C0HD4JJ1185XPBA6" name="struts.token"/>
webwork<ww:token/>
这个标签在页面中的生成效果如下:
<input type="hidden" name="webwork.token" value="55YLJH29V9MDC7NKQ1UZAPIDMF35OF49"/>
----------------------------
2.如果一个action需要使用token机制,则需要进行如下的处理:
webwork要先配置 
<interceptor name="token-session" class="com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor" />
<interceptor name="token" class="com.opensymphony.webwork.interceptor.TokenInterceptor" />拦截器然后在action中
引用
    <action name="save" class="com.chsi.sample.action.SampleEAction" method="save">
         <interceptor-ref name="token"/>
      <interceptor-ref name="defaultStack" />
      <result name="invalid.token" type="dispatcher">/sample/form/error.jsp</result>
    </action>


3.在jsp页面中要显示错误信息则需要使用到标签:error.jsp:
    <s:actionerror/> 这个标签打印出错误信息, 因为token的拦截器生成的信息是action级别的错误

关于提示信息的处理:
struts.messages.invalid.token=The form has already been processed or no token was supplied, please try again.
struts.internal.invalid.token=Form token {0} does not match the session token {1}.
4.


.<interceptor-ref name="token"/> 
<interceptor-ref name="token-session"/>
<!--注意struts2.0 拦截器名字为token-session struts2.1.2 已经更改为tokenSession --> 
<!--注意struts2.0 拦截器名字为token-session struts2.1.2 已经更改为tokenSession -->

  token: 在活动中检查合法令牌(token), 防止表单的重复提交; 在会产生提示信息

  token-session: 同上, 但是在接到非法令牌时将提交的数据保存在session中; 不会在会产生提示信息

  只会在后台发出警告并处理,如下:

  警告: Form token KO80SIJW4F84034NG5HM1ZBUGOVNY64D does not match the session token null.

你可能感兴趣的:(jsp,struts,活动,Webwork)