锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产精品亚洲艾,亚洲无码高清在线观看,亚洲AV无码乱码在线观看代蜜桃http://m.tkk7.com/flyingis/category/12907.htmlTalking and thinking freely !<br> Flying in the world of Java and GIS !zh-cnTue, 27 Feb 2007 08:43:08 GMTTue, 27 Feb 2007 08:43:08 GMT60Nokia 3230 FAQhttp://m.tkk7.com/flyingis/articles/35259.htmlFlyingisFlyingisTue, 14 Mar 2006 08:56:00 GMThttp://m.tkk7.com/flyingis/articles/35259.htmlhttp://m.tkk7.com/flyingis/comments/35259.htmlhttp://m.tkk7.com/flyingis/articles/35259.html#Feedback0http://m.tkk7.com/flyingis/comments/commentRss/35259.htmlhttp://m.tkk7.com/flyingis/services/trackbacks/35259.html Nokia 3230 FAQ

鍘熸枃浣滆咃細tombkeeper[0x40]xfocus.org
鍘熸枃閾炬帴錛?a >http://blog.xfocus.net/index.php?op=Default&postCategoryId=118&blogId=9

鍒涘緩鏃墮棿錛?005.06.01 21:00
鏇存柊鏃墮棿錛?005.07.11 22:20

[鏈枃涓ョ杞澆]

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>


2銆佷拱鐨勬椂鍊欒娉ㄦ剰鍝簺錛?/font>

涔版按璐э紝涓昏鏄敞鎰忔満鍣ㄧ殑澶栧3鏈夋棤鍒掔棔錛屽睆騫曞唴閮ㄦ湁鏃犵伆灝樸傛按璐ф満鍣ㄥぇ澶氭槸鍦ㄦ病鏈夊寘瑁呯殑鎯呭喌涓嬪す甯﹁繘鏉ョ殑錛岃繖鏂歸潰寰堝鏄撳嚭闂銆?/font>

涔拌璐э紝涓昏鏄敞鎰忔満鍣ㄦ寜閿殑鎵嬫劅銆傛湁鏃跺欎釜鍒寜閿渶瑕佹牸澶栫敤鍔涙墠鑳芥寜涓嬪幓錛屾垨鑰呮劅瑙夋瘮杈冭蔣錛屼絾鍙堜笉鏄け鐏點傚洜涓鴻繖涓嶅睘浜庢晠闅滐紝鎵浠ヤ竴鏃﹀紑紲ㄤ箣鍚庢槸涓嶅彲鑳芥洿鎹㈢殑銆?/font>

3230閰嶄簡鑰蟲満錛屼拱鐨勬椂鍊欎竴瀹氳璇曞ソ銆傝蟲満榪欑被閰嶄歡涓鑸兘鏄鎵樺叾浠栧巶瀹剁敓浜х殑錛岃川閲忔帶鍒朵笉浼氭湁Nokia鑷繁閭d箞涓ユ牸銆?/font>


3銆?230鏈夊摢浜涙帶鍒剁爜鍙互鐢紵

鍜屽叾瀹冨熀浜嶴60鐨勬墜鏈轟竴鏍鳳紝涓嬮潰榪欎簺鎺у埗鐮佸3230閮芥湁鏁堬細

*#7370# 紜噸緗郴緇燂紙淇楃О鈥滄牸鏈衡濓級
*#7780# 鎭㈠鍑哄巶榛樿璁劇疆
*#06# 鏄劇ずIMEI鐮?br />*#0000# 鏌ヨ緋葷粺杞歡鐗堟湰鍙婃洿鏂版棩鏈?br />*#2820# 鏌ヨ钃濈墮璁懼鍦板潃


4銆丳siloc緋誨垪杞歡瀹夎騫舵敞鍐屼箣鍚庯紝鐢ㄤ簡涓孌墊椂闂村張鎻愮ず娉ㄥ唽錛岃緭鍏ユ敞鍐岀爜涔嬪悗錛屾樉紺衡淎pplication Expired鈥濄傚浣曡В鍐籌紵

A銆佹妸鏃墮棿璋冩暣鍒?003騫?鏈堜箣鍓嶏紝璀璇?003騫?鏈堛?br />B銆佸垹闄?C:SystemDataapplications.dat 鍜?C:SystemDataNITZ.dat銆?br />C銆佹敞鍐屻?br />D銆佹妸緋葷粺鏃墮棿璋冨洖姝e父銆?/font>


5銆佹垜鏃犳硶鐢?230鐨勭孩澶栧拰鏌愪簺鍏跺畠綰㈠璁懼浜掍紶鏂囦歡錛岃繖鏄庝箞鍥炰簨錛?/font>

3230浣滀負鏂板嚭鐨勬満鍨嬶紝鍦ㄧ孩澶栧吋瀹規т笂榪樻湁涓浜涢棶棰橈紝鍙兘絳変互鍚庡崌綰х郴緇熴備綔涓烘浛浠g殑瑙e喅鏂規錛屽彲浠ョ敤钃濈墮鏉ヨ繘琛屾枃浠朵紶杈撱?230鐨勮摑鐗欐ц兘涓嶉敊銆?/font>


6銆?230鐨凪P3鎾斁鍔熻兘鎬庝箞鏍鳳紵

3230鍙敮鎸佸崟澹伴亾鎾斁闊充箰錛岃嚦灝戝唴緗殑RealPlayer鍙兘浠ュ崟澹伴亾鎾斁闊充箰錛岃屼笖闊寵川騫朵笉濂姐傞偅浜涜涓轟拱浜?230灝卞彲浠ヤ涪鎺塎P3鐨勪漢瑕佸け鏈涗簡銆?/font>

濡傛灉鎯寵拷姹傛洿濂界殑澶氬獟浣撹〃鐜幫紝鎺ㄨ崘璐拱Moto e680i銆備環鏍兼瘮3230鐣ラ珮錛屼絾鏄湁320脳240鐨勫睆騫曞垎杈ㄧ巼錛屽洖鏀鵑煶璐ㄤ笉閫婁簬涓撲笟MP3鎾斁鍣紝鑰屼笖榪樻敮鎸佺珛浣撳0钃濈墮鑰蟲満錛丮oto灝嗗叾縐頒箣涓衡滀韓涔怭DA鈥濅笉鏄病閬撶悊鐨勩?/font>


7銆?230鐨凢M鏀墮煶鏈哄姛鑳芥庝箞鏍鳳紵

3230鐨凢M鏀墮煶鏈烘槸绔嬩綋澹扮殑錛岄煶璐ㄤ笉閿欙紝鑷沖皯姣斿ぇ澶氭暟琚栫弽FM鏀墮煶鏈洪兘瑕佸ソ銆傚彲浠ョ敤涓枃瀛樺偍20涓閬撳悕縐幫紝涔熷氨鏄錛岃瀹氬ソ涔嬪悗錛屽彧瑕佺偣涓涓嬧滃寳浜枃鑹哄彴鈥濓紝灝變細鑷姩鏀跺惉87.6鍏嗚但銆?/font>

3230 鑷甫浜嗕竴涓煶璐ㄤ笉閿欑殑鎵0鍣紝鍦ㄥ箍鎾殑鏃跺欏彲浠ラ夋嫨鐢ㄦ壃澹板櫒鎴栬呰蟲満銆備絾鏄鏋滆蟲満涓嶆彃鍦ㄦ墜鏈轟笂錛屾槸涓嶈兘鍚姩鏀墮煶鏈哄姛鑳界殑錛屽洜涓鴻鍊熻蟲満綰垮綋澶╃嚎鐢ㄣ備俊鍙峰ソ鐨勬椂鍊欙紝澶╃嚎騫朵笉涓瀹氭槸蹇呴渶鐨勶紝鎵浠ユ垜璁や負灝嗘潵涓瀹氫細鏈変漢鍐欑▼搴忚В闄よ繖涓闄愬埗錛岀敋鑷沖彲鑳絅okia灝變細鍦ㄤ笅涓鐗堟湰涓幓闄ら檺鍒垛斺斿鏋滈檺鍒舵槸鍦ㄨ蔣浠墮噷鍋氱殑璇濄?/font>

涓嬮潰鏄寳浜湴鍖洪儴鍒嗙數鍙扮殑棰戠巼錛?/font>

87.6 鍖椾含浜烘皯騫挎挱鐢靛彴鏂囪壓鍙?br />88.2 涓浗鍥介檯騫挎挱鐢靛彴EasyFM
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鐨勭數姹犺兘鐢ㄥ闀挎椂闂達紵

榪欎釜涓嶅ソ涓姒傝岃錛屼竴涓漢涓澶╄兘縐誨姩澶氳繙錛屽緱鍙栧喅浜庝粬鐢ㄤ粈涔堜氦閫氬伐鍏鳳紱鎵嬫満鐢墊睜鑳界敤澶氶暱鏃墮棿錛屽緱鍙栧喅浜庢庝箞鐢ㄣ?230鐨勭數姹犳槸BL-5B錛屾瘮7650鐨?BLB-2灝忎簡60 mAH錛屼絾鏄垜涓漢鎰熻3230鍏呮弧鐢電殑浣跨敤鏃墮棿鑷沖皯瑕佹瘮7650闀?0%~30%鈥斺斿綋鐒朵篃鍙兘鏄垜鐨勯敊瑙夈?/font>


9銆?230鐨勬媿鐓с佹憚鍍忔ц兘鎬庝箞鏍鳳紵

浣滀負涓涓墜鏈烘潵璇達紝鎷嶇収鏁堟灉鐩稿綋涓嶉敊銆傞暅澶寸暩鍙樹笉澶э紝鎷嶆憚鍑虹殑1280脳960鐨勫浘鐗囧鏋滅緝灝忚嚦1024脳768錛屽嚑涔庡彲浠ユ嬁鏉ュ綋妗岄潰銆備簨瀹炰笂錛孨okia 鎵嬫満鐨勬媿鐓ф晥鏋滀竴鐩撮兘寰堝ソ錛屾垜鏇劇粡鐢ㄥ悓鏄?0涓囧儚绱犵殑7650鍜孌opod 535鍋氭瘮杈冦傜粨鏋?650鐨勯暅澶寸暩鍙樸佽壊褰╄繕鍘熴佺櫧騫寵 閮藉崰浜嗕笂椋庛傚挨鍏舵槸鐧藉鉤琛″拰鑹插僵榪樺師錛宒opod 535鐨勮〃鐜板彧鑳界敤鈥滄儴鈥濇潵褰㈠銆?/font>

3230鎷嶇収鍔熻兘姣旇緝澶х殑姣涚梾鏄歡榪熸瘮杈冮暱錛岃秴榪囦竴縐掗挓銆備篃灝辨槸璇達紝鐓х墖璁板綍鐨勬槸鎸変笅蹇棬涓縐掗挓鍚庣殑浜嬫儏銆傚彲鑳芥槸鍥犱負CPU榪愮畻鑳藉姏涓嶈凍瀵艱嚧鐨勩?/font>

鑷甫鐨勬憚鍍忚蔣浠跺彧鑳芥媿鎽勬渶澶у垎杈ㄧ巼176脳144鐨勫獎鍍忋備綔涓轟竴涓敮鎸佸瓨鍌ㄥ崱鐨勬満鍣ㄦ潵璇達紝榪欐槸寰堝け璐ョ殑銆傚綋鐒訛紝涔熷彲鑳芥槸鍥犱負3230鐨凜PU澶勭悊涓嶄簡鏇村ぇ騫呯殑瑙嗛銆?/font>


10銆?230鑷甫鐨勬父鎴忔庝箞鏍鳳紵

涓嶉敊銆傜郴緇熻嚜甯︽父鎴忓拰瀛樺偍鍗′腑鐨勫嚑嬈炬父鎴忕敾闈㈠拰鍙帺鎬ч兘寰堝ソ銆傚挨鍏舵槸鑷甫鐨凙gent V錛屼竴瀹氳浣撻獙涓涓嬫墠鐭ラ亾浠涔堝彨鏂版蹇點傛垜鏇劇粡鐢ㄨ璦鍚戝嚑涓湅鍙嬫弿榪頒簡榪欎釜娓告垙錛屽彲鏄粬浠湅鍒板疄闄呯殑鎯呭艦鏃惰繕鏄緢闇囨捈銆?/font>


11銆?230鑳戒笉鑳芥洿鎹㈠悇縐嶅僵澹籌紵

Nokia騫舵病鏈夋妸3230璁捐鎴愯兘鑷繁鎹㈠3鐨勬満鍣紝鑷劧涔熸病鏈夊3鍙崲銆備絾闅忕潃3230鍑鴻揣閲忕殑澧炲姞錛屼竴瀹氫細鏈夌涓夋柟鍘傚鐢熶駭鐩稿簲鐨勫僵澹沖嚭鏉ャ備笉榪囦綘鍙兘闇瑕佷竴鎶奣5鐨勫唴鍏铻轟笣鍒銆?/font>


12銆?230鑳芥敹鍙戠數瀛愰偖浠朵箞錛?/font>

鍙互銆?230鏀寔POP鍜孖MAP鍗忚鐨勯偖綆便傚彟澶栵紝3230榪樻彁渚涗簡瀵筍SL/TLS/APOP鍔犲瘑鍗忚鐨勬敮鎸併傛垜鐢?230鍙互鎴愬姛鏀跺彂緇忚繃SSL鍔犲瘑鐨凣mail閭歡銆?/font>


13銆?230鍙互瀹夎綰㈠閬ユ帶杞歡涔堬紵

鍙互銆備絾鏄拰7650涓嶅悓鐨勬槸錛?230鐨勭孩澶栧彛鍦ㄦ満鍣ㄧ殑鍙充晶闈㈣屼笉鏄《绔紝鎵浠ュ茍涓嶉傚悎浣滀負閬ユ帶鍣ㄦ潵鐢ㄣ?/font>


14銆?230鍙互鎻掓墿灞曞瓨鍌ㄥ崱涔堬紵

鍙互銆?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>


15銆?650/3650鍜?600/6670/7610涓婄殑杞歡鍙互鍦?230涓婃甯歌繍琛屼箞錛?/font>

鏍規嵁鎴戠殑瀹為獙錛岃秴榪囦笁鍒嗕箣浜岀殑7650/3650杞歡鍙互鍦?230涓婃甯歌繍琛屻傞氬父鏉ヨ錛屽拰紜歡娌′粈涔堝叧緋葷殑鈥斺旇濡傝鐪嬪浘銆佺湅涔︾殑杞歡錛屽熀鏈兘鍙互榪愯錛涜屽拰紜歡鍏崇郴姣旇緝澶х殑杞歡錛岃濡傛媿鐓ц蔣浠躲佹潵鐢甸槻鐏杞歡錛屽垯閫氬父閮戒笉鑳芥甯稿伐浣溿?/font>

涓嶈繃寰堝杞歡宸茬粡鎺ㄥ嚭浜嗛拡瀵?230絳夋柊嬈炬墜鏈虹殑鍗囩駭鐗堟湰銆傚湪鏈潵涓変釜鏈堝唴錛屾垜浠兂鐢ㄧ殑澶ч儴鍒嗚蔣浠跺簲璇ラ兘鍙互鎵懼埌銆?/font>

鑳藉湪6600/6670/7610涓婅繍琛岀殑杞歡鍩烘湰閮藉彲浠ユ甯稿伐浣滀簬3230銆?/font>


16銆?230鐨勫睆騫曟庝箞鏍鳳紵

寰堜笉閿欍?230鐢ㄤ簡65535鑹茬殑TFT灞忥紝鑹插僵鍜屽姣斿害閮戒笉閿欍傚睆騫曚寒搴︿篃寰堥珮錛屼互鑷充簬鎴戣鎶婁寒搴﹁皟鍒?0%鎵嶄笉瑙夊緱鍒虹溂銆?/font>


17銆佹垜鑳界敤3230涓奞Q鍜孧SN涔堬紵

鑵捐鍦╭q.com涓婃彁渚涗簡Symbian鐗堟湰鐨凲Q瀹㈡埛绔紝涓嶈繃榪樻病鏈夐拡瀵?230鐨勶紝涓嬮潰榪欎釜閾炬帴涓殑鏂囦歡鏄拡瀵?650/3650鐨勶紝緇忔垜嫻嬭瘯錛屽伐浣滄甯革細
http://mgame.qq.com/mqq/qq.SIS

涓嶈繃鎴戣寰楋紝閽堝6600/6670/7610鐨勭増鏈簲璇ヤ篃鍙互浣跨敤錛岃屼笖搴旇鏇村吋瀹逛竴浜涳紝姣曠珶瀹冧滑鍜?230閮芥槸鍩轟簬Symbian 7鐨勬満鍣紝鑰?650/3650鏄疭ymbian 6錛?br /> http://mgame.qq.com/mqq/qq_6600.SIS
http://mgame.qq.com/mqq/qq_6670.SIS
http://mgame.qq.com/mqq/qq_7610.SIS

浠ュ墠鐗堟湰鐨凙gile Messenger絳塎SN瀹㈡埛绔湪3230涓婇兘涓嶈兘姝e父浣跨敤錛屾渶鏂扮殑Turbo MSN 1.9宸茬粡鍙互寰堝ソ鍦板湪3230涓婅繍琛屻?/font>


18銆?230鐨勯椆閽熻繕鏄彧鑳借瀹氫竴涓椆閾冧箞錛?/font>

鏄殑銆備篃璁告槸Nokia鎯崇粰鍐欓椆閾冭蔣浠剁殑灝忓叕鍙哥暀鐐圭敓瀛樼┖闂達紝榪欎釜浠?650鏃朵唬灝辮浜鴻療鐥呯殑闂涓鐩翠繚鎸佷簡涓嬫潵銆備笉榪囩幇鍦ㄥ彲浠ヨ嚜瀹氫箟闂歸挓鎵浣跨敤鐨勯搩澹頒簡銆傚彟澶栵紝鎴戝彂鐜癢orld Clock Pro鍦?230涓婁笉鑳借皟閾冨0澶у皬錛屽ソ鍦ㄩ粯璁ょ殑澹伴煶瓚沖鍝嶄簡銆?/font>

灝忔妧宸э細濡傛灉浣犱笉鎯充粎浠呬負浜嗚兘澶氬畾涔夊嚑涓椆閾冨氨棰濆瀹夎涓涓椆閾冭蔣浠剁殑璇濓紝鍙互鍦?230鐨勨滄棩鍘嗏濅腑寤虹珛甯﹂椆閾冪殑綰︿細鎻愰啋錛岃屼笖鍙互璁懼畾闂歸搩闊充箰錛岃瀹氭瘡澶┿佹瘡鍛ㄣ佹瘡鏈堣繕鏄瘡騫存彁閱掍竴嬈°?/font>


19銆侀櫎浜咼ava錛岃繕鏈夊埆鐨勮繍琛屽湪3230涓婄殑鑴氭湰璇█涔堬紵

浠や漢鍚冩儕鐨勬槸錛岀幇鍦ㄦ垜浠珶鐒跺彲浠ュ湪Symbian涓婅繍琛孭ython錛?br /> http://www.forum.nokia.com/main/0,,034-821,00.html


20銆?230鏄惁鍍?650閭f牱錛屽睆騫曢潰鏉塊噷瀹規槗榪涚伆灝橈紵

鏄殑錛岃繖鏄釜緋熺硶鐨勯棶棰樸傛垜浠旂粏鐪嬩簡涓涓嬶紝搴旇鏄睆騫曚笅鏂圭殑瀵嗗皝嫻風壞涓嶅鍘氬鑷寸殑銆傛垜宸茬粡涔頒簡T5鐨勫唴鍏铻轟笣鍒錛屽噯澶囪嚜宸辨潵闄ゅ皹騫跺姞鍘氳繖鍧楁搗緇典簡銆?/font>


21銆?230鑳藉拰PC鍚屾涔堬紵

鍙互錛屼綘闇瑕佷笅杞絅okia PC濂椾歡錛?br /> http://nds2.nokia.com/files/support/china/phones/software/Nokia_PC_Suite_641_zh_sc.exe


22銆佹垜鎶婇殢鏈哄甫鐨凴S-MMC鍗′腑鐨勭▼搴忓垹闄や簡錛岀幇鍦ㄥ張鎯崇敤榪欎簺紼嬪簭浜嗭紝璇ユ庝箞鍔烇紵

濡傛灉浣犲緢騫歌繍錛岃璇嗗彟涓涓湁3230鎵嬫満鐨勪漢錛屽彲浠ヤ粠浠栭偅閲屾嫹璐濅竴浠姐傝涓嶇劧錛屽氨寰楀幓鎵綨okia鐨勫鏈嶏紝鎴戞兂榪欎釜鏈嶅姟搴旇鏄厤璐圭殑銆?/font>


23銆丯okia緗戠珯涓婃彁渚涗簡3230杞歡涓嬭澆涔堬紵

姣旇緝濂囨殑鏄紝3230鍙彁渚涗簡涓浜汥EMO杞歡鐨勪笅杞斤紝鑰屾病鏈夋寮忕殑杞歡涓嬭澆欏甸潰錛屼笉榪囪繖娌″叧緋伙紝7610鍜?681絳塖60鏈哄櫒鐨勮蔣浠訛紝3230鍩烘湰閮藉彲浠ョ敤錛?/font>

http://www.nokia.com.cn/cn/support/phones/models/n7610/downloads/downloads_game.shtml
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

娉ㄦ剰錛?681鐨勯偅涓滈煶涔愭挱鏀懼櫒鈥濊櫧濂斤紝浣嗘槸3230鐢ㄤ笉浜嗐傚洜涓?681鐨凪P3瑙g爜鏄‖浠跺疄鐜扮殑銆?/font>

鎴戜釜浜鴻寰椾笅闈㈣繖浜涜蔣浠惰繕涓嶉敊錛?/font>

鎺屼笂鍥句功錛?br /> http://nds2.nokia.com/files/support/china/phones/software/ebook_6600.SIS

鎺屼笂鍥句功PC绔蔣浠訛細
http://nds2.nokia.com/files/support/china/phones/software/ebook_pc_sw.zip

鏌ュ彿綺劇伒錛?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


24銆?230鎬庝箞閿佸睆錛?/font>

3230鍒氬嚭鏉ョ殑鏃跺欙紝鏈変漢鍐欐枃绔犺榪?230鐨勫嚑澶х己鐐癸紝鍏朵腑涓涓姜鐘跺氨鏄病鏈夆滈攣灞忛敭鈥濄侼okia鐨勮佺敤鎴烽兘鐭ラ亾錛氭墍鏈夌殑Nokia鐩存澘鎵嬫満閮芥槸鍏堟寜紜閿啀鎸?灝遍攣灞忥紝鍐嶆鍚屾牱鎿嶄綔灝卞紑閿併?/font>


25銆?230鐨凜PU鏄粈涔堬紵

ARM4T錛屼富棰?23MHz銆傛垜璁や負瀵逛簬涓涓澶勭悊1280脳960澶у皬鍥劇墖鐨勬満鍣ㄦ潵璇達紝200MHz鏄瘮杈冩伆褰撶殑鈥斺旇櫧鐒朵細澶氳楄垂涓浜涚數鍔涖?/font>


26銆佸惉璇?230鐨勬儏鏅ā寮忎腑錛屽鏋滄妸閾冨0鍏充簡錛屼篃灝變笉鑳戒嬌鐢ㄩ渿鍔ㄤ簡錛屾槸榪欐牱涔堬紵

榪欐槸涓涓瑙c傚鏋淣okia鐨勭爺鍙戜漢鍛樹細鐘繖縐嶆剼锠㈤敊璇紝濡傛灉Nokia鐨凲C閮ㄩ棬榪炶繖縐嶆剼锠㈤敊璇兘媯鏌ヤ笉鍑烘潵錛岄偅鎴戜滑灝變笉浼氱煡閬揘okia榪欎釜鍚嶅瓧浜嗐?/font>

寰堝浜鴻涓哄湪鎯呮櫙妯″紡涓叧閾冨0鐨勬柟娉曞氨鏄皢鈥滈搩澹扮被鍨嬧濊緗負鈥滄棤澹扳濄傝繖閮芥槸琚滈搩澹扮被鍨嬧濊繖涓腑鏂囩炕璇戠粰璇鐨勩傝繖閲岀殑鑻辨枃鍘熸枃鏄淩inging Type鈥濄傗淩inging鈥濅笉搴旂悊瑙d負鍚嶈瘝鈥滈搩澹扳濓紝鑰屽簲璇ユ槸Ring鐨勮繘琛屾椂鎴栬呮槸鍔ㄥ悕璇嶃傗淩inging Type鈥濇紜殑緲昏瘧鏄滃搷閾冪被鍨嬧濄備篃灝辨槸璇達紝璁劇疆鐨勬槸鏉ョ數鎻愮ず錛堝寘鎷搩澹板拰闇囧姩錛夋寜鐓т粈涔堟柟寮忓伐浣溿?/font>

濡傛灉璁劇疆涓衡滆繛緇搷閾冣濓紝灝辨剰鍛崇潃鎵璁劇疆鐨勬潵鐢墊彁紺猴紙鍖呮嫭閾冨0鍜岄渿鍔級閮戒細琚驚鐜Е鍙戯紱濡傛灉璁劇疆涓衡滄棤澹扳濓紝鑷劧鏄繛閾冨0甯﹂渿鍔ㄩ兘娌℃湁浜嗐?/font>

濡傛灉瑕佽緗竴涓病鏈夐搩澹頒絾鏄湁闇囧姩鐨勬儏鏅ā寮忥紝鍙渶鍦ㄢ滄潵鐢甸搩澹扳濅腑閫夋嫨鈥滃叧鈥濓紝灝嗏滈搩澹扮被鍨嬧濊緗負鈥滆繛緇搷閾冣濆嵆鍙?/font>


27銆佹垜甯屾湜Nokia鍦ㄤ笅涓涓崌綰om涓慨鏀規帀涓浜涜鍘岀殑Bug錛岃鎬庝箞鍋氾紵

娌′簨騫插鎵撳鏈嶇數璇?008800123錛屾妸閭d簺闂鍙嶅鍚戝鏈嶅弽鏄犮傛渶鍚庤繖浜涙剰瑙佷細琚粺璁★紝濡傛灉鏈夊緢澶氫漢嬈$殑鍙嶆槧錛岄偅涔堝氨浼氫紭鍏堣鑰冭檻瑙e喅銆?/font>


28銆?230榪欎釜鍨嬪彿浠h〃浠涔堟剰鎬濓紵

Nokia鎵嬫満浠ュ瀷鍙風殑絎竴涓暟瀛楁潵鍒掑垎緋誨垪錛?230鏄?鈥濈郴鍒楋紝浠h〃鍏鋒湁鐙壒鍔熻兘錛屽瑙傛瘮杈冨鎬紝鏈夌壒鍒己鍖栧姛鑳界殑鏈哄櫒銆傚鏃忔垚鍛樻湁3650銆?300銆?200絳夈?/font>


29銆佹垜鍚漢璇?230鐨勬搷浣滅郴緇熸槸Symbian 70錛屽彲鏄張鐪嬪埌鏈変漢璇?230鏄疭60鐨勬満鍣紝S60涓嶅氨鏄疭ymbian 6.0鍚楋紵

S60 鏄疭eries60鐨勭緝鍐欙紝涓嶆槸Symbian 6.0鐨勭緝鍐欍係eries60鎸囩殑鏄墜鏈虹殑鎿嶄綔鐣岄潰銆傜浉搴旂殑榪樻湁Series40錛?230i絳夋満鍨嬶級銆丼eries80 錛?210/9300/9500絳?緋誨垪鏈哄瀷錛夈傞櫎3230涔嬪錛?650/3650/6600/6670/7610絳夋満鍨嬩嬌鐢ㄧ殑涔熸槸Series60鐨勭晫闈€?/font>


30銆佹垜鎬庝箞鎵嶈兘鎵懼埌紱繪垜鏈榪戠殑Nokia鏈嶅姟鐐癸紵

璇哄熀浜氬鎴鋒湇鍔$綉鐐規煡璇細 http://www1.nokia.com.cn/carecenter

涓嬮潰鏄寳浜殑鏈嶅姟鐐癸細

鍚嶇О 鍦板潃 鐢佃瘽

璇哄熀浜氫笓鍗栧簵瀹㈡埛鏈嶅姟閮?瑗垮煄鍖哄悗鍗婂琛?6鍙鳳紙瑗跨洿闂ㄥ晢涓氬ぇ鍘?灞傦級 010-66110268
璇哄熀浜氫笓鍗栧簵瀹㈡埛鏈嶅姟閮?涓滃煄鍖轟笢鍥涢殕紱忓箍鍦轟笢鍖篋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>

Flyingis 2006-03-14 16:56 鍙戣〃璇勮
]]>
Sprinkle Some AJAX Magic in Your Struts Web Application(3)http://m.tkk7.com/flyingis/articles/17777.htmlFlyingisFlyingisWed, 02 Nov 2005 03:29:00 GMThttp://m.tkk7.com/flyingis/articles/17777.htmlhttp://m.tkk7.com/flyingis/comments/17777.htmlhttp://m.tkk7.com/flyingis/articles/17777.html#Feedback0http://m.tkk7.com/flyingis/comments/commentRss/17777.htmlhttp://m.tkk7.com/flyingis/services/trackbacks/17777.html Updating the Web Page with the AJAX Response

So far, we have looked at the JavaScript to do the AJAX call (listed above) and the Struts 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 <span> elements in the existing page with '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

By adding the above JavaScript code to our application, the following steps now happen on the server and on the browser.

  1. The page loads as per a normal Struts application.
  2. The user changes a textbox value, triggering an onChange() event, which calls the retrieveURL() JavaScript function.
  3. This JavaScript function makes a (background) call to the Struts Action on the server, passing in all of the form variables in a way that Struts will understand.
  4. This JavaScript function also sets the name of a second JavaScript function, which will be called when the server response is finished. In this case, it is set to the processStateChange() method.
  5. As expected, when the server response is finished, the processStateChange() method is called.
  6. The JavaScript loops through all of the <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

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:

  • To avoid duplicated code, it can often be better to use the same Struts Action and JSP for the initial request (i.e., show full page) and the AJAX (update part of page) requests.
  • Within the common 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.
  • Within the JSP, use Struts <logic:equal> or JSTL tags to decide if we need to render a section of HTML or not.

An updated version of this project, with AJAX enabled, can be downloaded here: struts-Ajax.zip

Conclusion

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.



Flyingis 2005-11-02 11:29 鍙戣〃璇勮
]]>
Sprinkle Some AJAX Magic in Your Struts Web Application(2)http://m.tkk7.com/flyingis/articles/17776.htmlFlyingisFlyingisWed, 02 Nov 2005 03:26:00 GMThttp://m.tkk7.com/flyingis/articles/17776.htmlhttp://m.tkk7.com/flyingis/comments/17776.htmlhttp://m.tkk7.com/flyingis/articles/17776.html#Feedback0http://m.tkk7.com/flyingis/comments/commentRss/17776.htmlhttp://m.tkk7.com/flyingis/services/trackbacks/17776.html Our First Struts AJAX Application

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.

AJAX Sample after Page Load
Figure 3. AJAX sample after page load

AJAX sample after AJAX call
Figure 4. AJAX sample after AJAX call

Adding this AJAX behavior is surprisingly easy. The server-side code is the same as usual: a Struts 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:
  1. Include the Ajax.js JavaScript file on your web page (this file is part of the struts-ajax.zip sample file). Ajax.js contains all of the JavaScript functions necessary to send and receive AJAX calls.
  2. Ensure the parts of the web page that you wish to update during AJAX calls are surrounded by <span> tags, giving each an id.
  3. When something happens that should update the page (e.g., the 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.
  4. For page display/update, the easiest option is for the Struts 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.

The JavaScript function 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:
  1. Added a JavaScript function to do the "behind the scenes" AJAX call to the server.
  2. Added JavaScript code to receive the server response and update the web page.
  3. Added <span> tags to the JSP page, which mark sections that will be updated during AJAX calls.

We will look at each of these in more detail.

Making the AJAX Call to the Server

There are two functions (listed below) that are used to call the server.
  • The 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.

To use, simply add the retrieveURL() function to the onclick()/onChange() method of the event you wish to trigger the screen update.

There are some interesting items going on in both methods.

Within the 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.

The 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; 
}


Flyingis 2005-11-02 11:26 鍙戣〃璇勮
]]>
Sprinkle Some AJAX Magic in Your Struts Web Application(1)http://m.tkk7.com/flyingis/articles/17775.htmlFlyingisFlyingisWed, 02 Nov 2005 03:24:00 GMThttp://m.tkk7.com/flyingis/articles/17775.htmlhttp://m.tkk7.com/flyingis/comments/17775.htmlhttp://m.tkk7.com/flyingis/articles/17775.html#Feedback0http://m.tkk7.com/flyingis/comments/commentRss/17775.htmlhttp://m.tkk7.com/flyingis/services/trackbacks/17775.htmlAJAX is the latest revolution in web development circles, allowing rich dynamic interfaces deployed within a normal web browser. Struts has been one of the de facto standards for Java-Web development for a number of years, with a large number of applications already deployed. This article will show you how to combine the richness of an AJAX user interface with your existing Struts applications.

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.

What is AJAX?

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).

Life Before AJAX

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 101

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:

  1. The 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).
  2. The content that the 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.
  3. The whole process can be triggered by the usual JavaScript events: onclick, onchange, onblur, etc.

Using AJAX in Your Struts Application

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?

  • Wait until the next version of Struts (Shale) incorporates AJAX techniques. For Struts developers starting a new application this is probably the best option. The downside is that this will probably require moving to JavaServer Faces--not a bad thing in itself, but this may entail fundamental changes if you have an existing application.
  • You could move to a new approach, like Direct Web Remoting (DWR) or Ruby on Rails, which are specifically built for AJAX applications. While these are both very impressive frameworks, and are worth taking a look at if you wish to consider web development without Struts, this option would mean rewriting your entire application.
  • Add AJAX to your existing Struts application. Since AJAX is a technique, not a framework, it is straightforward to add it to Struts. For existing applications where stability (e.g., keeping existing libraries) is important, this option is recommended and is the one we explore in more detail.

Some other advantages of our preferred option are:

  1. It should not require any new libraries or server side code; only the Struts libraries and actions already in the application need be used.
  2. All of the parts of the solution--JavaScript, XML, Java and Struts--are already widely understood.
  3. The application can be migrated to AJAX piece by piece; we can identify those parts which will most benefit users, and then choose to upgrade them to dynamic AJAX behavior first.

Implementing the Solution

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:

  1. The user requests a screen by clicking a hyperlink or form submit button.
  2. The web server runs the requested Struts Action, generating the web page.
  3. The browser displays the page.
  4. When the user presses Save, the information is posted to the server, where it's converted by the Struts framework to an ActionForm class containing the posted data.
  5. The Struts framework then calls the Struts Action that then processes the request (e.g., saves the data to a database).
  6. The page is rendered as per item 2, and the process starts again.

Existing Struts Application

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.

Non-AJAX sample: Initial screen
Figure 1. Non-AJAX sample: Initial screen

Non-AJAX sample: Values entered, Submit pressed
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:

  • The struts-config.xml file is set up to redirect all requests to http://localhost:8080/struts-non-ajax/ (or the equivalent in your web server) to index.jsp.
  • index.jsp contains a Struts form with two text boxes (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.
  • The user enters values (true or false) and presses the Submit button, passing control (via the Struts Framework, reading struts-config.xml) to the 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.
  • index.jsp now evaluates the request; if 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?



Flyingis 2005-11-02 11:24 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 深夜福利在线免费观看| 日本v片免费一区二区三区| 国产综合亚洲专区在线| 一个人免费观看日本www视频| 国产99视频免费精品是看6| 亚洲狠狠婷婷综合久久蜜芽| 精品国产麻豆免费网站 | 亚洲成A人片在线观看无码不卡 | 国产91色综合久久免费分享| 亚洲美女大bbbbbbbbb| ww在线观视频免费观看| 77777亚洲午夜久久多喷| 好爽…又高潮了免费毛片| 亚洲乱亚洲乱妇24p| 国产人成免费视频| 国产福利电影一区二区三区,免费久久久久久久精 | 中文字幕不卡高清免费| 国产偷v国产偷v亚洲高清| 日本卡1卡2卡三卡免费| xxx毛茸茸的亚洲| 四虎影库久免费视频| 久久久久免费视频| 亚洲综合一区二区| 青青草国产免费久久久下载| 永久免费精品影视网站| 亚洲一区二区电影| 麻豆成人精品国产免费| 国产特黄特色的大片观看免费视频| 久久青青草原亚洲AV无码麻豆| 亚洲成在人线aⅴ免费毛片| 处破女第一次亚洲18分钟| 亚洲精品乱码久久久久66| 日本一区二区三区免费高清| 男女猛烈xx00免费视频试看| 亚洲av中文无码乱人伦在线播放 | 亚洲国产系列一区二区三区 | 亚洲A∨精品一区二区三区| 久久免费观看国产精品| 国产精品亚洲专区无码WEB| 久久精品国产亚洲一区二区| 成人免费在线观看网站|