- 浏览: 844395 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
1 javascript ,设置一个变量,只允许提交一次。
<script language="javascript">
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true;
return true;
}
document.ondblclick = function docondblclick() {
window.event.returnValue = false;
}
document.onclick = function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false;
}
}
</script>
<html:form action="myAction.do" method="post">
2 还是javascript,将提交按钮或者image置为disable
<html:form action="myAction.do" method="post"
>
<html:image styleId="submitInput" src="images/ok_b.gif" border="0" />
</html:form>
3 利用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()方法。
1. //验证事务控制令牌,<html:form >会自动根据session中标识生成一个隐含input代表令牌,防止两次提交
2. 在action中:
//<input type="hidden" name="org.apache.struts.taglib.html.TOKEN"
// value="6aa35341f25184fd996c4c918255c3ae">
if (!isTokenValid(request))
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"));
resetToken(request); //删除session中的令牌
3. action有这样的一个方法生成令牌
protected String generateToken(HttpServletRequest request) {
HttpSession session = request.getSession();
try {
byte id[] = session.getId().getBytes();
byte now[] =
new Long(System.currentTimeMillis()).toString().getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(id);
md.update(now);
return (toHex(md.digest()));
} catch (IllegalStateException e) {
return (null);
} catch (NoSuchAlgorithmException e) {
return (null);
}
}
发表评论
-
java调用dll方法
2011-06-02 21:56 1601Java语言本身具有跨平台性,如果通过Java调用DLL的技术 ... -
DIV+CSS
2011-05-31 13:07 901http://www.divcss5.com/ -
getWriter() has already been called for this response的解决办法
2011-05-30 14:15 3714Servlet规范说明,不能既调用 response.getO ... -
CVS客户端
2011-05-27 14:54 916http://www.syntevo.com/index.ht ... -
UML工具
2011-05-25 18:59 898http://www.umlchina.com/Tools/N ... -
applicationcontext.xml怎么分模块简化配置?
2011-05-22 18:02 2250(1) 在用spring做项止的时候,我们经常会在appli ... -
Struts1.2分模块后的路径问题
2011-05-22 18:00 16131.某项目分模块的web.xml配置如下: <i ... -
java API chm html 1.5 1.6 中文版英文版 帮助文档
2011-05-14 10:45 2677J2SE DK & API下载 ————————- h ... -
ClientAbortException原因探究
2010-12-23 16:17 1878WEB是部署在TOMCAT5.5.17下面的,采用JNDI链接 ... -
java游戏 http://blog.csdn.net/cping1982/archive/2009/06/10/4258704.aspx
2010-11-08 22:31 1266http://blog.csdn.net/cping1982/ ... -
Java中字符串(String)的存储和赋值原理
2010-11-08 22:14 1232可能很多java的初学者对String的存储和赋值有迷惑, ... -
Java中字符串的最大长度
2010-11-08 22:12 1319在cpp中为了可移植性,string的长度是string::s ... -
Java与XML联合编程之DOM篇
2010-10-06 13:37 893一、DOM初步 DOM是Document Object ... -
jexl解析表达式字符串
2010-10-06 11:44 1959网址:http://commons.apache.org/je ... -
Java中getResourceAsStream的用法
2010-10-06 11:31 2012Java中getResourceAsStream的用法 首先 ... -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
2010-10-06 11:08 859Class.getResourceAsStream 和 Cla ... -
利用第三方的Jar包内的类和方法来判别文件编码
2010-08-06 13:07 1790今天在论坛里看见了一个人发帖子问,如何查看文件的编码。有一个人 ... -
将Java程序作成exe文件的几种方法
2010-08-06 13:04 969看到网上有同志的介绍将Java程序作成exe文件的方法,写的不 ... -
Java基本类型转换总结
2010-07-26 19:49 1391数值型转换成字符型 // 基本数据类型, int i_a ... -
怎样不使用中间变量来交换两个变量的值?
2010-07-10 21:39 1522int 的话就+后再减.string 的话就连接再截取. ...
相关推荐
在Web开发中,尤其是使用JavaServer Pages (JSP)时,Form表单的重复提交问题是一个常见的挑战。这可能导致数据不一致性和服务器资源的浪费。本文将探讨三种防止JSP表单重复提交的方法。 首先,我们可以使用...
以下是对避免Form重复提交的三种常见方案的详细解释: 1. JavaScript控制提交: 这种方法通过JavaScript在客户端阻止表单的多次提交。首先,定义一个全局变量`checkSubmitFlg`,初始值设为`false`。当用户尝试提交...
### JSP重复提交问题及其解决方法 ...针对JSP页面的重复提交问题,可以根据具体应用场景选择合适的解决方案。在实际应用中,结合多种方法可以更有效地防止重复提交,提高系统的健壮性和用户体验。
为了有效地防止Web应用程序中的表单重复提交问题,Struts框架提供了一种简单而强大的解决方案——同步令牌模式(Synchronization Token Pattern, STP)。下面详细介绍如何在Struts项目中实现这一功能。 1. **生成...
本文将深入探讨这个问题,以及如何通过JavaServer Pages(JSP)技术来防止表单的重复提交。 首先,理解表单重复提交的情况。当用户点击提交按钮后,由于网络延迟或刷新页面等原因,可能会导致同一个表单的数据被多...
JSP 重复提交问题解决方案 JSP 重复提交问题是一个常见的Web 开发问题,导致用户重复提交表单,引发业务级异常。解决这个问题有多种方法,以下是其中一些: 1. 在表单页的 HEAD 区加入禁止缓存的 meta 标签,以...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Web开发中,表单重复提交是一个常见的问题,可能导致...开发者可以根据项目需求选择合适的防重提交方案,确保系统正常运行。
"防止表单重复提交 token"是Struts2提供的一种解决方案,通过在请求中加入一个唯一的token来确保请求的唯一性和一致性。 首先,我们来看如何实现这个机制。在Struts2中,我们可以使用拦截器(Interceptor)来实现...
双重提交可能导致数据重复录入,对数据库造成不必要的负担。以下是解决这个问题的一些方法: 1. **纯HTML解决方案**: 您可以通过将`<input type="image">`标签作为提交按钮来实现。例如: ```html <form action...
4. **处理结果**: 如果用户重复提交,Struts会自动跳转到输入页面(`input.jsp`),你可以自定义错误消息。 **三、注意事项** 1. **Session管理**: Token存储在Session中,因此需要考虑Session的生命周期和管理,...
通过上述介绍可以看出,Struts的Token机制提供了一种简单而有效的解决方案来避免表单重复提交的问题。开发者只需要遵循一定的编码规范和逻辑结构,就可以轻松地在自己的项目中实现这一机制。这对于提高Web应用的数据...
总的来说,StrutsToken机制提供了一种有效的防止重复提交的方案,它使得Web应用能够更安全、更稳定地处理用户请求。然而,开发者也需要根据实际应用需求和性能考虑,选择适合的防重复提交策略。
在Web开发中,表单重复提交是一个常见的问题,可能导致数据冗余或系统异常。本文将详细探讨三种表单重复提交的情况以及相应的解决方法。 **第一种情况:提交后直接刷新页面** 当用户提交表单后,若立即对页面进行...
而对于multipart/form-data提交的文件,需要在Servlet或Filter中处理,例如使用Apache Commons FileUpload库,并指定字符集。 总的来说,解决Web项目中的中文乱码问题,关键是确保编码的一致性,并利用适当的编程...
- 在前端表单提交时明确指定字符集,例如`<form action="submit.jsp" method="post" accept-charset="UTF-8">`。 2. **使用过滤器:** - 如前所述,可以通过过滤器来统一处理字符集转换,确保所有请求和响应都使用...
过滤器在请求处理前运行,可以统一设置所有JSP页面的字符集,避免在每个页面上重复设置。 3. **过滤器(Filter)的使用**: - 创建一个实现`Filter`接口的类,如`CharacterEncodingFilter`,在`doFilter`方法中...