`
easy890819
  • 浏览: 930 次
  • 性别: Icon_minigender_1
  • 来自: 现在在成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring MVC解决重复提交的一个不同思路

阅读更多

现在网上看SpringMVC解决重复提交的方案,大多数是用令牌的形式,提交表单时附带一个令牌。这个思路很好,但是我个人不太喜欢,所以基于Spring拦截器机制,我做了一个特殊的解决重复提交的方案。
首先看HandlerInterceptor这个接口:
里面有3个方法,分别是:

public boolean postHandle(HttpServletRequest request,HttpServletResponse response ,Object arg2) throw Exception;
public void preHandle(HttpServletRequest request,HttpServletResponse response ,Object arg2,ModelAndView arg3) throw Exception;
public void afterCompletion(HttpServletRequest request,HttpServletResponse response ,Object arg2,Exception exception) throw Exception;

 基于Spring切面编程的思想,我是先在afterCompletion中,操作session存放了上次访问的URL与访问时间

   //获取URL

StringBuffer requestUrl = new StringBuffer(request.getRequestURI());
String contextPath = request.getContextPath();
requestUrl.delete(requestUrl.indexOf(".action"),requestUrl.length());
String trueUrl = requestUrl.toString();
trueUrl=trueUrl.replaceFirst(contextPath+"/","");

 //存放至SESSION中

HttpSession session = request.getSession();
session.setAttribute("formerUrl",trueUrl);
session.setAttribute("formerTime",system.currentTimeMillis());

 那么,咱们在重复提交的时候,只需要在postHandle中判断两件事情

1、第二次提交时,与第一次提交时的URL是否相同;

2、第二次提交时,与第一次提交时的时间相差是否过短;

  当然,执行顺序是可以调整的但是大概思路是这样

  大家可以提一下意见以及其他的解决方案0.0

 

补充:再次整理了一下思路,害怕在未执行afterCompletion时就开始重复提交,所以可以把

更新URL与请求时间写入一个方法中,然后分别在

postHandle,preHandle,afterCompletion中调用

当然,在postHandle调用此方法的基础 是判断本次提交不是二次提交的前提下哦!表忘记这点0.0

 

另外,除非本人声明,所有文章均为本人原创,转载请注明!

分享到:
评论

相关推荐

    struts1的令牌解决页面重复提交问题

    Struts1是一个经典的Java Web开发框架,它在处理表单提交时可能...然而,随着技术的发展,现代框架如Spring MVC、Struts2等提供了更完善的解决方案,例如利用HTTP的幂等性或一次性令牌(如CSRF Token)来处理此类问题。

    springMVC中基于token防止表单重复提交方法

    SpringMVC中基于Token防止表单重复提交方法 SpringMVC中基于Token防止表单重复提交方法是指通过在SpringMVC配置文件中添加拦截器配置,来拦截页面请求和表单提交请求,以防止表单重复提交。下面是该方法的实现思路...

    新闻发布系统设计思路(Action)

    3. 防重复提交:对可能导致数据冲突的操作(如新闻发布),使用令牌或时间戳等方式防止重复提交。 六、测试与部署 1. 单元测试:编写针对Action层的单元测试,确保功能正确无误。 2. 集成测试:模拟真实环境进行...

    ssm搭建框架实现登陆 注册

    SSM框架是Java Web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,用于构建高效、灵活的Web应用程序。本项目通过SSM搭建的框架实现登录、注册功能,并包含修改密码和个人信息的系统。 1. **Spring框架**...

    template-collection:Java Web开发模板集合

    提供了一种降低重复CURD的思路,效果类似于Mybatis-plus插件,通过Mybatis官方注解和反射,仅用几百行代码即可编写自己的Mybatis-plus插件.使用上类似Spring Data JPA的CurdReposity.使用Spring MVC和Javax Validation...

    科研成果申报管理系统源码.zip

    《科研成果申报管理系统源码.zip》是一个基于SSM框架的课程设计项目,旨在提供一个用于科研成果申报管理的系统。SSM是Java开发中的常见框架组合,由Spring、SpringMVC和MyBatis三大组件构成,它在企业级应用开发中...

    【Java Web精品资源】科研成果申报管理系统源码(附程序系统录像及项目使用说明)

    Java Web精品资源——科研成果申报管理系统源码是一个基于SSM框架的后端开发项目,旨在帮助科研机构或高校实现科研成果的在线申报、管理和...对于有一定经验的开发者,这则提供了了解不同设计思路和实现方式的机会。

    登录与注册界面的实现,同时实现前后端的交互功能

    Spring是一个开源的应用框架,它提供了丰富的功能,包括依赖注入、面向切面编程、事务管理等。在这个项目中,Spring主要负责管理对象的生命周期和依赖关系,使我们能更方便地进行组件间的协作。 **二、SpringMVC** ...

    Mybatis-SpringMVC在线考试系统源码

    对于开发者,它可以作为一个快速启动新项目的模板,减少重复工作。同时,通过阅读源码,可以深入理解MVC设计模式、数据库操作、权限控制等概念。 总的来说,"Mybatis-SpringMVC在线考试系统源码"是一个实用的学习...

    第22组实验室设备管理系统,实验室与设备管理处,Java源码.zip

    【描述】简单地重复了标题的内容,再次强调这是一个关于实验室设备管理的系统,并且是用Java语言编写的源码。Java是一种广泛使用的面向对象的编程语言,具有跨平台性、安全性强、性能稳定等优点,因此选择Java作为...

    java程序员ssh面试常见题

    - **隔离级别**:Spring事务管理支持不同的隔离级别,包括默认的`ISOLATION_DEFAULT`、读未提交`ISOLATION_READ_UNCOMMITTED`、读已提交`ISOLATION_READ_COMMITTED`、可重复读`ISOLATION_REPEATABLE_READ`以及串行...

    网上调查问卷系统

    3. **数据收集**:用户完成问卷后,系统应能实时保存和更新答案,同时防止重复提交。 4. **统计分析**:系统应提供数据导出功能,并能生成图表展示结果,便于用户分析调查结果。 5. **权限控制**:可能有管理员、...

    java写的网上定餐系统

    本文将深入探讨一个由Java语言编写的简单版本网上订餐系统,旨在为开发者提供参考和学习的素材。我们将从系统设计、功能实现、技术选型等方面进行详细介绍。 首先,网上订餐系统的核心目标是方便用户在线浏览菜单、...

    教师评教管理(增加开源架构)

    在当前的IT领域,开源架构的使用已经成为软件开发的一个重要趋势。"教师评教管理系统"通过引入开源架构,实现了更为高效、灵活且可扩展的平台。开源架构的优势在于它允许开发者利用已有的成熟框架,减少重复劳动,...

    基于ssm+mysql的毕业生离校管理系统源码数据库.docx

    2. **敏捷开发**:采用敏捷开发模式,将整个项目分为多个小周期进行开发,每个周期结束后都可得到一个可用的系统版本。 3. **测试驱动开发**:编写单元测试用例,在编码之前明确所需实现的功能,确保代码的质量和...

    网上选课系统.zip

    《网上选课系统》是一个基于Java技术开发的学生选课平台,旨在提供便捷、高效和安全的在线选课体验。此系统的设计与实现涵盖了多种IT领域的关键知识点,包括Web开发、数据库设计、用户交互以及安全性控制。 1. **...

    JAVASSH2整合

    根据给定的部分内容,我们可以看到一个简单的用户注册流程以及不同层次架构的设计思路: 1. **用户注册流程**: - `register.jsp`:用户填写注册信息的页面。 - `registerDeal.jsp`:处理用户提交的注册信息,并...

    贷学金申请和评定系统的设计与实现_王鹏(毕业设计 完整)

    框架上,Spring Boot、Django或ASP.NET MVC等都是常见的选择。考虑到安全性,系统应遵循OWASP安全开发原则,进行身份验证、授权、输入验证和数据加密。 为了保证系统的稳定性和性能,可能需要考虑负载均衡、缓存...

Global site tag (gtag.js) - Google Analytics