- 浏览: 954883 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (423)
- mysql (37)
- hibernate (3)
- struts (9)
- spring (33)
- dom4j (2)
- junit (0)
- exception (1)
- 随笔杂谈 (12)
- google app engine (1)
- XMPP (1)
- OAuth安全授权 (1)
- 版本控制 (8)
- 心情感悟 (0)
- core java (19)
- log4j (7)
- jquery (12)
- javascript (10)
- 网站性能优化及工具 (11)
- 服务器架设配置等 (38)
- EXT (4)
- 正则表达式 (5)
- 日志统计分析 (2)
- htmlparse (4)
- httpclient (5)
- java随笔 (5)
- dhtmlxtree (1)
- freemarke (5)
- memcached (6)
- javamail (5)
- Linux命令 (10)
- 应用监控cpu web jdbc等 (4)
- jmagick (9)
- 第三方缓存策略 (9)
- ORM (2)
- hadoop (2)
- 大数据量处理 (8)
- 经典 (1)
- 权限设计 (1)
- andriod (1)
- mybatis (12)
- redis (24)
- 数据结构_算法 (5)
- 分布式系统 (1)
- php (1)
- 网络编程 (3)
- 服务器部署 (3)
- ios (2)
- IM (23)
- mina (1)
- 视讯和语音 (1)
- 代码生成 (1)
- 架构 (4)
- 建模工具 (1)
- oracle (4)
- solr (10)
- 构建工具 (7)
- html5 (1)
- nginx (5)
- css (1)
- 大数据-分布式 (2)
- 设计模式 (2)
- mq (2)
- jvm调优 (8)
- 并发编程 (2)
- 搜索引擎 (1)
- UML (2)
最新评论
-
天使建站:
jquery获取网页里多选框checkbox选中项的值的方法及 ...
JS jQuery分别获取选中的复选框值 -
abao1:
发现一个小问题 sortAndSave方法中的for循环 第二 ...
完整java实现外部排序 -
西巴拉古呀那:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
成大大的:
Kafka分布式消息系统实 ...
消息系统kafka介绍
采用filter来全局控制重复提交
filter拦截需要控制重复提交的页面
filter中获取该页面的所有参数值
将参数值字符串进行计算hash值存入session,或者数据库中,保存最近一次操作的hash值
获取session中最近的hash值和本次获取参数值计算所得的hash值对比,,相同则为重复提交,不同则放行
@Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; Integer session_token = (Integer)request.getSession(true).getAttribute("token"); Enumeration<String> en= request.getParameterNames(); System.out.println("==session token:"+session_token); String strcode = ""; while(en.hasMoreElements()){ strcode +=request.getParameter(en.nextElement()); } //将表单页面所有值相加字符串进行hash计算 int hash_token = strcode.hashCode(); //两次hash值相同,则表示为重复提交 if(session_token!=null&&session_token==hash_token){ response.sendRedirect(request.getContextPath()+"/chongfu.do"); }else { //session中保持最近一次表单hash值 request.getSession(true).setAttribute("token", hash_token); chain.doFilter(req, res); } }
发表评论
-
各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包
2013-07-16 13:09 2842在开发基于数据库的应 ... -
springmvc rest框架搭建中遇到的问题-xml转换错误
2013-01-18 11:26 2017.bean to xml显示的xml不是我往Model ... -
spring3.5 mvc json view bug MappingJacksonJsonView
2013-01-18 11:27 1548在返回单一model的json的时候。 MappingJa ... -
Spring MVC的多视图解析器配置及与Freemarker的集成
2013-01-18 11:27 3694http://my249645546.iteye.com/ ... -
xStream完美转换XML、JSON
2013-01-17 16:02 1270http://www.cnblogs.com/hoojo/a ... -
SpringMVC 中整合JSON、XML视图一
2013-01-17 16:01 1383http://www.cnblogs.com/hoojo/a ... -
Spring MVC 之 视图解析器ResourceBundleViewResolver
2013-01-17 10:45 1286http://blog.csdn.net/q34982 ... -
spring3mvc自定义多视图解析器
2013-01-17 10:41 1672使用视图名后缀来判断选择相应的视图解析器自定义一个视图解析器 ... -
spring3.0.6 使用context:property-placeholder载不进属性
2012-12-15 14:43 1388我用spring3.0.6+mybatis3.0.6+myba ... -
Spring定时任务的多种使用方法总结
2012-10-18 09:48 1740这里使用的是Spring2.5,需要的jar包:spring. ... -
Spring3.0 + 自定义注解实现操作日志记录功能
2012-03-12 09:34 1502最近项目组长分配给我一个任务,让我完成一个操作日志的管理功能。 ... -
spring mvc例子
2012-03-11 11:35 2088使用拦截器 和Struts2一样,Spring MVC也可以 ... -
在 Spring Bean 內取得 HttpServletRequest
2011-10-11 16:13 1243使用 Java 去開發 Web 應用程式時,大部份時候都會使用 ... -
spring3+freemark自定义标签
2011-10-09 18:27 2769<bean id="viewResolver& ... -
OpenSessionInViewFilter作用及配置
2011-06-15 10:31 1344摘自:http://www.yybean.com/opense ... -
spring httpinvoke 例子
2011-04-21 17:15 1218http://ajava.org/course/open/11 ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2011-04-02 23:38 2348本文将构建一个普通工程来说明spring注解缓存的使用方式,关 ... -
使用 ActiveMQ 示例
2011-03-30 17:38 1374企业中各项目中相互协作的时候可能用得到消息通知机制。比如有 ... -
使用Spring HTTP invoker进行远程调用
2011-03-30 10:34 1705使用Spring HTTP invoker进行远程调用Spri ... -
Java Spring2.5 Remote Invoke HTTP Invoker远程调用
2011-03-30 08:42 1998近日,一个项目涉及到系统间接口调用,考虑到系统间用的都是j ...
相关推荐
- 在Servlet容器中,可以编写一个全局的过滤器来拦截请求,检查是否为重复提交。但这需要有可靠的判断标准,如基于请求的唯一ID或令牌。 综上所述,防止重复提交的方法多种多样,具体选择哪种策略取决于应用的需求...
10. **提交后的重定向**:提交成功后,可以使用`header()`函数重定向用户到其他页面,避免用户重复提交表单。 通过以上步骤,你可以构建一个完整的PHP表单提交系统,实现数据的收集、验证、处理以及与外部系统的...
- **读已提交(READ COMMITTED)**:只读取已提交的数据,减少了脏读的可能性,但可能导致不可重复读和幻读。 - **可重复读(REPEATABLE READ)**:防止不可重复读,但幻读仍可能发生,例如MySQL的InnoDB引擎默认...
9. **表单重定向**: 完成表单处理后,可能会使用`header()`函数进行重定向,避免用户重复提交表单。重定向到成功页面、错误页面或者刷新当前页面都是常见的实践。 10. **响应式设计**: 当今的Web应用需要适应不同...
- `Isolation.REPEATABLE_READ`:可重复读,允许读取已经提交的数据,但在同一事务中多次读取同一数据始终一致,防止不可重复读。 - `Isolation.READ_COMMITTED`:读已提交,只保证事务内的读操作能看到其他事务已经...
3. **配置Web应用的字符集**:在`web.xml`文件中,可以通过`<filter>`和`<filter-mapping>`元素,配合`CharacterEncodingFilter`实现全局的请求编码设置。这样,无需在每个Servlet中单独设置编码,可以减少代码重复...
Action Filter是可重复使用的代码段,用于在执行控制器动作前后执行特定的任务。ASP.NET MVC提供了一些内置的过滤器,如授权、缓存等。过滤器可以通过特性(Attribute)的形式应用到控制器或动作上。 **使用AJAX** ...
3. 这种全局处理方式可以减少代码重复,提高代码复用性,同时也能确保用户体验的连贯性。 此外,你可能还对其他相关的主题感兴趣,例如设置Session超时的不同方法、使用AJAX重写Session超时跳转、IIS的Session超时...
### 过滤器(Filter)作为全局解决方案 过滤器是一种能够拦截客户端请求和服务器响应的技术,可以用于统一处理中文乱码问题。 #### 实现步骤: 1. **创建过滤器类:** 定义一个实现`javax.servlet.Filter`接口的类。 ...
为了全局解决这个问题,可以使用过滤器(Filter)。 过滤器是Java Web应用中处理请求和响应的重要工具,它可以拦截请求并在执行实际业务逻辑之前或之后执行自定义操作。在本例中,创建了一个名为`...
11. Context参数:Context参数是Web应用的全局参数,可以在web.xml文件中配置。可以使用application对象来获取这些参数。 12. 表单提交:HTML中的表单可以使用post或get方法提交数据,提交地址可以是Servlet、jsp或...
...在PHP中,我们通常使用`$_POST`或`$_GET`全局数组来...以上就是PHP处理表单输入、验证、多页表单、错误显示以及防止XSS和重复提交的基本方法。理解并熟练运用这些技巧,对于开发健壮、安全的PHP应用程序至关重要。
通过`git rebase`或`git filter-branch`等命令可以重写提交历史,但这需要谨慎操作。 **制造历史** 有时需要创建假的提交历史,例如为了测试某个工作流或演示目的。 **哪儿错了?** 当遇到问题时,可以通过分析...
对于大型项目,使用过滤器(Filter)进行全局的编码转换是一种更高效的方法。过滤器可以在请求处理的早期阶段统一处理编码问题,避免在每个Servlet或JSP中重复设置。 总的来说,处理Java EE中的乱码问题,关键在于...
- 解决方案C:使用过滤器(Filter)全局处理请求编码。过滤器在请求处理前运行,可以统一设置所有JSP页面的字符集,避免在每个页面上重复设置。 3. **过滤器(Filter)的使用**: - 创建一个实现`Filter`接口的类...
- **token防止表单重复提交**:使用`<s:token>`标签可以生成一个隐藏字段,防止用户多次提交同一个表单。 通过以上内容的学习,可以全面了解Struts2.1框架的核心特性和使用方法,这对于开发者来说是非常宝贵的资源...
最后,当表单数据成功处理后,我们通常会通过`header()`函数重定向用户到另一个页面,防止重复提交: ```php header('Location: success.php'); exit; ``` 以上就是关于“PHP表单处理”的基本介绍。在实际开发中,...
Struts2框架提供了大量的常量供开发者配置,这些常量可以控制框架的各个方面,例如: - **struts.devMode**: 开发模式开关,开启后会提供更多调试信息。 - **struts.action.extension**: 指定Action URL的扩展名。 ...
每种类型的Result都有不同的用途,例如`redirectAction`常用于防止重复提交,而`dispatcher`则用于展示动态生成的视图。 以上就是Struts2框架的基本工作原理和配置。通过理解和掌握这些概念,开发者能够有效地构建...
- **request**:封装客户端请求,包括客户端提交的所有信息。 - **response**:封装服务器响应,用于向客户端发送数据。 - **out**:用于输出数据到客户端。 - **session**:封装 HttpSession 对象,用于存储会话...