|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的js|反复|反复提交 1javascript,设置一个变量,只同意提交一次。
<scriptlanguage="javascript">
varcheckSubmitFlg=false;
functioncheckSubmit(){
if(checkSubmitFlg==true){
returnfalse;
}
checkSubmitFlg=true;
returntrue;
}
document.ondblclick=functiondocondblclick(){
window.event.returnValue=false;
}
document.onclick=functiondoconclick(){
if(checkSubmitFlg){
window.event.returnValue=false;
}
}
</script>
<html:formaction="myAction.do"method="post">
2仍是javascript,将提交按钮大概image置为disable
<html:formaction="myAction.do"method="post"
>
<html:imagestyleId="submitInput"src="http://www.webjx.com/htmldata/2006-03-09/images/ok_b.gif"border="0"/>
</html:form>
3使用struts的同步令牌机制
使用同步令牌(Token)机制来办理Web使用中反复提交的成绩,Struts也给出了一个参考完成。
基础道理:
服务器端在处置抵达的哀求之前,会将哀求中包括的令牌值与保留在以后用户会话中的令牌值举行对照,看是不是婚配。在处置完该哀求后,且在回复发送给客户端之前,将会发生一个新的令牌,该令牌除传给客户端之外,也会将用户会话中保留的旧的令牌举行交换。如许假如用户回退到方才的提交页面并再次提交的话,客户端传过去的令牌就和服务器真个令牌纷歧致,从而无效地避免了反复提交的产生。
if(isTokenValid(request,true)){
//yourcodehere
returnmapping.findForward("success");
}else{
saveToken(request);
returnmapping.findForward("submitagain");
}
Struts依据用户会话ID和以后体系工夫来天生一个独一(关于每一个会话)令牌的,详细完成能够参考TokenProcessor类中的generateToken()办法。
1.//考证事件把持令牌,<html:form>会主动依据session中标识天生一个隐含input代表令牌,避免两次提交
2.在action中:
//<inputtype="hidden"name="org.apache.struts.taglib.html.TOKEN"
//value="6aa35341f25184fd996c4c918255c3ae">
if(!isTokenValid(request))
errors.add(ActionErrors.GLOBAL_ERROR,
newActionError("error.transaction.token"));
resetToken(request);//删除session中的令牌
3.action有如许的一个办法天生令牌
protectedStringgenerateToken(HttpServletRequestrequest){
HttpSessionsession=request.getSession();
try{
byteid[]=session.getId().getBytes();
bytenow[]=
newLong(System.currentTimeMillis()).toString().getBytes();
MessageDigestmd=MessageDigest.getInstance("MD5");
md.update(id);
md.update(now);
return(toHex(md.digest()));
}catch(IllegalStateExceptione){
return(null);
}catch(NoSuchAlgorithmExceptione){
return(null);
}
}
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。 |
|