webwork token防止表单重复提交(转)

1.定义你自己的拦截器栈:
<interceptors>
<interceptor-stack name="submitToken">
<interceptor-ref name="token-session"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>

2.在需要防止重复提交的action里添加刚刚定义的拦截器栈,像这样:
<action name="sendMessage" class="net.jbbs.webwork.MessageAction" method="send">
<result name="success" type="dispatcher">
<param name="location">getMessagesList.action?type=sendbox</param>
</result>
<result name="fail" type="dispatcher">
<param name="location">sendMessage.jsp</param>
</result>
<result name="invalid.token" type="dispatcher">
<param name="location">sendMessage.jsp</param>
</result>
<interceptor-ref name="submitToken"/>
</action>

3.修改相应的包含提交表单的jsp文件,在这里是sendMessage.jsp:
<ww:token name="sendMessageToken"/>

做完上面三个步骤,应该可以实现防止重复提交了(注意其中彩色字体的地方)。

接着分析一下这里为什么用的是token-session(com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor), 而不是token(com.opensymphony.webwork.interceptor.TokenInterceptor). 它们的区别是当发生重复提交的时候,token-session会根据action的状态显示相应的页面而不执行相应的action,而token则会显示invalid.token对应的页面。token-session的用户体验无疑要好一些,有多少用户喜欢出错信息呢?。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值