Struts2之防止表单重复提交(令牌机制)

1.令牌机制的原理

      当你发送请求时(即提交表单),后台就会生成一串像令牌一样的字符串隐藏的放在jsp页面中与后台留下的令牌一样,所以第一次提交验证能通过,但第一次提交时后台的令牌就会发生变化而前台页面的不变,所以再次提交时验证就通不过,这样就防止了表单重复提交。

2.令牌机制的代码实现

   Action类:LoginAction.java

//在这里要继承ActionSupport这个类
public class LoginAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
    //Getter和Setter方法省略,自己补上
	private String name;
	private String mobile;

	public  String	execute() {	
		return "success";
		}
}

  配置文件:struts.xml

<struts>   
    <package name="default" namespace="/" extends="struts-default">
         <action name="login" class="com.action.LoginAction" >
            <result>/welcome.jsp</result>
            <!-- 一旦重复提交就会转向message.jsp页面 -->
            <result name="invalid.token">/message.jsp</result>
            <!-- token(不在默认中)拦截器防止重复提交,默认拦截器为defaultStack -->
            <interceptor-ref name="token"></interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
         </action>
    </package>
</struts>

jsp页面:

 <s:form action ="login" method="post">
            <s:token/>  <!-- 令牌机制实现 -->
            <s:textfield name="name" label="用户名"></s:textfield>
            <s:textfield name="mobile" label="手机号"></s:textfield>
            <s:submit value="登录"></s:submit> 
</s:form> 

这就可以实现了,提交表单后,可在浏览器中的源代码中查看到隐藏的token(令牌)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RWTHeart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值