防止表单重复提交

本文介绍了如何在Struts2框架中防止表单重复提交,包括使用Session存储验证信息、设置重定向ResultType以及利用Token拦截器。详细讲解了token和tokenSession拦截器的差异,以及它们如何确保表单处理的唯一性,从而避免数据重复的问题。
摘要由CSDN通过智能技术生成

使用session解决

在session中存储验证 当验证码验证过后 将session中的验证码删除

Struts表单提交解决方案

使用重定向

在action配置中 result type设置为redirect

<result type="redirect">/success.jsp</result>

使用<s:token/>生成令牌配合token拦截器

这种方式差生错误后才会告知用户 一般不用

<action name="register" class="org.ccit.com.web.action.UserAction" >
    <interceptor-ref name="defaultStack"></interceptor-ref>
<!--            token不属于defaultStack 需要额外添加-->
    <interceptor-ref name="token"></interceptor-ref>
<!--            配置表单重复提交时的结果视图-->
    <result name="invalid.token">/resubmit.jsp</result>
    <result name="input">/register.jsp</result>
<!--            <result name="success">/login.jsp</result>-->
</action>
<s:form  action="register"  namespace="/user" >
    <s:token></s:token>
    <s:textfield name="username" label="用户名" requiredLabel="true" requiredPosition="left"></s:textfield><br>
    <s:password name="password" label="密码" requiredLabel="true" showPassword="true"></s:password><br>
    <s:submit value="注册" ></s:submit>
</s:form>

使用<s:token/>生成令牌配合tokensession拦截器

tokensession拦截器会使表单只被处理一次 重复提交不会被处理

<action name="register" class="org.ccit.com.web.action.UserAction" >
    <interceptor-ref name="defaultStack"></interceptor-ref>
<!--            token不属于defaultStack 需要额外添加-->
    <interceptor-ref name="tokenSession"></interceptor-ref>
    <result name="input">/register.jsp</result>
<!--            <result name="success">/login.jsp</result>-->
</action>
<s:form  action="register"  namespace="/user" >
    <s:token></s:token>
    <s:textfield name="username" label="用户名" requiredLabel="true" requiredPosition="left"></s:textfield><br>
    <s:password name="password" label="密码" requiredLabel="true" showPassword="true"></s:password><br>
    <s:submit value="注册" ></s:submit>
</s:form>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值