看代码

利用struts的同步令牌机制

利用同步令牌(Token)机制来解决Web应用中重复提交的问题,Struts也给出了一个参考实现。

基本原理:

服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。

if (isTokenValid(request, true)) {

// your code here

return mapping.findForward("success");

} else {

saveToken(request);

return mapping.findForward("submitagain");

}

Struts根据用户会话ID和当前系统时间来生成一个唯一(对于每个会话)令牌的,具体实现可以参考TokenProcessor类中的generateToken()方法。

protected  boolean isTokenValid(javax.servlet.http.HttpServletRequest request)

Return true if there is a transaction token stored in the user's current session, and the value submitted as a request parameter with this action matches it.

protected  void saveToken(javax.servlet.http.HttpServletRequest request)

Save a new transaction token in the user's current session, creating a new session if necessary.

protected  void resetToken(javax.servlet.http.HttpServletRequest request)

Reset the saved transaction token in the user's session.

用org.apache.struts.action.Action类的以上3个方法来避免重复提交

待提交页面前面的action使用saveToken方法,提交后的action检查isTokenValid,如果为true,即提交正确,使用resetToken清掉token。

学习中!!!!!!!!

java提交表单后页面不刷新_表单已经提交,但是点击后退,显示网页过期,刷新后怎样避免重复提交(急!!谢谢!)...相关推荐

  1. 【一句话调用】h5页面 返回缓存 如js加载列表页点击进入详情页,返回后刷新的问题和无法定位问题 html 返回定位

    在做html5开发时,经常会碰到从列表页跳转到详情页,然后在点击返回或者手机手势返回后,列表内容刷新且无法定位到点击的位置,尤其包含列表加列表的情况 问题尤其明显. 解决办法如下: 1.vue的组件切 ...

  2. npm run buil构建后页面白屏_从Npm Script到Webpack,6种常见的前端构建工具对比

    从Npm Script到Webpack,6种常见的前端构建工具对比 小编说:历史上先后出现了一系列构建工具,它们各有优缺点.由于前端工程师很熟悉JavaScript,Node.js又可以胜任所有构建需 ...

  3. war 发布后页面不更新_一文看懂tomcat8如何配置web页面管理

    概述 大部分时候,我们的tomcat服务器都不是部署在本机,那么怎么样不通过ftp/sftp方式来将war包部署到tomcat容器呢?tomcat有提供web页面管理应用的功能. tomcat页面管理 ...

  4. 赋值后页面不渲染_第七节:框架搭建之页面静态化的剖析

    一. 前言 抛砖引玉: 提到项目性能优化,大部分人第一时间就会想到缓存,针对"读多写少"的数据,可以放到缓存里,设置个过期时间,这样就不用每次都去数据库中查询了, 减轻了数据库的压 ...

  5. war 发布后页面不更新_吐槽 | 都发布一万年了,这游戏还不“更新”?

    @Roy123:4年老玩家我就想知道这游戏还更新嘛? 不是礼包特效那种更新@受难吧你:天天更点没用的,赶紧更新门派吧@麦田:天天水更新,武学平衡,新玩法迟迟没动静.@深藏功与名:我只关心游戏的更新!在 ...

  6. 无头结点单链表的逆置_解析单链表逆置的多种方法 | 术与道的分享

    单链表的逆置还是很重要的,不过第一次写逆置的时候程序就直接奔溃了,因为解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的,因此这也就成就了单链表在面试中的地位. 1.普通循环逆置 ...

  7. vue-element日期框点击不显示,不刷新

    添加blur事件,手动强制刷新 <el-date-picker @blur="changeTime" v-model="form.time" type=& ...

  8. l310加完墨水后需要怎样设置_请问打印机添加完墨水之后为什么还是显示缺墨提示呢?...

    展开全部 1.电脑中62616964757a686964616fe58685e5aeb931333366303134显示的墨量是通过打印机计数获取的估算量,在实际使用中可能会因为一些操作而造成与实际墨 ...

  9. php ajax 重复提交,ThinkPHP防止重复提交表单的方法实例分析

    本文实例总结分析了ThinkPHP防止重复提交表单的方法.分享给大家供大家参考,具体如下: 为什么会有表单重复的坑 在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页 ...

最新文章

  1. [JavaScript] JavaScript 数组挖掘,不只是讲数组哟
  2. Kali Linux 安全渗透教程第六更1.4.2 安装至USB驱动器Kali Linux
  3. 20172311-哈夫曼编码测试
  4. STM32串口中断实验总结函数的初始化必须在变量的初始化之后在进行!
  5. DISCUZ网站DIY后,导致DIY功能失效,无法在前台删除已创建的DIY功能解决办法
  6. memcache/memcached/memcachedb 配置、安装(转)
  7. 常用USB转串口芯片介绍
  8. go路由httprouter中的压缩字典树算法图解及c++实现
  9. java 读取 文件 short_Java RandomAccessFile readShort()方法
  10. 认识ruquest对象
  11. 【136天】尚学堂高淇Java300集视频精华笔记(77-78)
  12. mysql 存正负数_mysql 存储负数
  13. 这种国家的外贸不做也罢
  14. 为DB2 新增加的用户不能直接使用db2命令的解决办法
  15. ps怎么抠地图线路_用Photoshop怎么抠地图?
  16. 如何设置迪文T5L串口屏的防盗版功能?
  17. SecureCRT 命令行备注
  18. 并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等 目录 1. “共享内存系统”,消息传递系统”。 1 1.1. 共享模式 多进程 多线程 1 1.2. Actor消息模式 事件驱动 2
  19. windows电脑微信双开 bat 脚本
  20. 相控阵天线(九):平面阵列天线综合(不可分离型切比雪夫分布、圆口径泰勒综合、可分离型分布、配相抵消法)

热门文章

  1. 推荐一个简洁优雅的博客系统,farbox
  2. iPhone客户端开发笔记(一)
  3. [OpenGL] Stencil Shadow Algorithm
  4. 动态参数 maven_Spring Security 动态url权限控制(三)
  5. jsp文件命名规范_代码规范整理
  6. Python+pandas使用重采样技术按时间段查看员工业绩
  7. 设计模式 C++工厂方法模式
  8. ajax响应不显示值,Ajax响应200正常,但显示未能加载响应数据
  9. 数据库课程设计基于php,数据库课程设计(DatabaseCourseDesign)
  10. vue保存页面的值_vue前端页面跳转参数传递及存储