token机制

if (this.isTokenValid(request)){
//第一次进入页面上的token和session中的token相等

this.saveToken(request);//更换session中的值,注意:一旦更换页面上的token也随之更换,
//
但是你按F5重复提交时,地址上的参数org.apache.struts.taglib.html.TOKEN还是上一次的token值,
//
所以即使页面上的token换了,但是传过来的是原来的.所以第二次传时就和session中的不相同了
//如果不是F5刷新的话,传到action中的就是页面上的最新的token

} else {
logger.info(
"检测到删除广告请求重复提交!此次不提交!"
);
}

Add.jsp 注册新用户页面

InsertSuccessed.jsp 新记录添加成功

InsertFailed.jsp 新记录添加失败

Insertrepetition 重复添加提示

流程: 在首面里点击"添加新用户后" ----进入到Add.jsp----填写好表单后提交----

成功---- insertSuccessed.jsp 新记录添加成功

失败---- InsertFailed.jsp 新记录添加失败

重复提交(或在insertSuccessed.jsp页刷新)---- Insertrepetition 重复添加提示

Action 结构:

因为用的是MappingDispatchAction,

addjump 事件 用于从首面跳转到Add.jsp用的

insert事件 添加一条记录

首先要在表单提交前(也就是跳转到Add.jsp时)保存一个Token,所以在addjump 事件里要有 saveToken(request,true)语句; 这时你可以在Add.jsp的源码中看到一个隐藏域, 如:〈input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="6aa35341f25184fd996c4c918255c3ae"〉

提交上来后,到了insert事件里面了,这里要判断请求中的Token 和保存在会话中的Token是否一样,如果一样,则表明是第一次提交.如果不一样,则表明是"重复提交".

所以在insert 事件中要有判断的代码:

view plaincopy to clipboardprint?
 if (isTokenValid(request, true)) {

  // 表单不是重复提交

  //这里是保存数据的代码

  } else {

  //表单重复提交

  saveToken(request);

  //其它的处理代码

  }

 if (isTokenValid(request, true)) {

  // 表单不是重复提交

  //这里是保存数据的代码

  } else {

  //表单重复提交

  saveToken(request);

  //其它的处理代码

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值