锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍘熸枃浣滆咃細tombkeeper[0x40]xfocus.org
鍒涘緩鏃墮棿錛?005.06.01 21:00
[鏈枃涓ョ杞澆]
Nokia 浠婂勾鏂板嚭鐨勬満鍣ㄤ腑錛岃鏁拌繖嬈?230韜潗姣旇緝濂姐傝嫍鏉¤屼笉綰ょ粏錛屽寑縐板張鐜茬彂鏈夎嚧銆?600灝辨槸鍥犱負韜潗宸紝鑰岃浜虹О涔嬩負鈥滆偉6鈥濓紝榪欎篃鏄垜鍧氬喅涓嶄拱 6600鐨勫師鍥犮?230鍑烘潵涔嬪悗錛屼漢浠緢蹇氨鎶婂師鏉?650鐨勨滃皬3鈥濊繖涓樀縐扮粰浜?230銆傗滀粠鏉ュ彧瑙佹柊浜虹瑧鈥濊繖涓亾鐞嗙敱姝ゅ彲瑙佷竴鏂戙?/font>
鎴戝懆涓錛堝氨鏄寳浜笅闆瑰瓙鐮告浜嗙墰鐨勯偅涓懆涓錛夋櫄涓婅窇鍒拌タ鍗曪紝涔頒簡涓閮ㄥ洖鏉ャ?/font>
涓嬮潰鏈潵鏄竴浠借嚜宸卞啓緇欒嚜宸辯湅鐨勫蹇樺綍鎬ц川鐨勬枃妗o紝娌℃兂鍒拌秺鍐欒秺澶氾紝灝辮冭檻搴旇鍏變韓鍑烘潵錛屼篃璁稿鍒漢鏈夌敤銆傝繖騫朵笉鏄竴浠絊ymbian鎵嬫満鍏ラ棬鏁欑▼錛屾墍浠ラ噷闈笉浼氭秹鍙娾滃浣曞畨瑁呰蔣浠垛濊繖鏍風殑鐭ヨ瘑銆傚彟澶栵紝濡傛灉浣犲噾宸х湅鍒頒簡榪欎喚鏂囨。錛屽茍鎵撶畻鎸夌収閲岄潰璇寸殑鍋氾紝閭d箞涓瀹氳鏄庣櫧錛岃繖閲岄潰鐨勫唴瀹瑰彲鑳界粰浣犲甫鏉ュ府鍔╋紝涔熷彲鑳藉甫鏉ュ洶鎵板拰楹葷儲錛岀棝鑻﹀拰涓嶅垢銆傛墍浠ユ垜騫朵笉榧撳姳鎴栬呮殫紺轟綘鎸夌収鏈枃鎵榪扮殑鍐呭榪涜浠諱綍瀹為檯鎿嶄綔錛屼篃涓嶅榪欎喚鏂囨。鍙兘瀵艱嚧鐨勪換浣曞悗鏋滆礋璐c傚鏋滀綘渚濈収鑷繁鐨勬剰鎰垮鎵嬫満榪涜浜嗘煇浜涙搷浣滐紝瀵艱嚧鏃犳硶姝e父浣跨敤錛岃鑷寸數Nokia瀹㈡湇錛?008800123銆?/font>
榪欎喚鏂囨。涓ぇ澶氭暟鍐呭涔熼傜敤浜?600/6670/7610絳塏okia鐨凷ymbian 70鏈哄瀷銆?/font>
1銆佷拱姘磋揣榪樻槸涔拌璐э紵
鎴戜粠鏉ュ氨涓嶅弽瀵逛拱姘磋揣銆備笉榪囪琛¢噺鐨勬槸錛屼拱姘磋揣鐪佷笅鏉ョ殑閽卞拰澧炲姞鐨勯闄╂垚鏈浉姣斿摢涓涓洿楂樸傛垜鐨処BM T30緇翠慨榪囦袱嬈★紝絎竴嬈℃槸鍥犱負鎴戞妸USB榧犳爣鎻掑埌緗戝彛閲岋紝瀵艱嚧鎹簡涓鍧椾富鏉匡紝絎簩嬈℃槸鎹簡涓狢PU椋庢墖銆傚鏋滆鑺遍挶緇翠慨鐨勮瘽錛屼及璁′笉鍦ㄥ皯鏁般備笉榪囨墜鏈哄拰絎旇鏈浉姣旇緝鏇村姞涓嶅鏄撳潖錛屼拱姘磋揣鑰屽鍔犵殑椋庨櫓鎴愭湰涔熷皬涓浜涖傚鏋滄槸涓涓鎵嬫満寰堜簡瑙g殑浜猴紝瀹屽叏鍙互鑰冭檻涔版按璐с?/font>
涔版按璐э紝涓昏鏄敞鎰忔満鍣ㄧ殑澶栧3鏈夋棤鍒掔棔錛屽睆騫曞唴閮ㄦ湁鏃犵伆灝樸傛按璐ф満鍣ㄥぇ澶氭槸鍦ㄦ病鏈夊寘瑁呯殑鎯呭喌涓嬪す甯﹁繘鏉ョ殑錛岃繖鏂歸潰寰堝鏄撳嚭闂銆?/font>
涔拌璐э紝涓昏鏄敞鎰忔満鍣ㄦ寜閿殑鎵嬫劅銆傛湁鏃跺欎釜鍒寜閿渶瑕佹牸澶栫敤鍔涙墠鑳芥寜涓嬪幓錛屾垨鑰呮劅瑙夋瘮杈冭蔣錛屼絾鍙堜笉鏄け鐏點傚洜涓鴻繖涓嶅睘浜庢晠闅滐紝鎵浠ヤ竴鏃﹀紑紲ㄤ箣鍚庢槸涓嶅彲鑳芥洿鎹㈢殑銆?/font>
3230閰嶄簡鑰蟲満錛屼拱鐨勬椂鍊欎竴瀹氳璇曞ソ銆傝蟲満榪欑被閰嶄歡涓鑸兘鏄鎵樺叾浠栧巶瀹剁敓浜х殑錛岃川閲忔帶鍒朵笉浼氭湁Nokia鑷繁閭d箞涓ユ牸銆?/font>
鍜屽叾瀹冨熀浜嶴60鐨勬墜鏈轟竴鏍鳳紝涓嬮潰榪欎簺鎺у埗鐮佸3230閮芥湁鏁堬細
*#7370# 紜噸緗郴緇燂紙淇楃О鈥滄牸鏈衡濓級
A銆佹妸鏃墮棿璋冩暣鍒?003騫?鏈堜箣鍓嶏紝璀璇?003騫?鏈堛?br />B銆佸垹闄?C:SystemDataapplications.dat 鍜?C:SystemDataNITZ.dat銆?br />C銆佹敞鍐屻?br />D銆佹妸緋葷粺鏃墮棿璋冨洖姝e父銆?/font>
3230浣滀負鏂板嚭鐨勬満鍨嬶紝鍦ㄧ孩澶栧吋瀹規т笂榪樻湁涓浜涢棶棰橈紝鍙兘絳変互鍚庡崌綰х郴緇熴備綔涓烘浛浠g殑瑙e喅鏂規錛屽彲浠ョ敤钃濈墮鏉ヨ繘琛屾枃浠朵紶杈撱?230鐨勮摑鐗欐ц兘涓嶉敊銆?/font>
3230鍙敮鎸佸崟澹伴亾鎾斁闊充箰錛岃嚦灝戝唴緗殑RealPlayer鍙兘浠ュ崟澹伴亾鎾斁闊充箰錛岃屼笖闊寵川騫朵笉濂姐傞偅浜涜涓轟拱浜?230灝卞彲浠ヤ涪鎺塎P3鐨勪漢瑕佸け鏈涗簡銆?/font>
濡傛灉鎯寵拷姹傛洿濂界殑澶氬獟浣撹〃鐜幫紝鎺ㄨ崘璐拱Moto e680i銆備環鏍兼瘮3230鐣ラ珮錛屼絾鏄湁320脳240鐨勫睆騫曞垎杈ㄧ巼錛屽洖鏀鵑煶璐ㄤ笉閫婁簬涓撲笟MP3鎾斁鍣紝鑰屼笖榪樻敮鎸佺珛浣撳0钃濈墮鑰蟲満錛丮oto灝嗗叾縐頒箣涓衡滀韓涔怭DA鈥濅笉鏄病閬撶悊鐨勩?/font>
3230鐨凢M鏀墮煶鏈烘槸绔嬩綋澹扮殑錛岄煶璐ㄤ笉閿欙紝鑷沖皯姣斿ぇ澶氭暟琚栫弽FM鏀墮煶鏈洪兘瑕佸ソ銆傚彲浠ョ敤涓枃瀛樺偍20涓閬撳悕縐幫紝涔熷氨鏄錛岃瀹氬ソ涔嬪悗錛屽彧瑕佺偣涓涓嬧滃寳浜枃鑹哄彴鈥濓紝灝變細鑷姩鏀跺惉87.6鍏嗚但銆?/font>
3230 鑷甫浜嗕竴涓煶璐ㄤ笉閿欑殑鎵0鍣紝鍦ㄥ箍鎾殑鏃跺欏彲浠ラ夋嫨鐢ㄦ壃澹板櫒鎴栬呰蟲満銆備絾鏄鏋滆蟲満涓嶆彃鍦ㄦ墜鏈轟笂錛屾槸涓嶈兘鍚姩鏀墮煶鏈哄姛鑳界殑錛屽洜涓鴻鍊熻蟲満綰垮綋澶╃嚎鐢ㄣ備俊鍙峰ソ鐨勬椂鍊欙紝澶╃嚎騫朵笉涓瀹氭槸蹇呴渶鐨勶紝鎵浠ユ垜璁や負灝嗘潵涓瀹氫細鏈変漢鍐欑▼搴忚В闄よ繖涓闄愬埗錛岀敋鑷沖彲鑳絅okia灝變細鍦ㄤ笅涓鐗堟湰涓幓闄ら檺鍒垛斺斿鏋滈檺鍒舵槸鍦ㄨ蔣浠墮噷鍋氱殑璇濄?/font>
涓嬮潰鏄寳浜湴鍖洪儴鍒嗙數鍙扮殑棰戠巼錛?/font>
87.6 鍖椾含浜烘皯騫挎挱鐢靛彴鏂囪壓鍙?br />88.2 涓浗鍥介檯騫挎挱鐢靛彴EasyFM
榪欎釜涓嶅ソ涓姒傝岃錛屼竴涓漢涓澶╄兘縐誨姩澶氳繙錛屽緱鍙栧喅浜庝粬鐢ㄤ粈涔堜氦閫氬伐鍏鳳紱鎵嬫満鐢墊睜鑳界敤澶氶暱鏃墮棿錛屽緱鍙栧喅浜庢庝箞鐢ㄣ?230鐨勭數姹犳槸BL-5B錛屾瘮7650鐨?BLB-2灝忎簡60 mAH錛屼絾鏄垜涓漢鎰熻3230鍏呮弧鐢電殑浣跨敤鏃墮棿鑷沖皯瑕佹瘮7650闀?0%~30%鈥斺斿綋鐒朵篃鍙兘鏄垜鐨勯敊瑙夈?/font>
浣滀負涓涓墜鏈烘潵璇達紝鎷嶇収鏁堟灉鐩稿綋涓嶉敊銆傞暅澶寸暩鍙樹笉澶э紝鎷嶆憚鍑虹殑1280脳960鐨勫浘鐗囧鏋滅緝灝忚嚦1024脳768錛屽嚑涔庡彲浠ユ嬁鏉ュ綋妗岄潰銆備簨瀹炰笂錛孨okia 鎵嬫満鐨勬媿鐓ф晥鏋滀竴鐩撮兘寰堝ソ錛屾垜鏇劇粡鐢ㄥ悓鏄?0涓囧儚绱犵殑7650鍜孌opod 535鍋氭瘮杈冦傜粨鏋?650鐨勯暅澶寸暩鍙樸佽壊褰╄繕鍘熴佺櫧騫寵 閮藉崰浜嗕笂椋庛傚挨鍏舵槸鐧藉鉤琛″拰鑹插僵榪樺師錛宒opod 535鐨勮〃鐜板彧鑳界敤鈥滄儴鈥濇潵褰㈠銆?/font>
3230鎷嶇収鍔熻兘姣旇緝澶х殑姣涚梾鏄歡榪熸瘮杈冮暱錛岃秴榪囦竴縐掗挓銆備篃灝辨槸璇達紝鐓х墖璁板綍鐨勬槸鎸変笅蹇棬涓縐掗挓鍚庣殑浜嬫儏銆傚彲鑳芥槸鍥犱負CPU榪愮畻鑳藉姏涓嶈凍瀵艱嚧鐨勩?/font>
鑷甫鐨勬憚鍍忚蔣浠跺彧鑳芥媿鎽勬渶澶у垎杈ㄧ巼176脳144鐨勫獎鍍忋備綔涓轟竴涓敮鎸佸瓨鍌ㄥ崱鐨勬満鍣ㄦ潵璇達紝榪欐槸寰堝け璐ョ殑銆傚綋鐒訛紝涔熷彲鑳芥槸鍥犱負3230鐨凜PU澶勭悊涓嶄簡鏇村ぇ騫呯殑瑙嗛銆?/font>
涓嶉敊銆傜郴緇熻嚜甯︽父鎴忓拰瀛樺偍鍗′腑鐨勫嚑嬈炬父鎴忕敾闈㈠拰鍙帺鎬ч兘寰堝ソ銆傚挨鍏舵槸鑷甫鐨凙gent V錛屼竴瀹氳浣撻獙涓涓嬫墠鐭ラ亾浠涔堝彨鏂版蹇點傛垜鏇劇粡鐢ㄨ璦鍚戝嚑涓湅鍙嬫弿榪頒簡榪欎釜娓告垙錛屽彲鏄粬浠湅鍒板疄闄呯殑鎯呭艦鏃惰繕鏄緢闇囨捈銆?/font>
Nokia騫舵病鏈夋妸3230璁捐鎴愯兘鑷繁鎹㈠3鐨勬満鍣紝鑷劧涔熸病鏈夊3鍙崲銆備絾闅忕潃3230鍑鴻揣閲忕殑澧炲姞錛屼竴瀹氫細鏈夌涓夋柟鍘傚鐢熶駭鐩稿簲鐨勫僵澹沖嚭鏉ャ備笉榪囦綘鍙兘闇瑕佷竴鎶奣5鐨勫唴鍏铻轟笣鍒銆?/font>
鍙互銆?230鏀寔POP鍜孖MAP鍗忚鐨勯偖綆便傚彟澶栵紝3230榪樻彁渚涗簡瀵筍SL/TLS/APOP鍔犲瘑鍗忚鐨勬敮鎸併傛垜鐢?230鍙互鎴愬姛鏀跺彂緇忚繃SSL鍔犲瘑鐨凣mail閭歡銆?/font>
鍙互銆備絾鏄拰7650涓嶅悓鐨勬槸錛?230鐨勭孩澶栧彛鍦ㄦ満鍣ㄧ殑鍙充晶闈㈣屼笉鏄《绔紝鎵浠ュ茍涓嶉傚悎浣滀負閬ユ帶鍣ㄦ潵鐢ㄣ?/font>
鍙互銆?230鏀寔RS-MMC鍗°俁S-MMC鏄疦okia鑷繁鍔涙帹鐨勪竴縐嶆爣鍑嗐傝繖縐嶅崱鍙湁閫氬父MMC鍗$殑涓鍗婂ぇ灝忥紝騫朵笖鍏煎MMC銆?/font>
3230鏀寔鐑彃鎷擱S-MMC銆傗滃瓨鍌ㄥ崱鈥濊繖涓簲鐢ㄧ▼搴忛噷鏈夆滃彇鍑哄瓨鍌ㄥ崱鈥濈殑鎸夐挳錛屾寜涓嬪茍紜鍚庯紝灝卞儚浜庡湪Windows鐨勨滃畨鍏ㄥ垹闄ょ‖浠垛濋噷鍒犻櫎涓涓猆鐩樹竴鏍楓傛満鍣ㄧ殑鍚庣洊鎵撳紑錛屼竴涓皬鎸夐挳闅忎箣鏉懼紑錛屼細鎵ц涓婅堪鍚屾牱鐨勬搷浣溿?/font>
鎴戣嚧鐢礜okia瀹㈡湇錛岄棶濂逛滑3230鏈澶氭敮鎸佸澶х殑鍗★紝濂逛滑鏄繖涔堣鐨勶細Nokia鑷繁鍙敓浜ф渶澶?28M鐨勫崱錛屽茍涓擭okia涓嶆帹鑽愪嬌鐢ㄧ涓夋柟鐨勫崱銆傛垜鍙堥噸澶嶄簡鎴戠殑闂錛岃鎴戞兂鐭ラ亾鏈哄櫒鏈韓璁捐鏀寔澶氬ぇ鐨勫崱銆傚ス浠垯鍙堥噸澶嶄簡鍒氭墠鐨勫洖絳斻傛垜絎笁嬈℃彁鍑洪棶棰橈紝騫跺己璋冩垜闂殑鏄満鍣ㄦ湰韜敮鎸佸澶х殑鍗★紝鑰屼笉鏄?Nokia鐢熶駭澶氬ぇ鐨勫崱錛屽ス浠垯蹇犲疄鍦板皢鍒氭墠鐨勫洖絳斿張浣滀簡涓渚塊噸澶嶃?/font>
浠庣涓夋柟娓犻亾寰楀埌鐨勬秷鎭槸3230鏈澶ф敮鎸? G鐨凴S-MMC鍗°傛垜鑺?90涔頒簡涓寮燢ingMax 256M鐨勫崱錛屽湪3230涓婂彲浠ュ緢姝e父鍦頒嬌鐢ㄣ備護鎴戝悆鎯婄殑鏄牸寮忓寲闈炲父蹇紝鍙敤浜嗕笉鍒?0縐掗挓鐨勬椂闂淬備互鍓嶅惉鍒漢璇達紝鏍煎紡鍖栦竴寮犲崱鑷沖皯闇瑕佹暟鍒嗛挓銆?/font>
涔頒簡鏂板崱涔嬪悗錛屽師閰嶇殑32M鍗″彲浠ョ暀鐫鐢ㄦ潵澶囦喚涓浜涢噸瑕佺殑涓漢淇℃伅銆?/font>
鏍規嵁鎴戠殑瀹為獙錛岃秴榪囦笁鍒嗕箣浜岀殑7650/3650杞歡鍙互鍦?230涓婃甯歌繍琛屻傞氬父鏉ヨ錛屽拰紜歡娌′粈涔堝叧緋葷殑鈥斺旇濡傝鐪嬪浘銆佺湅涔︾殑杞歡錛屽熀鏈兘鍙互榪愯錛涜屽拰紜歡鍏崇郴姣旇緝澶х殑杞歡錛岃濡傛媿鐓ц蔣浠躲佹潵鐢甸槻鐏杞歡錛屽垯閫氬父閮戒笉鑳芥甯稿伐浣溿?/font>
涓嶈繃寰堝杞歡宸茬粡鎺ㄥ嚭浜嗛拡瀵?230絳夋柊嬈炬墜鏈虹殑鍗囩駭鐗堟湰銆傚湪鏈潵涓変釜鏈堝唴錛屾垜浠兂鐢ㄧ殑澶ч儴鍒嗚蔣浠跺簲璇ラ兘鍙互鎵懼埌銆?/font>
鑳藉湪6600/6670/7610涓婅繍琛岀殑杞歡鍩烘湰閮藉彲浠ユ甯稿伐浣滀簬3230銆?/font>
寰堜笉閿欍?230鐢ㄤ簡65535鑹茬殑TFT灞忥紝鑹插僵鍜屽姣斿害閮戒笉閿欍傚睆騫曚寒搴︿篃寰堥珮錛屼互鑷充簬鎴戣鎶婁寒搴﹁皟鍒?0%鎵嶄笉瑙夊緱鍒虹溂銆?/font>
鑵捐鍦╭q.com涓婃彁渚涗簡Symbian鐗堟湰鐨凲Q瀹㈡埛绔紝涓嶈繃榪樻病鏈夐拡瀵?230鐨勶紝涓嬮潰榪欎釜閾炬帴涓殑鏂囦歡鏄拡瀵?650/3650鐨勶紝緇忔垜嫻嬭瘯錛屽伐浣滄甯革細
涓嶈繃鎴戣寰楋紝閽堝6600/6670/7610鐨勭増鏈簲璇ヤ篃鍙互浣跨敤錛岃屼笖搴旇鏇村吋瀹逛竴浜涳紝姣曠珶瀹冧滑鍜?230閮芥槸鍩轟簬Symbian 7鐨勬満鍣紝鑰?650/3650鏄疭ymbian 6錛?br />
http://mgame.qq.com/mqq/qq_6600.SIS
浠ュ墠鐗堟湰鐨凙gile Messenger絳塎SN瀹㈡埛绔湪3230涓婇兘涓嶈兘姝e父浣跨敤錛屾渶鏂扮殑Turbo MSN 1.9宸茬粡鍙互寰堝ソ鍦板湪3230涓婅繍琛屻?/font>
鏄殑銆備篃璁告槸Nokia鎯崇粰鍐欓椆閾冭蔣浠剁殑灝忓叕鍙哥暀鐐圭敓瀛樼┖闂達紝榪欎釜浠?650鏃朵唬灝辮浜鴻療鐥呯殑闂涓鐩翠繚鎸佷簡涓嬫潵銆備笉榪囩幇鍦ㄥ彲浠ヨ嚜瀹氫箟闂歸挓鎵浣跨敤鐨勯搩澹頒簡銆傚彟澶栵紝鎴戝彂鐜癢orld Clock Pro鍦?230涓婁笉鑳借皟閾冨0澶у皬錛屽ソ鍦ㄩ粯璁ょ殑澹伴煶瓚沖鍝嶄簡銆?/font>
灝忔妧宸э細濡傛灉浣犱笉鎯充粎浠呬負浜嗚兘澶氬畾涔夊嚑涓椆閾冨氨棰濆瀹夎涓涓椆閾冭蔣浠剁殑璇濓紝鍙互鍦?230鐨勨滄棩鍘嗏濅腑寤虹珛甯﹂椆閾冪殑綰︿細鎻愰啋錛岃屼笖鍙互璁懼畾闂歸搩闊充箰錛岃瀹氭瘡澶┿佹瘡鍛ㄣ佹瘡鏈堣繕鏄瘡騫存彁閱掍竴嬈°?/font>
浠や漢鍚冩儕鐨勬槸錛岀幇鍦ㄦ垜浠珶鐒跺彲浠ュ湪Symbian涓婅繍琛孭ython錛?br />
http://www.forum.nokia.com/main/0,,034-821,00.html
鏄殑錛岃繖鏄釜緋熺硶鐨勯棶棰樸傛垜浠旂粏鐪嬩簡涓涓嬶紝搴旇鏄睆騫曚笅鏂圭殑瀵嗗皝嫻風壞涓嶅鍘氬鑷寸殑銆傛垜宸茬粡涔頒簡T5鐨勫唴鍏铻轟笣鍒錛屽噯澶囪嚜宸辨潵闄ゅ皹騫跺姞鍘氳繖鍧楁搗緇典簡銆?/font>
鍙互錛屼綘闇瑕佷笅杞絅okia PC濂椾歡錛?br />
http://nds2.nokia.com/files/support/china/phones/software/Nokia_PC_Suite_641_zh_sc.exe
濡傛灉浣犲緢騫歌繍錛岃璇嗗彟涓涓湁3230鎵嬫満鐨勪漢錛屽彲浠ヤ粠浠栭偅閲屾嫹璐濅竴浠姐傝涓嶇劧錛屽氨寰楀幓鎵綨okia鐨勫鏈嶏紝鎴戞兂榪欎釜鏈嶅姟搴旇鏄厤璐圭殑銆?/font>
姣旇緝濂囨殑鏄紝3230鍙彁渚涗簡涓浜汥EMO杞歡鐨勪笅杞斤紝鑰屾病鏈夋寮忕殑杞歡涓嬭澆欏甸潰錛屼笉榪囪繖娌″叧緋伙紝7610鍜?681絳塖60鏈哄櫒鐨勮蔣浠訛紝3230鍩烘湰閮藉彲浠ョ敤錛?/font>
http://www.nokia.com.cn/cn/support/phones/models/n7610/downloads/downloads_game.shtml
娉ㄦ剰錛?681鐨勯偅涓滈煶涔愭挱鏀懼櫒鈥濊櫧濂斤紝浣嗘槸3230鐢ㄤ笉浜嗐傚洜涓?681鐨凪P3瑙g爜鏄‖浠跺疄鐜扮殑銆?/font>
鎴戜釜浜鴻寰椾笅闈㈣繖浜涜蔣浠惰繕涓嶉敊錛?/font>
鎺屼笂鍥句功錛?br />
http://nds2.nokia.com/files/support/china/phones/software/ebook_6600.SIS
鎺屼笂鍥句功PC绔蔣浠訛細
鏌ュ彿綺劇伒錛?br />
http://nds2.nokia.com//files/support/china/phones/software/Vois_2011.sis
Quick Word錛?br />
http://nds2.nokia.com/files/support/china/phones/software/Lara_MMC_Quickword_China_china.SIS
Quick Point錛?br />
http://nds2.nokia.com/files/support/china/phones/software/Lara_MMC_Quickpoint_China_china.SIS
Quick Sheet錛?br />
http://nds2.nokia.com/files/support/china/phones/software/Lara_MMC_Quicksheet_China_china.SIS
Quick Office錛堝寘鍚笂榪頒笁涓蔣浠訛級錛?br />
http://nds2.nokia.com/files/support/china/phones/software/Quickoffice.SIS
3230鍒氬嚭鏉ョ殑鏃跺欙紝鏈変漢鍐欐枃绔犺榪?230鐨勫嚑澶х己鐐癸紝鍏朵腑涓涓姜鐘跺氨鏄病鏈夆滈攣灞忛敭鈥濄侼okia鐨勮佺敤鎴烽兘鐭ラ亾錛氭墍鏈夌殑Nokia鐩存澘鎵嬫満閮芥槸鍏堟寜紜閿啀鎸?灝遍攣灞忥紝鍐嶆鍚屾牱鎿嶄綔灝卞紑閿併?/font>
ARM4T錛屼富棰?23MHz銆傛垜璁や負瀵逛簬涓涓澶勭悊1280脳960澶у皬鍥劇墖鐨勬満鍣ㄦ潵璇達紝200MHz鏄瘮杈冩伆褰撶殑鈥斺旇櫧鐒朵細澶氳楄垂涓浜涚數鍔涖?/font>
榪欐槸涓涓瑙c傚鏋淣okia鐨勭爺鍙戜漢鍛樹細鐘繖縐嶆剼锠㈤敊璇紝濡傛灉Nokia鐨凲C閮ㄩ棬榪炶繖縐嶆剼锠㈤敊璇兘媯鏌ヤ笉鍑烘潵錛岄偅鎴戜滑灝變笉浼氱煡閬揘okia榪欎釜鍚嶅瓧浜嗐?/font>
寰堝浜鴻涓哄湪鎯呮櫙妯″紡涓叧閾冨0鐨勬柟娉曞氨鏄皢鈥滈搩澹扮被鍨嬧濊緗負鈥滄棤澹扳濄傝繖閮芥槸琚滈搩澹扮被鍨嬧濊繖涓腑鏂囩炕璇戠粰璇鐨勩傝繖閲岀殑鑻辨枃鍘熸枃鏄淩inging Type鈥濄傗淩inging鈥濅笉搴旂悊瑙d負鍚嶈瘝鈥滈搩澹扳濓紝鑰屽簲璇ユ槸Ring鐨勮繘琛屾椂鎴栬呮槸鍔ㄥ悕璇嶃傗淩inging Type鈥濇紜殑緲昏瘧鏄滃搷閾冪被鍨嬧濄備篃灝辨槸璇達紝璁劇疆鐨勬槸鏉ョ數鎻愮ず錛堝寘鎷搩澹板拰闇囧姩錛夋寜鐓т粈涔堟柟寮忓伐浣溿?/font>
濡傛灉璁劇疆涓衡滆繛緇搷閾冣濓紝灝辨剰鍛崇潃鎵璁劇疆鐨勬潵鐢墊彁紺猴紙鍖呮嫭閾冨0鍜岄渿鍔級閮戒細琚驚鐜Е鍙戯紱濡傛灉璁劇疆涓衡滄棤澹扳濓紝鑷劧鏄繛閾冨0甯﹂渿鍔ㄩ兘娌℃湁浜嗐?/font>
濡傛灉瑕佽緗竴涓病鏈夐搩澹頒絾鏄湁闇囧姩鐨勬儏鏅ā寮忥紝鍙渶鍦ㄢ滄潵鐢甸搩澹扳濅腑閫夋嫨鈥滃叧鈥濓紝灝嗏滈搩澹扮被鍨嬧濊緗負鈥滆繛緇搷閾冣濆嵆鍙?/font>
娌′簨騫插鎵撳鏈嶇數璇?008800123錛屾妸閭d簺闂鍙嶅鍚戝鏈嶅弽鏄犮傛渶鍚庤繖浜涙剰瑙佷細琚粺璁★紝濡傛灉鏈夊緢澶氫漢嬈$殑鍙嶆槧錛岄偅涔堝氨浼氫紭鍏堣鑰冭檻瑙e喅銆?/font>
Nokia鎵嬫満浠ュ瀷鍙風殑絎竴涓暟瀛楁潵鍒掑垎緋誨垪錛?230鏄?鈥濈郴鍒楋紝浠h〃鍏鋒湁鐙壒鍔熻兘錛屽瑙傛瘮杈冨鎬紝鏈夌壒鍒己鍖栧姛鑳界殑鏈哄櫒銆傚鏃忔垚鍛樻湁3650銆?300銆?200絳夈?/font>
S60 鏄疭eries60鐨勭緝鍐欙紝涓嶆槸Symbian 6.0鐨勭緝鍐欍係eries60鎸囩殑鏄墜鏈虹殑鎿嶄綔鐣岄潰銆傜浉搴旂殑榪樻湁Series40錛?230i絳夋満鍨嬶級銆丼eries80 錛?210/9300/9500絳?緋誨垪鏈哄瀷錛夈傞櫎3230涔嬪錛?650/3650/6600/6670/7610絳夋満鍨嬩嬌鐢ㄧ殑涔熸槸Series60鐨勭晫闈€?/font>
璇哄熀浜氬鎴鋒湇鍔$綉鐐規煡璇細
http://www1.nokia.com.cn/carecenter
涓嬮潰鏄寳浜殑鏈嶅姟鐐癸細
鍚嶇О 鍦板潃 鐢佃瘽
璇哄熀浜氫笓鍗栧簵瀹㈡埛鏈嶅姟閮?瑗垮煄鍖哄悗鍗婂琛?6鍙鳳紙瑗跨洿闂ㄥ晢涓氬ぇ鍘?灞傦級 010-66110268 So far, we have looked at the JavaScript to do the AJAX call (listed above) and the Struts
By adding the above JavaScript code to our application, the following steps now happen on the server and on the browser. The JavaScript outlined above can cope with the way Struts is used in most applications, including those that are much more complex than our simple example. However, you may find that following the points below makes it easier to write and use your code: An updated version of this project, with AJAX enabled, can be downloaded here: struts-Ajax.zip AJAX techniques promise to completely revolutionize how we build and use web applications. This article showed a simple technique to add AJAX behavior to existing Struts applications. It allows us to reuse our existing investment, not only in code but also in developer skills. As a nice by-product, it also allows us to write cleaner, more reusable, Java Struts applications. Take a look at the Figures 3 and 4 below. At first glance, they seem similar to our previous ones. The difference is that after then screen loads (Figure 3) and the values in the textboxes are changed, the screen automatically updates without the screen going blank, giving the result as per Figure 4. The normal Submit button is also still there, should you choose to use it.
Adding this AJAX behavior is surprisingly easy. The server-side code is the same as usual: a Struts The JavaScript function We will look at each of these in more detail. To use, simply add the There are some interesting items going on in both methods. Within the The
鍘熸枃閾炬帴錛?a >http://blog.xfocus.net/index.php?op=Default&postCategoryId=118&blogId=9
鏇存柊鏃墮棿錛?005.07.11 22:20
2銆佷拱鐨勬椂鍊欒娉ㄦ剰鍝簺錛?/font>
3銆?230鏈夊摢浜涙帶鍒剁爜鍙互鐢紵
*#7780# 鎭㈠鍑哄巶榛樿璁劇疆
*#06# 鏄劇ずIMEI鐮?br />*#0000# 鏌ヨ緋葷粺杞歡鐗堟湰鍙婃洿鏂版棩鏈?br />*#2820# 鏌ヨ钃濈墮璁懼鍦板潃
4銆丳siloc緋誨垪杞歡瀹夎騫舵敞鍐屼箣鍚庯紝鐢ㄤ簡涓孌墊椂闂村張鎻愮ず娉ㄥ唽錛岃緭鍏ユ敞鍐岀爜涔嬪悗錛屾樉紺衡淎pplication Expired鈥濄傚浣曡В鍐籌紵
5銆佹垜鏃犳硶鐢?230鐨勭孩澶栧拰鏌愪簺鍏跺畠綰㈠璁懼浜掍紶鏂囦歡錛岃繖鏄庝箞鍥炰簨錛?/font>
6銆?230鐨凪P3鎾斁鍔熻兘鎬庝箞鏍鳳紵
7銆?230鐨凢M鏀墮煶鏈哄姛鑳芥庝箞鏍鳳紵
88.7 涓浗鍥介檯騫挎挱鐢靛彴
90.0 涓ぎ浜烘皯騫挎挱鐢靛彴 絎笁濂楄妭鐩枃鑹鴻皟棰?br />91.5 涓浗鍥介檯騫挎挱鐢靛彴EasyFM
96.6 涓ぎ浜烘皯騫挎挱鐢靛彴 絎簩濂楄妭鐩粡嫻庨閬?br />97.4 鍖椾含浜烘皯騫挎挱鐢靛彴闊充箰鍙?br />99.6 涓ぎ浜烘皯騫挎挱鐢靛彴絎簩濂楄妭鐩?br />101.8 涓ぎ浜烘皯騫挎挱鐢靛彴 絎洓濂楄妭鐩皯鏃忓箍鎾?br />103.9 鍖椾含浜烘皯騫挎挱鐢靛彴浜ら氬彴
106.1 涓ぎ浜烘皯騫挎挱鐢靛彴 絎竴濂楄妭鐩患鍚堥閬?/font>
8銆?230鐨勭數姹犺兘鐢ㄥ闀挎椂闂達紵
9銆?230鐨勬媿鐓с佹憚鍍忔ц兘鎬庝箞鏍鳳紵
10銆?230鑷甫鐨勬父鎴忔庝箞鏍鳳紵
11銆?230鑳戒笉鑳芥洿鎹㈠悇縐嶅僵澹籌紵
12銆?230鑳芥敹鍙戠數瀛愰偖浠朵箞錛?/font>
13銆?230鍙互瀹夎綰㈠閬ユ帶杞歡涔堬紵
14銆?230鍙互鎻掓墿灞曞瓨鍌ㄥ崱涔堬紵
15銆?650/3650鍜?600/6670/7610涓婄殑杞歡鍙互鍦?230涓婃甯歌繍琛屼箞錛?/font>
16銆?230鐨勫睆騫曟庝箞鏍鳳紵
17銆佹垜鑳界敤3230涓奞Q鍜孧SN涔堬紵
http://mgame.qq.com/mqq/qq.SIS
http://mgame.qq.com/mqq/qq_6670.SIS
http://mgame.qq.com/mqq/qq_7610.SIS
18銆?230鐨勯椆閽熻繕鏄彧鑳借瀹氫竴涓椆閾冧箞錛?/font>
19銆侀櫎浜咼ava錛岃繕鏈夊埆鐨勮繍琛屽湪3230涓婄殑鑴氭湰璇█涔堬紵
20銆?230鏄惁鍍?650閭f牱錛屽睆騫曢潰鏉塊噷瀹規槗榪涚伆灝橈紵
21銆?230鑳藉拰PC鍚屾涔堬紵
22銆佹垜鎶婇殢鏈哄甫鐨凴S-MMC鍗′腑鐨勭▼搴忓垹闄や簡錛岀幇鍦ㄥ張鎯崇敤榪欎簺紼嬪簭浜嗭紝璇ユ庝箞鍔烇紵
23銆丯okia緗戠珯涓婃彁渚涗簡3230杞歡涓嬭澆涔堬紵
http://www.nokia.com.cn/cn/support/phones/models/n6600/downloads/downloads_game.shtml
http://www.nokia.com.cn/cn/support/phones/models/n6681/downloads/downloads_game.shtml
http://www.nokia.com.cn/cn/support/phones/models/n6670/downloads/downloads_game.shtml
http://www.nokia.com.cn/cn/support/phones/models/n3650/downloads/downloads_game.shtml
http://nds2.nokia.com/files/support/china/phones/software/ebook_pc_sw.zip
24銆?230鎬庝箞閿佸睆錛?/font>
25銆?230鐨凜PU鏄粈涔堬紵
26銆佸惉璇?230鐨勬儏鏅ā寮忎腑錛屽鏋滄妸閾冨0鍏充簡錛屼篃灝變笉鑳戒嬌鐢ㄩ渿鍔ㄤ簡錛屾槸榪欐牱涔堬紵
27銆佹垜甯屾湜Nokia鍦ㄤ笅涓涓崌綰om涓慨鏀規帀涓浜涜鍘岀殑Bug錛岃鎬庝箞鍋氾紵
28銆?230榪欎釜鍨嬪彿浠h〃浠涔堟剰鎬濓紵
29銆佹垜鍚漢璇?230鐨勬搷浣滅郴緇熸槸Symbian 70錛屽彲鏄張鐪嬪埌鏈変漢璇?230鏄疭60鐨勬満鍣紝S60涓嶅氨鏄疭ymbian 6.0鍚楋紵
30銆佹垜鎬庝箞鎵嶈兘鎵懼埌紱繪垜鏈榪戠殑Nokia鏈嶅姟鐐癸紵
璇哄熀浜氫笓鍗栧簵瀹㈡埛鏈嶅姟閮?涓滃煄鍖轟笢鍥涢殕紱忓箍鍦轟笢鍖篋102鍙?010-84033330
璇哄熀浜氫笓鍗栧簵瀹㈡埛鏈嶅姟閮?嫻鋒穩鍖虹櫧鐭蟲ˉ璺弸璋婂棣嗕笢闂ㄥ寳渚т腑澶嶇數璁?010-68948258
鍖椾含璇哄熀浜氬鎴鋒湇鍔′腑蹇?鐗′腹鍥?嫻鋒穩鍖哄寳鍦熷煄瑗胯礬147鍙?010-82021811
鍖椾含璇哄熀浜氬鎴鋒湇鍔′腑蹇?宕囨枃闂?宕囨枃鍖哄磭鏂囬棬瑗垮ぇ琛?鍙鋒ゼ 010-65286529
鍖椾含璇哄熀浜氾紙鑵鵑緳鏃朵唬錛夌壒綰︽湇鍔′腑蹇?瑗垮煄鍖哄寳涓夌幆涓礬27鍙峰疁瀹跺灞呴灞傝タ渚?010-62002278
鍖椾含鐢典俊鍙戝睍鎬誨叕鍙哥淮淇腑蹇?钂查粍姒?涓板彴鍖烘案澶栧垬瀹剁獞璺挷瀹夎タ閲?5鍙?010-67679696
鍖椾含璇哄熀浜氾紙闀胯繙錛夌壒綰︽湇鍔′腑蹇?閫氬窞 閫氬窞鍖烘柊鍗庡ぇ琛?22鍙?010-69531248
鍖椾含璇哄熀浜氾紙鍑揪闅嗭級鐗圭害鏈嶅姟涓績-鍙ゅ煄 鐭蟲櫙灞卞尯鍙ゅ煄澶ц5鍙?闂?010-88929560
鍖椾含璇哄熀浜氾紙鍑揪闅嗭級鐗圭害鏈嶅姟涓績-鎬鏌?鎬鏌斿幙闈掓槬璺?鍙鋒ゼ3闂?010-69695110
鍖椾含縐誨姩閫氫俊鏈夐檺璐d換鍏徃緇翠慨涓績 鏈濋槼鍖洪湠鍏夐噷2鍙稡搴?06瀹?010-64687588
鍖椾含璇哄熀浜氾紙浜偖閫氾級鐗圭害鏈嶅姟涓績-鐜嬪簻浜?涓滃煄鍖虹帇搴滀簳澶ц45鍙?010-65262207
鍖椾含甯傞氫俊浜у搧璐ㄩ噺鐩戠潱媯楠岀珯鐗圭害鏈嶅姟涓績 鏈濋槼鍖哄ぇ榛勫簞鑻楀渻35鍙?010-85778210
鍖椾含甯傝鍩轟簹錛堜腑閭氾級鐗圭害鏈嶅姟涓績-鍏富鍧?嫻鋒穩鍖哄煄涔¤錘鏄撲腑蹇冧簲妤奸氫俊騫垮満 010-68159837
鍖椾含璇哄熀浜氾紙鍑揪淇★級鐗圭害鏈嶅姟涓績-欏轟箟 欏轟箟鍖烘柊欏哄崡澶ц璺笢錛堥『涓晢鍩庡寳甯傚満1-12鍙鳳級 010-69469662
鍖椾含璇哄熀浜氾紙涓偖閫氾級鐗圭害鏈嶅姟涓績-鏈ㄦè鍥?鍙板尯鍗楁湪妯ㄥ洯84鍙?010-67214638
鍖椾含璇哄熀浜氾紙涓鐢佃錛夌壒綰︽湇鍔′腑蹇?涓板彴鍖鴻タ鍥涚幆鍗楄礬88鍙?010-63817529
鍖椾含璇哄熀浜氾紙鍑揪淇★級鐗圭害鏈嶅姟涓績-鏄屽鉤 鏄屽鉤鍖烘斂搴滆13鍙蜂簩灞?010-89742294
鍖椾含璇哄熀浜氾紙涓偖閫氾級鐗圭害鏈嶅姟涓績-鐪熸搴?瑗垮煄鍖虹湡姝﹀簷2鏉?鍙?010-68012943
鍖椾含璇哄熀浜氾紙鍏堟嘗蹇楄繙錛夌壒綰︽湇鍔′腑蹇?涓滃煄鍖轟笢鐩撮棬鍐呭ぇ琛?鍙鋒ゼ 010-84073301-11
鍖椾含璇哄熀浜氾紙鍑揪淇★級鐗圭害鏈嶅姟涓績-鍏富鍧?嫻鋒穩鍖哄鍏磋礬鐢?4鍙鳳紙鍏富鍧熷崕楣板ぇ鍘︿竴灞傦級 010-63969698
鍖椾含鐢典俊鍙戝睍鎬誨叕鍙哥淮淇腑蹇?瑗垮崟 瑗垮煄鍖鴻タ鍗曞寳澶ц118鍙瘋タ鍗曞晢鍦轟簩妤煎寳渚?010-66089696
鍖椾含鐢典俊鍙戝睍鎬誨叕鍙哥淮淇腑蹇?瑗跨洿闂?瑗垮煄鍖鴻タ鐩撮棬鍐呰懕搴楄儭鍚?鍙蜂腑瀹囬氳甯傚満涓妤?010-66136877
鍖椾含鐢典俊鍙戝睍鎬誨叕鍙哥淮淇腑蹇?浜旀5鏉?嫻鋒穩鍖哄鍏磋礬涓?5鍙?010-68214046
娉細鏂囩珷鍘熶綔鑰呭0鏄庤鏂囦弗紱佽漿杞斤紝涓漢淇濆瓨鍙槸澶勪簬闇瑕佷簡瑙okia 3230鐗圭偣鐨勭洰鐨勶紝鏂囩珷騫朵笉浼氬彂琛ㄥ湪blogjava涓婏紝浜嗚В涔嬪悗浼氱珛鍗充粠Flyingis絀洪棿閲屽垹鍘昏鏂囩珷銆?/font>
]]>Action
, ActionForm
, and JSP
(mostly the same, with the addition of <span>
tags). To complete our understanding of the Struts-AJAX project, we need to look at the three JavaScript functions that are responsible for updating the current web page when the results from the server are received.
processStateChange()
: The method name that we set before making the AJAX call. This method is called by the XMLHttpRequest
/Microsoft.XMLHTTP
object once the server has completed sending back its response.
splitTextIntoSpan()
: Loops through the response, picking out an array of <span id="someName">NewContent</span>
elements.
replaceExistingWithNewHtml()
: Loops through this array of span elements, searching for
elements in the existing page with <span>
'someName'
and replacing them with the new content from the server. Note that we get the returned content via req.responseText
for robustness (since it allows us to manipulate any text response), rather than req.responseXml
(which is more powerful, but requires that you return valid XHTML or XML). function processStateChange() {
if (req.readyState == 4) { // Complete
if (req.status == 200) { // OK response
//Split the text response into Span elements
spanElements =
splitTextIntoSpan(req.responseText);
//Use these span elements to update the page
replaceExistingWithNewHtml(spanElements);
} else {
alert("Problem with server response:\n "
+ req.statusText);
}
}
}
replaceExistingWithNewHtml()
is a "private" method used by the processStateChange()
method.
function replaceExistingWithNewHtml
(newTextElements){
//loop through newTextElements
for(var i=newTextElements.length-1;i>=0;--i){
//check that this begins with <span
if(newTextElements[i].
indexOf("<span")>-1){
//get the span name - sits
// between the 1st and 2nd quote mark
//Make sure your spans are in the format
//<span id="someName">NewContent</span>
startNamePos=newTextElements[i].
indexOf('"')+1;
endNamePos=newTextElements[i].
indexOf('"',startNamePos);
name=newTextElements[i].
substring(startNamePos,endNamePos);
//get the content - everything
// after the first > mark
startContentPos=newTextElements[i].
indexOf('>')+1;
content=newTextElements[i].
substring(startContentPos);
//Now update the existing Document
// with this element, checking that
// this element exists in the document
if(document.getElementById(name)){
document.getElementById(name).
innerHTML = content;
}
}
}
splitTextIntoSpan()
is a "private" method used by the processStateChange()
method.function splitTextIntoSpan(textToSplit){
//Split the document
returnElements=textToSplit.
split("</span>")
//Process each of the elements
for(var i=returnElements.length-1;i>=0;--i){
//Remove everything before the 1st span
spanPos = returnElements[i].
indexOf("<span");
//if we find a match, take out
//everything before the span
if(spanPos>0){
subString=returnElements[i].
substring(spanPos);
returnElements[i]=subString;
}
}
return returnElements;
}
New Flow of Control
onChange()
event, which calls the retrieveURL()
JavaScript function.
Action
on the server, passing in all of the form variables in a way that Struts will understand.
processStateChange()
method.
processStateChange()
method is called.
<span>
elements in the (new) server response. Where it finds a <span>
in the existing page with the same name, it updates it with the new content.
Designing AJAX into Your Application
Action
and JSP for the initial request (i.e., show full page) and the AJAX (update part of page) requests.
Action
(controller) class, decide which sections of the JSP page (all of the JSP or only part of it) need to be sent to the browser. By setting flags in either the web server session
or ActionForm
, the JSP page knows which sections need to be rendered.
<logic:equal>
or JSTL tags to decide if we need to render a section of HTML or not.
Conclusion
]]>
Figure 3. AJAX sample after page load
Figure 4. AJAX sample after AJAX call
ActionForm
to hold the data, and a Struts Action
that performs the tasks required (e.g., database access) and then forwards to the appropriate JSP to display the result.
Don't Just Sit There
If you wish to stop reading here (and skip the explanation of how this works) then here is all you need to do to convert your Struts application to a Struts-AJAX application in a similar manner:
<span>
tags, giving each an id
.
onchange()
method of a textbox), call the retrieveURL()
function, passing in the URL to the Struts Action
that will do the necessary server-side processing.
Action
to forward back to the same JSP. In our sample, we trigger the AJAX call in the onchange()
method of the showGreen
/showBlue
textboxes. retrieveURL()
calls Struts on the server (via the URL provided), takes the JSP response, and updates the web page being displayed, where the <span>
tags on the existing web page match those on the newly returned JSP. Simple!The AJAX Solution in More Detail
When we converted the previous sample into an AJAX-Struts application we made three changes:
<span>
tags to the JSP page, which mark sections that will be updated during AJAX calls. Making the AJAX Call to the Server
There are two functions (listed below) that are used to call the server.
retrieveURL()
function takes a parameter of the URL of the server and the name of the Struts form. The URL will be called using AJAX and the values of the form passed to the server.
getFormAsString()
is a function that converts the values on the form named in retrieveURL()
into a query string suitable for posting to Struts on the server. retrieveURL()
function to the onclick()
/onChange()
method of the event you wish to trigger the screen update.retrieveURL()
method, the line req.onreadystatechange = processStateChange
(note: no brackets) tells the browser to call the processStateChange()
method (which we talk through later in this article) once the server sends back its response. This method (now standard in AJAX) also determines whether it should use the Internet Explorer (ActiveX) or Netscape/Mozilla (XmlHttpRequest
) object to ensure cross-browser compatibility.getFormAsString()
method converts the HTML form into a string to be appended to the URL (which allows us to do a HTTP GET
request). This string is escaped (spaces are converted to %20
, etc.) and is in a format that Struts can use to populate an ActionForm
(without Struts being aware of the special AJAX nature of the request). Note that while we use a HTTP GET
in this sample, it would be equally possible to use a HTTP POST
by looping in a similar manner and adding the form fields to the request.
function retrieveURL(url,nameOfFormToPost) {
//convert the url to a string
url=url+getFormAsString(nameOfFormToPost);
//Do the AJAX call
if (window.XMLHttpRequest) {
// Non-IE browsers
req = new 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
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange=processStateChange;
req.open("GET", url, true);
req.send();
}
}
}
getFormAsString()
is a "private" method used by the retrieveURL()
method.
function getFormAsString(formName){
//Setup the return String
returnString ="";
//Get the form values
formElements=document.forms[formName].elements;
//loop through the array, building up the url
//in the format '/strutsaction.do&name=value'
for(var i=formElements.length-1;i>=0; --i ){
//we escape (encode) each value
returnString+="&"
+escape(formElements[i].name)+"="
+escape(formElements[i].value);
}
//return the values
return returnString;
}
]]>
This article shows a simple and elegant way to do this by including a couple of lines of JavaScript on your JavaServer Pages (JSPs). While we show how to reuse existing Struts actions, the techniques are equally applicable to the Java-Web framework of your choice. The method proposed will also allow a move to the next version of Struts (Shale) or JavaServer Faces (JSF) in the future.
AJAX stands for "Asynchronous JavaScript and XML." It is a technique, rather than a framework (such as Struts). The reason for the buzz around it is that it allows web pages to behave less like flat documents and more like dynamic GUI apps that users might expect from their desktop environments. AJAX techniques can be used for all recent browsers (including Internet Explorer and Netscape/Mozilla). It is already used by (among others) Microsoft (for its Outlook web client) and Google (for Google Maps and Gmail).
Most current Struts applications follow the standard "web page as a flat document" structure. If you wanted to mimic the behavior of GUI desktop apps (such as those built using Java Swing, Visual Basic, or Delphi) you had two choices: you could either send all of the information that might possibly required as part the web page with (a lot of) JavaScript to handle the dynamic behavior (a slow and not very enterprise-Java way to do things), or you could do constant form submits back to the server (an effective, if somewhat clunky, method). AJAX gives you the best of both worlds: dynamic web pages, but with most of the application running in Java on your web server.
AJAX is similar to existing Dynamic HTML techniques, with the addition of a "background" call to the server to get new/updated information as required. The mechanics of AJAX have already been covered in detail elsewhere--take a look at the Resources section at the end of this article for some good examples. The minimum you need to know is:
XMLHttpRequest
(or Microsoft.XMLHTTP
ActiveX object if you are using Internet Explorer). These objects can be called from the JavaScript on your web page. They allow you to request content from your web server as a background call (i.e., the screen does not "go blank" as usually happens during a form submit).
XMLHttpRequest
and Microsoft.XMLHTTP
objects return can be treated as either XML or plain text. JavaScript (on your web page) can then update the page with this new content as required.
onclick
, onchange
, onblur
, etc. The chances are that if you are reading this article, then you are interested in AJAX's ability to create dynamic web interfaces and would like to know how to add it to a Struts application. What are your options if you want to do this?
Some other advantages of our preferred option are:
How do we actually implement our chosen solution? We start by reminding ourselves how a "standard" (non-AJAX) Struts application works. In this application, the normal flow of events is as follows:
Action
, generating the web page.
ActionForm
class containing the posted data.
Action
that then processes the request (e.g., saves the data to a database).
A simple Struts application demonstrating this flow of events can be downloaded here: struts-non-ajax.zip. This application, based on the sample applications provided with Struts, either hides or displays blue and green tables depending on the values entered by the user. Figure 1 shows the screen on initial page load. Figure 2 shows the screen after the user has entered values and pressed Submit. Although simple, it is enough to demonstrate a Struts application at work.
Figure 1. Non-AJAX sample: Initial screen
Figure 2. Non-AJAX sample: Values entered, Submit pressed
The server-side code is as you would expect: a Struts Action
that forwards to the (same) JSP using the values defined in struts-config.xml. Some other points to note in this code sample are:
http://localhost:8080/struts-non-ajax/
(or the equivalent in your web server) to index.jsp.
showBlue
and showGreen
). The page also contains
tags, but as the values for these text boxes are initially blank, the content within them is not displayed.
SampleAction
class.
SampleAction
logs the values, and then forwards back to index.jsp. A more sophisticated Struts application would do more, such as saving to or retrieving from a database.
showBlue
or showGreen
are true
, the tables will be displayed. There is nothing "wrong" with this application. After all, similar Struts projects have been deployed for years. But how do we to add dynamic behavior to this application, without adding complex JavaScript or continual form submits?