<s:token/>防止多次提交

防止多次提交表单,见表单:

 

<s:form action="formAction"> 
    <s:bean name="com.test.service.BookService" id="bs"></s:bean>
    <s:checkboxlist list="#bs.books" label="请选择喜欢的图书" name="b" listKey="author" 
listValue="name"  labelposition="top"></s:checkboxlist>
    <s:token/>
    <s:submit value="提交"/>
    </s:form>

 

 加入<s:token/> 还要在<action>中定义拦截器

 

<action name="formAction" class="com.test.action.FormAction">
			<interceptor-ref name="defaultStack"/>
			<interceptor-ref name="token"/>
			<result>success.jsp</result>
			<result name="invalid.token">/error.jsp</result>
</action>

 但拦截器判断为重复提交,则返回invalid.token,转到error.jsp

 

理解: 
1、JSP使用<s:token/>标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中。 
2、token拦截器会判断客户端form提交的token和session中保存的session是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果,Action对应的方法也不会执行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值