锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
銆銆<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" onsubmit="return checkSubmit();">銆銆
銆銆2 榪樻槸javascript錛屽皢鎻愪氦鎸夐挳鎴栬卛mage緗負disable銆銆
銆銆 <html:form action="myAction.do" method="post"
銆銆 onsubmit="getElById('submitInput').disabled = true; return true;"> 銆銆
銆銆 <html:image styleId="submitInput" src="images/ok_b.gif" border="0" />銆
銆銆 </html:form>銆銆
銆銆3 鍒╃敤struts鐨勫悓姝ヤ護鐗屾満鍒躲銆
銆銆鍒╃敤鍚屾浠ょ墝錛圱oken錛夋満鍒舵潵瑙e喅Web搴旂敤涓噸澶嶆彁浜ょ殑闂錛孲truts涔熺粰鍑轟簡涓涓弬鑰冨疄鐜般?
銆銆鍩烘湰鍘熺悊錛氥
銆銆鏈嶅姟鍣ㄧ鍦ㄥ鐞嗗埌杈劇殑璇鋒眰涔嬪墠錛屼細灝嗚姹備腑鍖呭惈鐨勪護鐗屽間笌淇濆瓨鍦ㄥ綋鍓嶇敤鎴蜂細璇濅腑鐨勪護鐗屽艱繘琛屾瘮杈冿紝鐪嬫槸鍚﹀尮閰嶃傚湪澶勭悊瀹岃璇鋒眰鍚庯紝涓斿湪絳斿鍙戦佺粰瀹㈡埛绔箣鍓嶏紝灝嗕細浜х敓涓涓柊鐨勪護鐗岋紝璇ヤ護鐗岄櫎浼犵粰瀹㈡埛绔互澶栵紝涔熶細灝嗙敤鎴蜂細璇濅腑淇濆瓨鐨勬棫鐨勪護鐗岃繘琛屾浛鎹€傝繖鏍峰鏋滅敤鎴峰洖閫鍒板垰鎵嶇殑鎻愪氦欏甸潰騫跺啀嬈℃彁浜ょ殑璇濓紝瀹㈡埛绔紶榪囨潵鐨勪護鐗屽氨鍜屾湇鍔″櫒绔殑浠ょ墝涓嶄竴鑷達紝浠庤屾湁鏁堝湴闃叉浜嗛噸澶嶆彁浜ょ殑鍙戠敓銆傘
銆銆if (isTokenValid(request, true)) {
銆銆 // your code here
銆銆 return mapping.findForward("success");
銆銆} else {
銆銆 saveToken(request);
銆銆 return mapping.findForward("submitagain");
銆銆}銆
銆銆Struts鏍規嵁鐢ㄦ埛浼氳瘽ID鍜屽綋鍓嶇郴緇熸椂闂存潵鐢熸垚涓涓敮涓錛堝浜庢瘡涓細璇濓級浠ょ墝鐨勶紝鍏蜂綋瀹炵幇鍙互鍙傝僒okenProcessor綾諱腑鐨刧enerateToken()鏂規硶銆傘銆
銆銆1. //楠岃瘉浜嬪姟鎺у埗浠ょ墝,<html:form >浼氳嚜鍔ㄦ牴鎹畇ession涓爣璇嗙敓鎴愪竴涓殣鍚玦nput浠h〃浠ょ墝錛岄槻姝袱嬈℃彁浜?
銆銆2. 鍦╝ction涓細銆銆
銆銆 //<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);
銆銆 }
銆銆 }
Validator鏄熀浜嶫avaScript鎶鏈殑浼潤鎬佺被鍜屽璞$殑鑷畾涔夊睘鎬э紝鍙互瀵圭綉欏典腑鐨勮〃鍗曢」杈撳叆榪涜鐩稿簲鐨勯獙璇侊紝鍏佽鍚屼竴欏甸潰涓悓鏃墮獙璇佸涓〃鍗曪紝鐔熸倝鎺ュ彛涔嬪悗涔熷彲浠ュ鐗瑰畾鐨勮〃鍗曢」鐢氳嚦浠呬粎鏄煇涓瓧絎︿覆榪涜楠岃瘉銆傚洜涓烘槸浼潤鎬佺被錛屾墍浠ュ湪璋冪敤鏃朵笉闇瑕佸疄渚嬪寲錛岀洿鎺ヤ互"綾誨悕+.璇硶+灞炴ф垨鏂規硶鍚?鏉ヨ皟鐢ㄣ傛澶栵紝Validator榪樻彁渚?縐嶄笉鍚岀殑閿欒鎻愮ず妯″紡錛屼互婊¤凍涓嶅悓鐨勯渶瑕併?
Validator鐩墠鍙疄鐜扮殑楠岃瘉綾誨瀷鏈夛細
[JavaScript] 鐗?BR>Validator鐩墠鍙疄鐜扮殑楠岃瘉綾誨瀷鏈夛細
1.鏄惁涓虹┖錛?BR>2.涓枃瀛楃錛?BR>3.鍙屽瓧鑺傚瓧絎?BR>4.鑻辨枃錛?BR>5.鏁板瓧錛?BR>6.鏁存暟錛?BR>7.瀹炴暟錛?BR>8.Email鍦板潃錛?BR>9.浣跨敤HTTP鍗忚鐨勭綉鍧錛?BR>10.鐢佃瘽鍙風爜錛?BR>11.璐у竵錛?BR>12.鎵嬫満鍙風爜錛?BR>13.閭斂緙栫爜錛?BR>14.韜喚璇佸彿鐮?1.05澧炲己)錛?/FONT>
15.QQ鍙風爜錛?BR>16.鏃ユ湡錛?BR>17.絎﹀悎瀹夊叏瑙勫垯鐨勫瘑鐮侊紱
18.鏌愰」鐨勯噸澶嶅鹼紱
19.涓ゆ暟鐨勫叧緋繪瘮杈冿紱
20.鍒ゆ柇杈撳叆鍊兼槸鍚﹀湪(n, m)鍖洪棿錛?BR>21.杈撳叆瀛楃闀垮害闄愬埗(鍙寜瀛楄妭姣旇緝)錛?BR>22.瀵逛簬鍏鋒湁鐩稿悓鍚嶇О鐨勫崟閫夋寜閽殑閫変腑鍒ゆ柇錛?BR>23.闄愬埗鍏鋒湁鐩稿悓鍚嶇О鐨勫閫夋寜閽殑閫変腑鏁扮洰錛?BR>24.鑷畾涔夌殑姝e垯琛ㄨ揪寮忛獙璇侊紱
25.鏂囦歡涓婁紶鏍煎紡榪囨護(1.04)
榪愯鐜(瀹㈡埛绔?錛?
鍦╓indows Server 2003涓嬬敤IE6.0+SP1鍜孧ozilla Firefox 1.0嫻嬭瘯閫氳繃錛?BR>鍦↙unix RedHat 9涓嬬殑Netscape嫻嬭瘯閫氳繃錛?
瀵逛簬瀹㈡埛绔殑琛ㄥ崟楠岃瘉錛岃繖涓熀浜嶫avaScript緙栧啓鐨刅alidator鍩烘湰涓婇兘鍙互婊¤凍錛屽叿浣撳彲浠ヤ笅杞紺HM鏂囦歡錛?A class="" HREF="/Files/sunny/sunny.rar" target=_blank>Validator.CHM涓嬭澆
紺轟緥錛?/P>
榪愯浠g爜妗?BR>
[Ctrl+A 鍏ㄩ儴閫夋嫨 鎷瘋礉鍒頒竴涓猦tml鏂囦歡鍚庢墦寮]