锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 銆銆鏈嬌鐢ˋJAX涔嬪墠 銆銆鐩墠澶у鏁扮殑Struts搴旂敤閮芥槸鏍囧噯鐨?#8220;濡傚悓涓涓鉤闈㈡枃妗g殑web欏甸潰”鐨勭粨鏋勩傚鏋滀綘鎯蟲ā浠夸竴浜涙闈㈠簲鐢ㄧ▼搴?姣斿閭d簺浣跨敤Java Swing錛孷isual Basic錛屾垨鑰匘elphi寤虹珛鐨勫簲鐢ㄧ▼搴?錛岄偅涔堜綘鏈変袱涓夋嫨:浣犲彲浠ュ彂閫佹墍鏈夌殑鍙兘浣滀負欏甸潰鐨勪竴閮ㄥ垎琚姹傜殑淇℃伅錛屼嬌鐢ㄥぇ閲忕殑JavaScript鏉ユ搷浣滃叾鍔ㄦ佺殑鏄劇ず(涓涓緢鎱㈠茍涓旈潪浼佷笟綰ava鐨勬柟娉?;鎴栬呬綘鍙互涓嶆敼鍙樺艦寮忓湴鎻愪氦鍒板悗鍙版湇鍔″櫒(涓縐嶆湁鏁堢殑鏂規硶) 銆侫JAX鎻愰珮緇欎綘浜嗚瀺鍚堝墠闈㈢殑鏈浣寵В鍐蟲柟妗?鍔ㄦ佺殑欏甸潰錛屼絾鏄ぇ澶氭暟鐨勫簲鐢ㄦ槸鍦ㄤ綘鐨剋eb鏈嶅姟鍣ㄧ殑Java紼嬪簭鏉ュ鐞嗙殑銆?/p>
銆銆AJAX 101 銆銆AJAX鍜岀幇鏈夌殑鍔ㄦ丠TML鎶鏈潪甯哥浉浼鹼紝騫跺湪鍏朵笂澧炲姞浜嗕竴涓彂閫佸埌“鍚庡彴”鏈嶅姟鍣ㄧ殑璇鋒眰鏉ヨ幏鍙栭渶瑕佺殑鏂扮殑鎴栬呮洿鏂扮殑淇℃伅銆侫JAX鐨勬満鍒跺湪鍏朵粬鍦版柟宸茬粡鏈夎緇嗙殑璇存槑鈥曗曡鏌ョ湅鏈枃鍚庣殑Resources鏉ヨ幏鍙栨洿澶氥備絾鏄綘鑷沖皯闇瑕佺煡閬? 銆銆鍦ㄤ綘鐨凷truts搴旂敤涓嬌鐢ˋJAX 銆銆浣犻槄璇諱簡鏈枃錛岀劧鍚庝綘浼氬浣跨敤AJAX鏉ュ垱寤哄姩鎬佺殑web欏甸潰鎰熷叴瓚o紝騫朵笖鎯崇煡閬撳浣曞皢瀹冨姞鍏ュ埌浣犵殑Struts搴旂敤涓傝繖鍙槸閫夋嫨涔嬩竴銆傞偅涔堜綘浼氬浣曢夋嫨鍛? 銆銆鎴戜滑閫夋嫨鍦⊿truts搴旂敤涓鍔燗JAX鐨勪紭鍔挎槸: 銆銆瀹炵幇鏂規 銆銆鎴戜滑濡備綍鐪熸鐨勮瘡褰繪垜浠殑閫夋嫨鍛?鎴戜滑棣栧厛搴旇娉ㄦ剰涓涓?#8220;鏍囧噯鐨?#8221;(娌℃湁AJAX)Struts搴旂敤鏄浣曞伐浣滅殑銆傚湪姝ゅ簲鐢ㄤ腑錛屼竴涓竴鑸殑浜嬩歡嫻佺▼濡備笅: 銆銆鐜版湁鐨凷truts搴旂敤 銆銆涓涓紨紺轟簨浠舵祦紼嬬殑綆鍗昐truts搴旂敤鍙互鍦ㄤ互涓嬪湴鍧涓嬭澆: struts-non-ajax.zip銆傛鍩轟簬Struts鐨勫簲鐢紝鏄熀浜庣敤鎴風殑杈撳叆鏄劇ず鎴栬呴殣钘忚摑鑹插拰緇胯壊鐨勮〃鏍箋傚浘1鏄劇ず浜嗚澆鍏ュ垵濮嬮〉闈㈢殑鐢婚潰銆傚浘2鏄劇ず浜嗙敤鎴瘋緭鍏ュ煎茍鐐瑰嚮浜嗘彁浜ゅ悗鐨勭敾闈€傝櫧鐒剁畝鍗曪紝浣嗗畠宸茬粡瓚充互琛ㄧず涓涓猄truts鐨勫伐浣滄祦紼嬨?/p>
銆銆鍥?1. 娌℃湁AJAX鐨勪緥瀛?鍒濆灞忓箷 銆銆鍥?2. 娌℃湁AJAX鐨勪緥瀛?杈撳叆鍊煎茍鐐瑰嚮浜嗘彁浜?/p>
鏈嶅姟鍣ㄧ鐨勪唬鐮佹槸:涓涓猄truts Action浣跨敤struts-config.xml 涓畾涔夌殑鍊艱漿鍙戝埌(鐩稿悓鐨?JSP銆傝繖涓緥瀛愪唬鐮佷腑涓浜涢渶瑕佹敞鎰忕殑鍦版柟鏄?
銆銆璇ュ簲鐢ㄥ茍娌℃湁浠諱綍“閿欒”銆傜被浼肩殑Struts欏圭洰濂藉騫撮兘鏄繖鏍峰仛鐨勩備絾鏄紝鎴戜滑濡備綍鍦ㄤ笉娣誨姞澶嶆潅鐨凧avaScript鎴栬呴綣佺殑琛ㄥ崟鎻愪氦鐨勫墠鎻愪笅錛屼負姝ゅ簲鐢ㄥ鍔犲姩鎬佺殑鍏冪礌鍛? 銆銆鎴戜滑鐨勭涓涓猄truts AJAX搴旂敤 銆銆瑙傚療涓嬩笅闈㈢殑鍥?鍜屽浘4銆傜涓鐪肩湅涓婂幓錛屽畠浠拰鍓嶉潰鐨勪緥瀛愭病鏈夎鏄庡尯鍒傚畠浠殑涓嶅悓涔嬪鍦ㄤ簬錛岄〉闈㈣澆鍏ュ悗(鍥?)鐒跺悗鏂囨湰妗嗕腑鐨勫兼敼鍙樹簡錛岀獥浣撹嚜鍔ㄦ彁浜よ屼笉鏄劇ず絀虹櫧鐨勶紝鐒跺悗鍦ㄥ浘4涓樉紺虹粨鏋溿傛櫘閫氱殑鎻愪氦鎸夐挳浠嶇劧鍦紝浣犱篃鍙互閫夋嫨浣跨敤瀹冦?/p>
銆銆鍥?3. 欏甸潰杞藉叆鍚庣殑AJAX渚嬪瓙 銆銆鍥?4. AJAX璋冪敤鍚庣殑AJAX渚嬪瓙 銆銆娣誨姞AJAX鏄嚭濂囩殑瀹規槗銆傛湇鍔″櫒绔殑浠g爜鍜屽墠闈㈢殑渚嬪瓙鏄竴鏍風殑: 涓涓猄truts鐨凙ctionForm鏉ュ悗鍘繪暟鎹紝涓涓猄truts鐨凙ction鏉ユ墽琛岄渶瑕佺殑浠誨姟(渚嬪錛屽瓨鍌ㄦ暟鎹簱)鐒跺悗杞彂鍒伴傚綋鐨凧SP欏甸潰鏉ユ樉紺虹粨鏋溿?/p>
銆銆緇х畫 銆銆濡傛灉浣犲笇鏈涘氨姝ゅ仠姝㈤槄璇?璺寵繃榪欎釜渚嬪瓙鐨勫伐浣滆鏄?錛屼絾鏄繖閲岀殑鏄拰浣犻渶瑕佽漿鎹綘鐨凷truts搴旂敤鍒頒竴涓猄truts-AJAX搴旂敤鍚屾牱鐨勯鏍? 銆銆JavaScript鏂規硶retrieveURL()璋冪敤鏈嶅姟鍣ㄧ殑Struts(閫氳繃URL)錛岃幏鍙朖SP鍝嶅簲錛岀劧鍚庢洿鏂版樉紺洪〉闈腑鐨?鏍囩涓殑閮ㄥ垎銆傚氨鏄繖涔堢畝鍗? 銆銆AJAX瑙e喅鏂規鐨勭粏鑺?/p>
銆銆鎴戜滑灝嗕緥瀛愬彉涓篈JAX-Struts搴旂敤鐨勬椂鍊欙紝闇瑕佷笁涓彉鍖? 銆銆鎴戜滑灝嗚緇嗙殑璇存槑涓婇潰鐨勬瘡涓姝ャ?/p>
鍙戦丄JAX璇鋒眰鍒版湇鍔″櫒
銆銆鏈変袱涓柟娉?鍦ㄤ笅闈㈠垪鍑?鐢ㄤ簬鍙戦佽姹傚埌鏈嶅姟鍣ㄣ?/p>
銆銆· retrieveURL()鏂規硶鑾峰緱鏈嶅姟鍣ㄧ殑URL鍜孲truts form銆俇RL鐢ㄤ簬浣跨敤AJAX錛宖orm鐨勫肩敤浜庝紶閫掑埌鏈嶅姟鍣ㄣ?/p>
銆銆· getFormAsString()鏂規硶鐢ㄤ簬灝唕etrieveURL()涓璮orm鍛藉悕鐨勫肩粍瑁呮垚鏌ヨ瀛楃涓詫紝騫跺彂閫佸埌鏈嶅姟鍣ㄣ?/p>
銆銆浣跨敤鏂規硶寰堢畝鍗曪紝浣跨敤onclick()/onChange()浜嬩歡鏉ヨЕ鍙憆etrieveURL()鏇存柊鏄劇ず銆?/p>
銆銆鍦ㄨ繖涓や釜鏂規硶涓湁涓浜涙湁瓚g殑涓滆タ銆?/p>
銆銆鍦╮etrieveURL()鏂規硶涓紝req.onreadystatechange = processStateChange (娉ㄦ剰錛屾病鏈夋嫭鍙?榪欎竴琛屾潵鍛婅瘔嫻忚鍣ㄥ湪鏈嶅姟鍣ㄥ搷搴斿埌杈劇殑鏃跺欒皟鐢╬rocessStateChange()鏂規硶(璇ユ柟娉曞皢鍦ㄥ悗闈粙緇?銆俽etrieveURL()鏂規硶涓?鐜板湪宸茬粡鏄疉JAX鐨勬爣鍑嗕簡)鍚屾牱鍐沖畾鏄嬌鐢↖E嫻忚鍣?ActiveX)榪樻槸浣跨敤Netscape/Mozilla (XmlHttpRequest) 鏉ュ疄鐜拌法嫻忚鍣ㄥ吋瀹廣?/p>
銆銆getFormAsString()鏂規硶灝咹TML form杞崲鎴愬瓧絎︿覆榪炴帴鍦║RL鍚庨潰(榪欐牱灝卞厑璁告垜浠彂閫丠TTP GET璇鋒眰)銆傝繖涓瓧絎︿覆鏄粡榪囪漿鎹㈢殑(姣斿錛岀┖鏍艱漿鎹㈡垚%20絳?錛屽茍涓旀槸涓涓猄truts鑳藉皢鍏剁粍瑁呮垚ActionForm鐨勬牸寮?騫朵笉闇瑕丼truts娓呮鐨勬槑鐧借繖涓槸鏉ヤ箣AJAX鐨勮姹?銆傛敞鎰忥紝鍦ㄦ湰渚嬩腑鎴戜滑浣跨敤HTTP GET錛屼嬌鐢℉TTP POST鐨勬柟娉曚篃鏄被浼肩殑銆?/p>
function retrieveURL(url,nameOfFormToPost) { //灝唘rl杞崲鎴愬瓧絎︿覆 //璋冪敤AJAX // 闈濱E嫻忚鍣?br>req = new XMLHttpRequest(); req = new ActiveXObject("Microsoft.XMLHTTP"); getFormAsString() 鏄竴涓?#8220;縐佹湁” 鏂規硶錛屽湪retrieveURL()涓嬌鐢ㄣ?/p>
function getFormAsString(formName){ //璁劇疆榪斿洖瀛楃涓?br>returnString =""; //鍙栧緱琛ㄥ崟鐨勫?br>formElements=document.forms[formName].elements; //寰幆鏁扮粍錛岀粍瑁卽rl for(var i=formElements.length-1;i>=0; --i ){ //榪斿洖瀛楃涓?br>return returnString; 銆銆鍒扮幇鍦ㄤ負姝紝鎴戜滑瀛︿範榪囦簡浣跨敤JavaScript鏉ュ畬鎴怉JAX璋冪敤(鍓嶉潰鍒楀嚭)錛孲truts Action錛孉ctionForm浠ュ強JSP(鍩烘湰娌℃湁鍙樺寲錛屽彧鏄鍔犱簡鏍囩)銆備負浜嗗畬鍠勬垜浠Struts-AJAX欏圭洰鐨勪簡瑙o紝鎴戜滑闇瑕佷簡瑙d笁涓敤浜庢牴鎹湇鍔″櫒榪斿洖鐨勭粨鏋滆屾洿鏂伴〉闈㈢殑JavaScript鏂規硶銆?/p>
function processStateChange() { if (req.readyState == 4) { // 瀹屾垚 //灝嗗搷搴旂殑鏂囨湰鍒嗗壊鎴怱pan鍏冪礌 //浣跨敤榪欎簺Span鍏冪礌鏇存柊欏甸潰 } else { function replaceExistingWithNewHtml //寰幆newTextElements //鍒ゆ柇鏄惁浠?if(newTextElements[i]. //鑾峰緱span鐨勫悕瀛? 璁劇疆鍦ㄧ涓鍜岀浜屼釜寮曞彿涔嬮棿 //鑾峰緱鍐呭錛嶅湪絎竴涓?gt;鏍囪鍚庣殑鎵鏈夊唴瀹?br>startContentPos=newTextElements[i]. //鐜板湪鏇存柊鐜版湁鐨凞ocument涓殑鍏冪礌錛? //鍒嗗壊鏂囨。 //澶勭悊姣忎釜鍏冪礌 //鍒犻櫎鎺夌涓涓猻pan鍚庨潰鐨勫厓绱?br>spanPos = returnElements[i]. //濡傛灉鎵懼埌鍖歸厤鐨勶紝鑾峰緱span鍓嶇殑鍐呭 銆銆鏂扮殑鎺у埗嫻?/p>
銆銆娣誨姞浠ヤ笅鐨凧avaScript浠g爜鍒版垜浠殑搴旂敤涓紝浠ヤ笅鐨勬楠ゅ皢鍦ㄦ湇鍔″櫒鍜屾祻瑙堝櫒涓墽琛屻?/p>
銆銆鍦ㄤ綘鐨勫簲鐢ㄤ腑璁捐AJAX 銆銆浠ヤ笂鎻忚堪鐨凧avaScript鏂規硶鑳藉湪澶у鏁扮殑搴旂敤涓嬌鐢紝鍖呮嫭姣旀垜浠殑渚嬪瓙澶嶆潅寰楀鐨勩備絾鏄紝鍦ㄤ嬌鐢ㄤ箣鍓嶏紝浣犻渶瑕佹敞鎰忎互涓嬪嚑鐐? 銆銆· 閬垮厤澶嶅埗浠g爜錛屾渶濂藉湪鍒濆鍖栬姹?濡傦紝鏄劇ず瀹屾暣鐨勯〉闈?鍜孉JAX(鏇存柊閮ㄥ垎欏甸潰)璇鋒眰涓嬌鐢ㄧ浉鍚岀殑Struts Action鍜孞SP銆?/p>
銆銆·鍦ㄥ叕鍏辯殑Action(鎺у埗鍣?涓紝鍐沖畾JSP欏甸潰(鎵鏈夌殑JSP欏甸潰鎴栬呭叾涓殑涓閮ㄥ垎)涓殑涓涓尯鍩熼渶瑕佷紶閫佸埌嫻忚鍣ㄣ傞氳繃鍦╳eb鏈嶅姟鍣ㄧ殑session鎴栬匒ctionForm涓瀹氭爣璁版潵璁㎎SP欏甸潰鐭ラ亾鍝簺閮ㄥ垎闇瑕佹彁浜ゃ?/p>
銆銆· 鍦↗SP涓紝浣跨敤Struts 鎴栬匤STL鏍囩鏉ュ喅瀹氭彁浜ょ殑HTML鍖哄煙銆?/p>
銆銆浣跨敤AJAX鐨勬湰渚嬪瓙錛屽彲浠ュ湪浠ヤ笅涓嬭澆: struts-Ajax.zip 銆銆緇撹 銆銆AJAX鎶鏈厑璁告垜浠湪鍒涘緩鍜屼嬌鐢╳eb搴旂敤鐨勬椂鍊欏畬鍏ㄧ殑鏀瑰彉銆傛湰鏂囦粙緇嶄簡涓涓畝鍗曠殑鎶鏈紝鍦ㄧ幇鏈夌殑Struts搴旂敤涓鍔燬truts鐨勫鐞嗐傚畠鍏佽鎴戜滑鍒╃敤鎴戜滑宸叉湁鐨勪笢瑗匡紝涓嶄粎浠呮槸浠g爜錛岃繕鍖呮嫭浜嗗紑鍙戠殑鎶鑳姐備綔涓轟竴涓ソ鐨勪駭鍝侊紝瀹冨悓鏍峰厑璁告垜浠啓鍑烘洿娓呮櫚錛屾洿鍏風Щ妞嶆х殑Java Struts搴旂敤銆?/p>
鐗堟潈澹版槑錛歍echtarget鑾稭atrix鎺堟潈鍙戝竷,濡傞渶杞澆璇瘋仈緋籑atrix
鍘熷洜鏄?hibernate 浣跨敤c3p0榪炴帴orcale鏁版嵁鍚庝笉浼氶噴鏀?錛?c3p0鐨勬渶澶ц繛鎺ユ暟涓?00錛屼絾鏄劇劧c3p0鏈塀ug錛屽鑷存暟鎹簱榪炴帴姹犱笉澶熺敤錛屽鑷磋繘紼嬮攣姝匯?br />鍚庢崲Proxool鍚庯紝瑙傚療姝e父銆?br />
涓嬮潰杞紩鍏跺畠緗戝弸鏂囩珷璇存槑c3p0 銆?Proxool銆?dbcp 鐨勫尯鍒?
<!-- JDBC椹卞姩紼嬪簭 -->
2<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 鏁版嵁搴撶敤鎴峰悕 -->
3<property name="connection.username">root</property> <!-- 鏁版嵁搴撳瘑鐮?nbsp;-->
涓婇潰鐨勪竴孌甸厤緗紝鍦?span class="hilite2" style="background-color: #ffffff">c3p0鍜?span class="hilite1" style="background-color: #ffffff">dbcp涓紝閮芥槸蹇呴渶鐨勶紝鍥犱負hibernate浼氭牴鎹笂榪扮殑閰嶇疆鏉ョ敓鎴恈onnections錛屽啀浜ょ粰c3p0鎴?span class="hilite1" style="background-color: #ffffff">dbcp綆$悊.
1 C3P0
鍙渶鍦╤ibernate.cfg.xml涓姞鍏?
<property name="c3p0.min_size">5</property>
2<property name="c3p0.max_size">30</property>
3<property name="c3p0.time_out">1800</property>
4<property name="c3p0.max_statement">50</property>
5
榪樻湁鍦╟lassespath涓姞鍏?span class="hilite2" style="background-color: #ffffff">c3p0-0.8.4.5.jar
2 dbcp
鍦╤ibernate.cfg.xml涓姞鍏?
<property name="dbcp.maxActive">100</property>
2<property name="dbcp.whenExhaustedAction">1</property>
3<property name="dbcp.maxWait">60000</property>
4<property name="dbcp.maxIdle">10</property>
5
6<property name="dbcp.ps.maxActive">100</property>
7<property name="dbcp.ps.whenExhaustedAction">1</property>
8<property name="dbcp.ps.maxWait">60000</property>
9<property name="dbcp.ps.maxIdle">10</property>
10
榪樻湁鍦╟lassespath涓姞鍏ommons-pool-1.2.jar 鍜宑ommons-dbcp-1.2.1.jar.
3 proxool
鐢變簬鏁版嵁搴揷onnection鍦ㄨ緝闀挎椂闂存病鏈夎闂笅浼氳嚜鍔ㄦ柇寮榪炴帴錛屽鑷存祻瑙堝嚭閿欙紝澧炲姞proxool浣滀負鏁版嵁搴損ool銆傚畠鏈夎嚜鍔ㄨ繛鎺ュ姛鑳姐?br />1)銆佷粠http://proxool.sourceforge...涓嬭澆proxool錛岄噴鏀緋roxool.jar鍒癢EB-INF/lib
2)銆佸湪hibernate.cfg.xml涓鍔狅細
<property name="hibernate.proxool.pool_alias">dbpool</property>
2<property name="hibernate.proxool.xml">proxool.xml</property>
3<property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
4
3)銆佸湪涓巋ibernate.cfg.xml鍚岀駭鐩綍錛坰rc鏍圭洰褰曚笅錛夊鍔爌roxool.xml鏂囦歡錛?br />
<?xml version="1.0" encoding="utf-8"?>
2<!-- the proxool configuration can be embedded within your own application's.
3 Anything outside the "proxool" tag is ignored. -->
4<something-else-entirely>
5 <proxool>
6 <alias>dbpool</alias>
7 <!--proxool鍙兘綆$悊鐢辮嚜宸變駭鐢熺殑榪炴帴-->
8 <driver-url>
9 jdbc:mysql://127.0.0.1:3306/wlsh?characterEncoding=GBK&useUnicode=true&autoReconnect=true </driver-url>
10 <driver-class>com.mysql.jdbc.Driver</driver-class>
11 <driver-properties>
12 <property name="user" value="root" />
13 <property name="password" value="123456" />
14 </driver-properties>
15 <!-- proxool鑷姩渚﹀療鍚勪釜榪炴帴鐘舵佺殑鏃墮棿闂撮殧(姣),渚﹀療鍒扮┖闂茬殑榪炴帴灝遍┈涓婂洖鏀?瓚呮椂鐨勯攢姣?/span>-->
16 <house-keeping-sleep-time>90000</house-keeping-sleep-time>
17 <!-- 鏈灝戜繚鎸佺殑絀洪棽榪炴帴鏁?/span>-->
18 <prototype-count>5</prototype-count>
19 <!-- 鍏佽鏈澶ц繛鎺ユ暟,瓚呰繃浜嗚繖涓繛鎺ワ紝鍐嶆湁璇鋒眰鏃訛紝灝辨帓鍦ㄩ槦鍒椾腑絳夊欙紝鏈澶х殑絳夊緟璇鋒眰鏁扮敱maximum-new-connections鍐沖畾-->
20 <maximum-connection-count>100</maximum-connection-count>
21 <!-- 鏈灝忚繛鎺ユ暟-->
22 <minimum-connection-count>10</minimum-connection-count>
23 </proxool>
24</something-else-entirely>
25
浜庡湪hibernate3.0涓紝宸茬粡涓嶅啀鏀寔dbcp浜嗭紝hibernate鐨勪綔鑰呭湪hibernate.org涓紝鏄庣‘鎸囧嚭鍦ㄥ疄璺典腑鍙戠幇dbcp鏈?BUG,鍦ㄦ煇浜涚鎯呬細浜х敓寰堝絀鴻繛鎺ヤ笉鑳介噴鏀撅紝鎵浠ユ姏寮冧簡瀵筪bcp鐨勬敮鎸併傝嚦浜巆3p0錛屾湁璇勮璇村畠鐨勭畻娉曚笉鏄渶浼樼殑錛屽洜涓虹綉涓婃煡璧勬枡寰楃煡錛氭湁緗戝弸鍋氫簡涓涓疄楠岋紝鍦ㄥ悓涓欏圭洰涓垎鍒敤浜嗗嚑涓父鐢ㄧ殑榪炴帴姹狅紝鐒跺悗嫻嬭瘯鍏舵ц兘錛屽彂鐜癱3p0鍗犵敤璧勬簮姣旇緝澶э紝鏁堢巼涔熶笉楂樸傛墍浠ワ紝鍩轟簬涓婅堪鍘熷洜錛宲roxool涓嶅皯琛屽鎺ㄨ崘浣跨敤錛岃屼笖鏆傛椂鏉ヨ錛屾槸璐熼潰璇勪環鏄渶灝戠殑涓涓傚湪涓夋槦涓篃鏈夐」鐩槸鐢╬roxool鐨勩備粠鎬ц兘鍜屽嚭閿欑巼鏉ヨ錛宲roxool紼嶅井姣斿墠涓ょ濂戒簺銆侰3P0錛岀ǔ瀹氭т技涔庝笉閿欙紝鍦ㄨ繖鏂歸潰浼間箮鏈夊緢濂界殑鍙g銆傝嚦浜庢ц兘錛屽簲璇ヤ笉鏄渶濂界殑錛岀畻鏄腑瑙勪腑鐭╃殑綾誨瀷銆?
銆銆Proxool鐨勫彛紕戜技涔庡緢濂斤紝涓嶅ぇ瑙佸埌璐熼潰鐨勮瘎浠鳳紝浠庡畼鏂硅祫鏂欎笂鏉ョ湅錛屾湁璁稿鏈夌敤鐨勭壒鎬у拰鐗圭偣錛屼篃鏄澶氫漢鎺ㄨ崘鐨勩?br />
]]>
寰堟樉鐒惰繖鏄竴涓病鏈夋壘鍒板搴旂殑綾繪枃浠剁殑寮傚父銆?br />
榪樻湁涓や釜鍖卌ommons-pool.jar鍜宑ommons-dbcp-1.2.1.jar闇瑕佸紩鍏ュ埌宸ョ▼涓?/span>
]]>
AJAX鏄?#8220;寮傛鐨凧avaScript鍜孹ML”鐨勭緝鍐欍傝繖鏄竴欏規妧鏈紝鑰屼笉鏄竴涓Struts涓鏍風殑妗嗘灦銆備負浠涔堝湪AJAX鍛ㄥ洿浼氭湁榪欎箞澶氱殑鍏蟲敞鍛?榪欐槸鍥犱負AJAX浣縲eb欏甸潰鐪嬭搗鏉ュ茍涓嶅儚涓涓鉤闈㈢殑鏂囨。錛岃屾洿鍍忕敤鎴鋒墍鏈熸湜鐨勫妗岄潰搴旂敤鐨勫姩鎬丟UI搴旂敤紼嬪簭銆侫JAX鎶鏈兘鍦ㄥ緢澶氱殑嫻忚鍣ㄤ笂浣跨敤(鍖呮嫭IE鍜孨etscape/Mozilla)銆傚畠宸茬粡涓篗icrosoft(鐢ㄤ簬Outlook鐨剋eb瀹㈡埛绔?鍜孏oogle(鐢ㄦ埛Google Maps鍜孏mail)鎵浣跨敤銆?
url=url+getFormAsString(nameOfFormToPost);
if (window.XMLHttpRequest) {
req.onreadystatechange = processStateChange;
try {
req.open("GET", url, true);
} catch (e) {
alert("Server Communication Problem\n"+e);
}
req.send(null);
} else if (window.ActiveXObject) {
// IE
if (req) {
req.onreadystatechange=processStateChange;
req.open("GET", url, true);
req.send();
}
}
}
//鍍?/strutsaction.do&name=value'榪欐牱鐨勬牸寮?/p>
//杞寲姣忎竴涓?br>returnString+="&"
+escape(formElements[i].name)+"="
+escape(formElements[i].value);
}
}
if (req.status == 200) { // 鍝嶅簲姝e父
spanElements =
splitTextIntoSpan(req.responseText);
replaceExistingWithNewHtml(spanElements);
alert("Problem with server response:\n "
+ req.statusText);
}
}
}
replaceExistingWithNewHtml() 鏄負processStateChange()浣跨敤鐨?#8220;縐佹湁”鏂規硶銆?/p>
(newTextElements){
for(var i=newTextElements.length-1;i>=0;--i){
indexOf("-1){
//紜span鍏冪礌鏄互涓嬬殑鏍煎紡
//NewContent
startNamePos=newTextElements[i].
indexOf('"')+1;
endNamePos=newTextElements[i].
indexOf('"',startNamePos);
name=newTextElements[i].
substring(startNamePos,endNamePos);
indexOf('>')+1;
content=newTextElements[i].
substring(startContentPos);
// 紜繚鏂囨。瀛樺湪璇ュ厓绱?br>if(document.getElementById(name)){
document.getElementById(name).
innerHTML = content;
}
}
}
splitTextIntoSpan() 鏄負processStateChange() 浣跨敤鐨?#8220;縐佹湁”鏂規硶銆?br>function splitTextIntoSpan(textToSplit){
returnElements=textToSplit.
split("")
for(var i=returnElements.length-1;i>=0;--i){
indexOf("
if(spanPos>0){
subString=returnElements[i].
substring(spanPos);
returnElements[i]=subString;
}
}
return returnElements;
}
浣滆?浣滆?Paul Browne;pawenwen(浣滆呯殑blog:http://blog.matrix.org.cn/page/pawenwen)
璇戞枃:鐐瑰嚮
]]>
2.寤虹珛欏圭洰:
寤虹珛欏圭洰tomcat/webapps/TestFCKeditor.
3.灝咶CKeditor2.4瑙e帇緙?br>灝咶CKeditor2.4瑙e帇緙?灝嗘暣涓洰褰旻CKeditor澶嶅埗鍒伴」鐩殑鏍圭洰褰曚笅錛屽茍灝嗚В鍘嬬緝鍑烘潵鐨勬枃浠跺すfckeditor閲嶅懡鍚嶄負FCKeditor
鐩綍緇撴瀯涓猴細tomcat/webapps/TestFCKeditor/FCKeditor
鐒跺悗灝咶CKeditor-2.3.zip錛坖ava錛夊帇緙╁寘涓璡web\WEB-INF\lib\鐩綍涓嬬殑涓や釜jar鏂囦歡鎷峰埌欏圭洰鐨刓WEB-INF\ lib\鐩綍涓嬨傛妸鍏朵腑鐨剆rc鐩綍涓嬬殑FCKeditor.tld鏂囦歡copy鍒癟estFCKedit/WEB-INF/涓?/p>
4.鍚堝茍web.xml:
灝咶CKeditor-2.3.zip鍘嬬緝鍖呬腑\web\WEB-INF\鐩綍涓嬬殑web.xml鏂囦歡鍚堝茍鍒伴」鐩殑\WEB-INF\鐩綍涓嬬殑web.xml鏂囦歡涓?/p>
5. 淇敼鍚堝茍鍚庣殑web.xml鏂囦歡
淇敼鍚堝茍鍚庣殑web.xml鏂囦歡錛屽皢鍚嶄負SimpleUploader鐨凷ervlet鐨別nabled鍙傛暟鍊兼敼涓簍rue錛?br>浠ュ厑璁鎬笂浼犲姛鑳斤紝Connector Servlet鐨刡aseDir鍙傛暟鍊肩敤浜庤緗笂浼犳枃浠跺瓨鏀劇殑浣嶇疆銆?br>鍦╳eb.xml鏈鍚庢坊鍔犳爣絳懼畾涔?
<taglib>
<taglib-uri>/TestFCKeditor</taglib-uri>
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location>
</taglib>
鐜板湪鐨剋eb.xml鏂囦歡娌℃湁<taglib>鏍囩浜嗭紝搴旇鐩存帴鍦╦sp鏂囦歡涓嬌鐢細<%@ taglib uri="
6. 鏄犲皠: 8.鍒犻櫎鏃犵敤鏂囦歡 9.淇敼閰嶇疆錛?br>鎵撳紑/FCKeditor/fckconfig.js FCKConfig.ImageBrowserURL FCKConfig.FlashBrowserURL FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ; 10.鍏跺畠 FCKConfig.TabSpaces = 0 ; 鏀逛負FCKConfig.TabSpaces = 1 ; 鍗沖湪緙栬緫鍣ㄥ煙鍐呭彲浠ヤ嬌鐢═ab閿?/p>
濡傛灉浣犵殑緙栬緫鍣ㄨ繕鐢ㄥ湪緗戠珯鍓嶅彴鐨勮瘽錛屾瘮濡傝鐢ㄤ簬鐣欒█鏈垨鏄棩璁板洖澶嶆椂錛岄偅灝變笉寰椾笉鑰冭檻瀹夊叏浜嗭紝 FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField', 榪欎篃鏄敼榪囩殑鎶婇紶鏍囧彸閿殑“閾炬帴銆佸浘鍍忥紝FLASH錛屽浘鍍忔寜閽?#8221;鍔熻兘閮藉幓鎺夈?/p>
銆銆鎵懼埌錛?FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; <%-- 娣誨姞鏂囦歡/TestFCKeditor/show.jsp: 閰嶇疆閫夐」: AutoDetectLanguage=true/false 鑷姩媯嫻嬭璦 瑙e喅涓婁紶涔辯爜: ----------------------------------------------------------------another 鎴戠殑寮鍙戠幆澧冩槸ubuntu7.04, 緋葷粺榛樿緙栫爜鏄痷tf-8, 闂涓錛歑ML request error: Internel Server Error(500) 鍑虹幇閿欒鐨勫湴鏂規槸鍦細鐐規彃鍏ュ浘鐗囷紝鐐笲rowse鎸夐挳鐨勬椂鍊欙細 鎵捐祫鏂欙細http://lamono.javaeye.com/blog/49135 FCKeditor-java娌℃湁寰堝ソ鐨勮В鍐充腑鏂囬棶棰樸傞渶瑕佹垜浠慨鏀瑰畠鐨勬簮浠g爜鍚庨噸鏂扮紪璇戞墦鍖呫傛墦鍖呰繃紼嬪涓嬶細 3銆?鎶妕omcat瀹夎鐩綍涓?server/lib涓殑catalina-ant.jar鎷瘋礉鍒?WEB-INF/lib鐩綍 涓嬨?br>4銆?鎵撳紑build.xml 榪愯ant浠誨姟dist, 灝卞彲浠ョ敓鎴愭柊鐨凢CKeditor-2.3.jar鍖?/p>
闂涓夛細 涓婁紶鏃舵柊寤虹殑涓枃鐩綍鍏ㄩ儴涔辯爜銆?铏界劧涓婁紶鍒版湇鍔″櫒涓婄殑鏂囦歡鍚嶆甯革紝浣嗗湪JSP欏甸潰鐐逛笅杞介摼鎺ユ椂鏂囦歡鍚嶄貢鐮佸鑷翠笉鑳芥甯鎬笅杞姐?/p>
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true" / 鎴戝彧璇曚簡鏂規硶涓錛岄棶棰樿В鍐籌紒 榪欐牱, FCKeditor緇堜簬鍙互姝e父浣跨敤浜嗐傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘?br>=================================================================
涓婇潰鏂囦歡涓袱涓猻ervlet鐨勬槧灝勫垎鍒負錛?editor/filemanager/browser/default/connectors/jsp/connector
鍜?editor/filemanager/upload/simpleuploader錛岄渶瑕佸湪涓や釜鏄犲皠鍓嶉潰鍔犱笂/FCKeditor錛?br>鍗蟲敼涓?FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector鍜?br>/FCKeditor/editor/filemanager/upload/simpleuploader銆?br>榪欎袱涓悕瀛楁牴鎹綘鏀懼湪宸ョ▼涓殑FCKeditor鏂囦歡澶瑰悕縐拌屽畾銆傘?/p>
7.淇敼skin鏂囦歡澶?br>榪涘叆skin鏂囦歡澶癸紝濡傛灉浣犳兂浣跨敤fckeditor榛樿鐨勮繖縐嶅ザ榛勮壊錛?br>閭e氨鎶婇櫎浜哾efault鏂囦歡澶瑰鐨勫彟涓や釜鏂囦歡澶圭洿鎺ュ垹闄?錛堝緩璁笉鍒犻櫎錛屼互鍚庤鐢ㄥ埌鍏朵腑鐨勪竴涓枃浠跺す錛?/p>
鍒犻櫎/FCKeditor/鐩綍涓嬮櫎fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml鍥涗釜鏂囦歡浠ュ鐨勬墍鏈夋枃浠訛紝淇濈暀鏂囦歡澶筫ditor
鍒犻櫎鐩綍/editor/_source,
鍒犻櫎/editor/filemanager/browser/default/connectors/涓嬬殑鎵鏈夋枃浠?br>鍒犻櫎/editor/filemanager/upload/涓嬬殑鎵鏈夋枃浠?br>鍒犻櫎/editor/lang/涓嬬殑闄や簡fcklanguagemanager.js錛堟垜涓嬭澆鐨勬病鏈夎繖涓枃浠訛級, en.js, zh.js, zh-cn.js鍥涗釜鏂囦歡鐨勬墍鏈夋枃浠?/p>
淇敼 FCKConfig.DefaultLanguage = 'zh-cn' ;
鎶奆CKConfig.LinkBrowserURL絳夌殑鍊兼浛鎹㈡垚浠ヤ笅鍐呭錛?br>FCKConfig.LinkBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;
fckconfig.js鎬婚厤緗枃浠訛紝鍙敤璁板綍鏈墦寮錛屼慨鏀瑰悗灝嗘枃浠跺瓨涓簎tf-8 緙栫爜鏍煎紡銆傛壘鍒幫細
鍦ㄥ墠鍙板崈涓囦笉瑕佷嬌鐢―efault鐨則oolbar錛岃涔堣嚜瀹氫箟涓涓嬪姛鑳斤紝瑕佷箞灝辯敤緋葷粺宸茬粡瀹氫箟濂界殑Basic錛?br>涔熷氨鏄熀鏈殑toolbar錛屾壘鍒幫細
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
'Smiley','SpecialChar','Replace','Preview'] ] ;
榪欐槸鏀硅繃鐨凚asic錛屾妸鍥懼儚鍔熻兘鍘繪帀錛屾妸娣誨姞閾炬帴鍔熻兘鍘繪帀錛屽洜涓哄浘鍍忓拰閾炬帴鍜宖lash鍜屽浘鍍忔寜閽坊鍔犲姛鑳介兘鑳借鍓嶅彴
欏電洿鎺ヨ闂拰涓婁紶鏂囦歡錛?fckeditor榪樻敮鎸佺紪杈戝煙鍐呯殑榧犳爣鍙抽敭鍔熻兘銆?/p>
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
鍔犱笂鍑犵鎴戜滑甯哥敤鐨勫瓧浣?br>FCKConfig.FontNames
= '瀹嬩綋;榛戜綋;闅朵功;妤蜂綋_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
11.娣誨姞鏂囦歡
娣誨姞鏂囦歡 /TestFCKeditor/test.jsp:
<%@ page language="java" import="com.fredck.FCKeditor.*" %>
<%@ taglib uri="/TestFCKeditor" prefix="FCK" %>
<script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script>
涓夌鏂規硶璋冪敤FCKeditor
1.FCKeditor鑷畾涔夋爣絳?(蹇呴』鍔犲ご鏂囦歡 <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> )
2.script鑴氭湰璇█璋冪敤 (蹇呴』寮曠敤 鑴氭湰鏂囦歡 <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> )
3.FCKeditor API 璋冪敤 (蹇呴』鍔犲ご鏂囦歡 <%@ page language="java" import="com.fredck.FCKeditor.*" %> )
--%>
//鏍囩璋冪敤鏂瑰紡
<%--
<form action="show.jsp" method="post" target="_blank">
<FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"
width="700"
height="500"
skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"
toolbarSet = "Default"
>
input
</FCK:editor>
<input type="submit" value="Submit">
</form>
--%>
//JS璋冪敤鏂瑰紡
<form action="show.jsp" method="post" target="_blank">
<table border="0" width="700"><tr><td>
<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px">input</textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ;
oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = "Default" ;
oFCKeditor.ReplaceTextarea();
</script>
<input type="submit" value="Submit">
</td></tr></table>
</form>
//FCKeditor API 璋冪敤
<%--
<form action="show.jsp" method="post" target="_blank">
<%
FCKeditor oFCKeditor ;
oFCKeditor = new FCKeditor( request, "content" ) ;
oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;
oFCKeditor.setValue( "input" );
out.println( oFCKeditor.create() ) ;
%>
<br>
<input type="submit" value="Submit">
</form>
--%>
<%
String content = request.getParameter("content");
out.print(content);
%>
12.嫻嬭瘯
嫻忚http://localhost:8080/TestFCKeditor/test.jsp
鏈鍚庢敞鎰忋傘備笉鍚岀殑鐗堟湰 鍙橀噺鍚嶇О鍙兘涓嶄竴鏍楓傝鍙傝冧綘浣跨敤鐨凙PI鏂囨。
BaseHref="" 鐩稿閾炬帴鐨勫熀鍦板潃
ContentLangDirection="ltr/rtl" 榛樿鏂囧瓧鏂瑰悜
ContextMenu=瀛楃涓叉暟緇?鍙抽敭鑿滃崟鐨勫唴瀹?br>CustomConfigurationsPath="" 鑷畾涔夐厤緗枃浠惰礬寰勫拰鍚嶇О
Debug=true/false 鏄惁寮鍚皟璇曞姛鑳?榪欐牱,褰撹皟鐢‵CKDebug.Output()鏃?浼氬湪璋冭瘯紿椾腑杈撳嚭鍐呭
DefaultLanguage="" 緙虹渷璇█
EditorAreaCss="" 緙栬緫鍖虹殑鏍峰紡琛ㄦ枃浠?br>EnableSourceXHTML=true/false 涓篢RUE鏃?褰撶敱鍙鍖栫晫闈㈠垏鎹㈠埌浠g爜欏墊椂,鎶奌TML澶勭悊鎴怷HTML
EnableXHTML=true/false 鏄惁鍏佽浣跨敤XHTML鍙栦唬HTML
FillEmptyBlocks=true/false 浣跨敤榪欎釜鍔熻兘,鍙互灝嗙┖鐨勫潡綰у厓绱犵敤絀烘牸鏉ユ浛浠?br>FontColors="" 璁劇疆鏄劇ず棰滆壊鎷懼彇鍣ㄦ椂鏂囧瓧棰滆壊鍒楄〃
FontFormats="" 璁劇疆鏄劇ず鍦ㄦ枃瀛楁牸寮忓垪琛ㄤ腑鐨勫懡鍚?br>FontNames="" 瀛椾綋鍒楄〃涓殑瀛椾綋鍚?br>FontSizes="" 瀛椾綋澶у皬涓殑瀛楀彿鍒楄〃
ForcePasteAsPlainText=true/false 寮哄埗綺樿創涓虹函鏂囨湰
ForceSimpleAmpersand=true/false 鏄惁涓嶆妸&絎﹀彿杞崲涓篨ML瀹炰綋
FormatIndentator="" 褰撳湪婧愮爜鏍煎紡涓嬬緝榪涗唬鐮佷嬌鐢ㄧ殑瀛楃
FormatOutput=true/false 褰撹緭鍑哄唴瀹規椂鏄惁鑷姩鏍煎紡鍖栦唬鐮?br>FormatSource=true/false 鍦ㄥ垏鎹㈠埌浠g爜瑙嗗浘鏃舵槸鍚﹁嚜鍔ㄦ牸寮忓寲浠g爜
FullPage=true/false 鏄惁鍏佽緙栬緫鏁翠釜HTML鏂囦歡,榪樻槸浠呭厑璁哥紪杈態ODY闂寸殑鍐呭
GeckoUseSPAN=true/false 鏄惁鍏佽SPAN鏍囪浠f浛B,I,U鏍囪
IeSpellDownloadUrl=""涓嬭澆鎷煎啓媯鏌ュ櫒鐨勭綉鍧
ImageBrowser=true/false 鏄惁鍏佽嫻忚鏈嶅姟鍣ㄥ姛鑳?br>ImageBrowserURL="" 嫻忚鏈嶅姟鍣ㄦ椂榪愯鐨刄RL
ImageBrowserWindowHeight="" 鍥懼儚嫻忚鍣ㄧ獥鍙i珮搴?br>ImageBrowserWindowWidth="" 鍥懼儚嫻忚鍣ㄧ獥鍙e搴?br>LinkBrowser=true/false 鏄惁鍏佽鍦ㄦ彃鍏ラ摼鎺ユ椂嫻忚鏈嶅姟鍣?br>LinkBrowserURL="" 鎻掑叆閾炬帴鏃舵祻瑙堟湇鍔″櫒鐨刄RL
LinkBrowserWindowHeight=""閾炬帴鐩爣嫻忚鍣ㄧ獥鍙i珮搴?br>LinkBrowserWindowWidth=""閾炬帴鐩爣嫻忚鍣ㄧ獥鍙e搴?br>Plugins=object 娉ㄥ唽鎻掍歡
PluginsPath="" 鎻掍歡鏂囦歡澶?br>ShowBorders=true/false 鍚堝茍杈規
SkinPath="" 鐨偆鏂囦歡澶逛綅緗?br>SmileyColumns=12 鍥劇紿楀垪鏁?br>SmileyImages=瀛楃鏁扮粍 鍥劇紿椾腑鍥劇墖鏂囦歡鍚嶆暟緇?br>SmileyPath="" 鍥劇鏂囦歡澶硅礬寰?br>SmileyWindowHeight 鍥劇紿楀彛楂樺害
SmileyWindowWidth 鍥劇紿楀彛瀹藉害
SpellChecker="ieSpell/Spellerpages" 璁劇疆鎷煎啓媯鏌ュ櫒
StartupFocus=true/false 寮鍚椂FOCUS鍒扮紪杈戝櫒
StylesXmlPath="" 璁劇疆瀹氫箟CSS鏍峰紡鍒楄〃鐨刋ML鏂囦歡鐨勪綅緗?br>TabSpaces=4 TAB閿駭鐢熺殑絀烘牸瀛楃鏁?br>ToolBarCanCollapse=true/false 鏄惁鍏佽灞曞紑/鎶樺彔宸ュ叿鏍?br>ToolbarSets=object 鍏佽浣跨敤TOOLBAR闆嗗悎
ToolbarStartExpanded=true/false 寮鍚槸TOOLBAR鏄惁灞曞紑
UseBROnCarriageReturn=true/false 褰撳洖杞︽椂鏄駭鐢烞R鏍囪榪樻槸P鎴栬匘IV鏍囪
鍦⊿impleUploaderServlet.java鍜孋onnectorServlet.java涓や釜鏂囦歡閲屾壘鍒?br>DiskFileUpload upload = new DiskFileUpload();
鍒嗗埆鍦ㄥ叾鍚庡姞鍏?upload.setHeaderEncoding("utf-8");
榪欐牱瑙e喅浜嗘枃浠朵笂浼犵殑涓枃涔辯爜闂.
浣嗘槸鍦ㄦ帶鍒跺彴鏄劇ず鐨勪腑鏂囧唴瀹硅繕鏄貢鐮?浣嗘槸娌″叧緋?鎴戜滑娌″繀瑕佸幓鐪嬫帶鍒跺彴涓嬬殑涓枃
FCKeditor2.4.2 Java鐗堜嬌鐢ㄨ鏄?br>涓嬭澆鍦板潃浠ュ強鍩烘湰閰嶇疆璇峰弬鑰冿細http://hi.baidu.com/wain19/blog/item/c33fb0fab74f24dfb48f312d.html
鏈熼棿錛屾湰浜洪亣鍒頒簡涓嬮潰榪欎簺闂錛?/p>
XML request error: Internel Server Error(500)
鎷瘋礉xalan.jar鍜宻erialize.jar鍒?WEB-INF/lib錛岄棶棰樿В鍐熾?/p>
1銆?鏂板緩涓涓獁eb宸ョ▼鍚嶅瓧涓篎CKeditor-java-2.3錛岀劧鍚庢妸FCKeditor-2.3-java.zip瑙e帇緙╁悗鐨勪唬鐮佹嫹璐濆埌宸ョ▼鐩綍涓嬨?br>2銆傚鏋滄槸鐢ㄧ殑Eclipse,浣跨敤蹇嵎閿瓹trl+Shift+R
鍦⊿impleUploaderServlet.java鍜孋onnectorServlet.java涓や釜鏂囦歡閲屾壘鍒?br>DiskFileUpload upload = new DiskFileUpload();
鍒嗗埆鍦ㄥ叾鍚庡姞鍏?upload.setHeaderEncoding("utf-8");
鐜板湪濡傛灉鐩存帴榪愯ant浠誨姟錛屼細鎶ヤ笅闈㈢殑閿欒錛?br>taskdef class org.apache.catalina.ant.DeployTask cannot be found
鎵懼埌
<property name="catalina.home"
淇敼鎴愪綘鑷繁鐨則omcat瀹夎鐩綍
<property name="catalina.home" value="/home/uniquejava/tool/tomcat5028/"/>
鎵懼埌
<taskdef name="deploy"
淇敼鎴愬涓嬪唴瀹?br> <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask">
<classpath refid="compile.classpath">
</classpath>
</taskdef>
浠ヤ笅涓轟釜浜哄師鍒?http://blog.csdn.net/nickshen3/
鎬庝箞灝咶CKeditor2.4浣跨敤鍦ㄨ嚜宸辯殑web涓?br>1. 鍦╳ebapps鍒涘緩test鏂囦歡澶廣倃ebapps\test
2. 灝嗕笅杞界殑FCKeditor2.3鐨凧ava鍖匜CKeditor-2.3.zip瑙e帇緙╋紝騫跺皢web鏂囦歡澶逛笅鐨勪袱涓枃浠跺す_samples錛學EB-INF鎷瘋礉鍒板垰鎵嶅緩绔嬬殑webapps\test涓嬨傚啀灝唖rc鏂囦歡澶逛笅鐨凢CKeditor.tld鎷瘋礉鍒癢EB-INF涓嬨?br>3. 鍦╳ebapps\test\涓嬪緩绔嬫枃浠跺すFCKeditor 銆?br>4. 灝嗗垰鎵嶄笅杞界殑 FCKeditor_2.4.3.zip 瑙e帇緙╋紝鐒跺悗灝唂ckeditor鏂囦歡澶逛笅鐨?editor錛堟枃浠跺す錛?fckconfig.js,fckeditor.js,fckstyles.xml,fcktemplates.xml銆傚洓涓枃浠舵嫹璐濆埌鍒氭墠寤虹珛鐨勬枃浠跺すFCKeditor涓嬨?br>5.淇敼test\_samples\jsp\sample02.jsp鏂囦歡錛屽皢鍘熸潵鐨?br> <FCK:editor id="EditorDefault" basePath="/FCKeditor/"
鏀逛負<FCK:editor id="EditorDefault" basePath="/test/FCKeditor/"銆備互鍚庝嬌鐢ㄧ殑鏃跺欏彧闇灝唗est鎹㈡垚欏圭洰鐨勫悕縐板嵆鍙?br>6.鎵撳紑tomcat銆傛祴璇?a href="http://localhost:8080/test/_samples/jsp/sample02.jsp">Http://localhost:8080/test/_samples/jsp/sample02.jsp
鍙﹀ 錛? http://www.tkk7.com/youxia/archive/2007/03/15/104077.html
榪欐牱瀛愮殑璇濓紝褰撳湪搴旂敤涓妸userLoginListener鍔犲叆鍒皊ession涓椂錛屽氨浼氳嚜鍔ㄦ妸鐢ㄦ埛淇℃伅鍔犲叆鍒扮紦鍐叉睜涓簡銆?br>濡傦細
session.setAttribute("userLoginListener",userLoginListener);
錛堝師鍒涳紝杞澆璇蜂繚鐣欐枃绔犲嚭澶?a id=Editor_Edit_hlEntryLink title="view: 鍔ㄦ乄EB搴旂敤涓殑鐢ㄦ埛SESSION綆$悊鏂規" href="http://www.tkk7.com/bnlovebn/archive/2007/07/04/128006.html" target=_blank>http://www.tkk7.com/bnlovebn/archive/2007/07/04/128006.html錛?br>
錛斻傞『渚挎妸JApplet涓婁紶鏂囦歡鐨勪唬鐮佷篃璐翠笂鏉?
JApplet绔ず渚?
sendRedirect()瀹為檯涓婃槸reponse.setStatus(302)鐨勫揩鎹鋒柟寮忥紝鍚庤呯敤浜庤緗瓾ttp鍝嶅簲鐨勭姸鎬佷唬鐮併?/span>
渚?鍦╯ervlet涓噸瀹氬悜
public void doPost(HttpServletRequest request,HttpServletResponse response)
聽 聽 throws ServletException,IOException
{
聽 聽 response.setContentType("text/html; charset=gb2312");
聽 聽 response.sendRedirect("/index.jsp");
}
鐢變簬response鏄痡sp欏甸潰涓殑闅愬惈瀵硅薄錛屾晠鍦╦sp欏甸潰涓彲浠ョ敤response.sendRedirect()鐩存帴瀹炵幇閲嶅畾浣嶃?br />娉ㄦ剰錛?br />(1).浣跨敤response.sendRedirect鏃訛紝鍓嶉潰涓嶈兘鏈塇TML杈撳嚭銆?br />榪欏茍涓嶆槸緇濆鐨勶紝涓嶈兘鏈塇TML杈撳嚭鍏跺疄鏄寚涓嶈兘鏈塇TML琚佸埌浜嗘祻瑙堝櫒銆備簨瀹炰笂鐜板湪鐨剆erver閮芥湁cache鏈哄埗錛屼竴鑸湪8K錛堟垜鏄JSP銆SERVER錛夛紝榪欏氨鎰忓懗鐫錛岄櫎闈炰綘鍏抽棴浜哻ache錛屾垨鑰呬綘浣跨敤浜唎ut.flush()寮哄埗鍒鋒柊錛岄偅涔堝湪浣跨敤sendRedirect涔嬪墠錛屾湁灝戦噺鐨凥TML杈撳嚭涔熸槸鍏佽鐨勩?br />(2).response.sendRedirect涔嬪悗錛屽簲璇ョ揣璺熶竴鍙eturn;
鎴戜滑宸茬粡鐭ラ亾response.sendRedirect鏄氳繃嫻忚鍣ㄦ潵鍋氳漿鍚戠殑錛屾墍浠ュ彧鏈夊湪欏甸潰澶勭悊瀹屾垚鍚庯紝鎵嶄細鏈夊疄闄呯殑鍔ㄤ綔銆傛棦鐒朵綘宸茬粡瑕佸仛杞悜浜嗭紝閭d箞鍚庣殑杈撳嚭榪樻湁浠涔堟剰涔夊憿錛熻屼笖鏈夊彲鑳戒細鍥犱負鍚庨潰鐨勮緭鍑哄鑷磋漿鍚戝け璐ャ?br />姣旇緝錛?br />(1).Request Dispatcher.forward()鏄鍣ㄤ腑鎺у埗鏉冪殑杞悜錛屽湪瀹㈡埛绔祻瑙堝櫒鍦板潃鏍忎腑涓嶄細鏄劇ず鍑鴻漿鍚戝悗鐨勫湴鍧錛?br />(2).response.sendRedirect()鍒欐槸瀹屽叏鐨勮煩杞紝嫻忚鍣ㄥ皢浼氬緱鍒拌煩杞殑鍦板潃錛屽茍閲嶆柊鍙戦佽姹傞摼鎺ャ傝繖鏍鳳紝浠庢祻瑙堝櫒鐨勫湴鍧鏍忎腑鍙互鐪嬪埌璺寵漿鍚庣殑閾炬帴鍦板潃銆?br />鍓嶈呮洿鍔犻珮鏁堬紝鍦ㄥ墠鑰呭彲浠ユ弧瓚抽渶瑕佹椂錛屽敖閲忎嬌鐢≧equestDispatcher.forward()鏂規硶.
娉細鍦ㄦ湁浜涙儏鍐典笅錛屾瘮濡傦紝闇瑕佽煩杞埌涓涓叾瀹冩湇鍔″櫒涓婄殑璧勬簮錛屽垯蹇呴』浣跨敤HttpServletResponse.sendRequest()鏂規硶銆?br />
3.<jsp:forward page="" />
瀹冪殑搴曞眰閮ㄥ垎鏄敱RequestDispatcher鏉ュ疄鐜扮殑錛屽洜姝ゅ畠甯︽湁RequestDispatcher.forward()鏂規硶鐨勫嵃璁般?br />
濡傛灉鍦?lt;jsp:forward>涔嬪墠鏈夊緢澶氳緭鍑?鍓嶉潰鐨勮緭鍑哄凡浣跨紦鍐插尯婊?灝嗚嚜鍔ㄨ緭鍑哄埌瀹㈡埛绔?閭d箞璇ヨ鍙ュ皢涓嶈搗浣滅敤,榪欎竴鐐瑰簲璇ョ壒鍒敞鎰忋?br />鍙﹀瑕佹敞鎰忥細瀹冧笉鑳芥敼鍙樻祻瑙堝櫒鍦板潃錛屽埛鏂扮殑璇濅細瀵艱嚧閲嶅鎻愪氦
4.JSP涓疄鐜板湪鏌愰〉闈㈠仠鐣欒嫢騫茬鍚?鑷姩閲嶅畾鍚戝埌鍙︿竴欏甸潰
鍦╤tml鏂囦歡涓紝涓嬮潰鐨勪唬鐮侊細
聽 <meta http-equiv="refresh" content="300; url=target.jsp">
聽 瀹冪殑鍚箟錛氬湪5鍒嗛挓涔嬪悗姝e湪嫻忚鐨勯〉闈㈠皢浼氳嚜鍔ㄥ彉涓簍arget.html榪欎竴欏點備唬鐮佷腑300涓哄埛鏂扮殑寤惰繜鏃墮棿錛屼互縐掍負鍗曚綅銆倀arger.html涓轟綘鎯寵漿鍚戠殑鐩爣欏?鑻ヤ負鏈〉鍒欎負鑷姩鍒鋒柊鏈〉銆?br />聽 鐢變笂鍙煡錛屽彲浠ラ氳繃setHeader鏉ュ疄鐜版煇欏甸潰鍋滅暀鑻ュ共縐掑悗,鑷姩閲嶅畾鍚戝埌鍙︿竴欏甸潰銆?br />聽 鍏抽敭浠g爜錛?br />聽 聽 聽 String content=stayTime+";URL="+URL;
聽 聽 聽 response.setHeader("REFRESH",content);
聽
ASP欏甸潰錛?br /><%response.redirect "欏甸潰璺緞"%>
鏈夊ソ鍑犵鏂規硶錛?br />(1)鍦ㄩ〉闈腑璺寵漿錛氬姞鍏ヤ互涓嬪彞瀛愶紝2縐掑悗璺沖埌test.html
聽聽 <meta HTTP-EQUIV=REFRESH CONTENT='2; URL=test.html'>
(2)2縐掑悗杞埌ly2.php
聽聽 <script>setTimeout("location.href="/home/ly2.php'",2000)</script>
(3)鍦╬hp涓敤header()鍑芥暟璺寵漿錛?br />聽聽 header("Location :http://www.xxx.com");
(4)鐢ㄤ竴涓寜閽紝鐐瑰嚮鍚庤煩杞細(5縐嶆寜閽?
聽
<input type=button value=Return onClick
="javascript:location.href('URL');">
聽聽 <input type=button value=Return onClick=
"javascript:window.location.href('URL');">
聽聽 <input type=button value=Return onClick
="javascript:window.location.replace('URL');">
聽聽 <input type=button value=Return onClick
="javascript:window.location.assign('URL');">
聽聽 <input type="button" value="Return" onClick
="window.location='URL'" /><!--榪欑鏈濂?->
鍐欏畬鍚庤皟璇曠殑榪囩▼涓紝鑰佹姤閿欙細java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream錛屽皯浜哻ommons-io.jar錛屽姞涓婂悗錛屽氨ok浜?br />
鍦–ontroller绔紝鍙互鐢ㄤ互涓嬫柟寮忓彇寰椾笂浼犵殑鏂囦歡錛屽彲浠ヤ笂浼犲涓枃浠訛細
聽public Set getMultipartFileForForm(HttpServletRequest req) {
聽聽MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
聽聽// CommonsMultipartFile file = (CommonsMultipartFile)
聽聽// multipartRequest.getFile("attach");//attach涓篺orm涓篺ile鐨刬d鍊?br />聽聽// MultipartHttpServletRequest multipartRequest =
聽聽// (MultipartHttpServletRequest)request;
聽聽Set fileset = new LinkedHashSet();
聽聽for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
聽聽聽String key = (String) it.next();
聽聽聽MultipartFile file = multipartRequest.getFile(key);
聽聽聽if (file.getOriginalFilename().length() > 0) {
聽聽聽聽fileset.add(file);
聽聽聽}
聽聽}
聽聽return fileset;
聽}