其他分享
首页 > 其他分享> > webwork 防重提交

webwork 防重提交

作者:互联网

原文链接:https://my.oschina.net/iqoFil/blog/221642

看一下怎么实际运用(In Action):

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的用户体验无疑要好一些,有多少用户喜欢出错信息呢?。

后记:使用webwork的过程越来越感觉到它的强大了。UI Tag,本地化支持,数据绑定,表单token防刷,与Spring的良好集成,IOC,Interceptor.......抓紧时间学习了!

转载于:https://my.oschina.net/iqoFil/blog/221642

标签:token,session,jsp,提交,action,防重,webwork
来源: https://blog.csdn.net/cichaojiao4477/article/details/100984724