锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鐪嬪埌浜嗕笂闈㈢殑C#錛屽ASP.NET鐨勪漢鏄笉鏄湅鍒頒簡紱忛煶浜嗭紵騫蟲椂鐪嬪埌JSP鏈塖truts錛孒ibernate錛孲pring絳変紬澶氫紭縐鐨勬鏋訛紝鑰?NET鐨勫ソ鍍忚繕娌℃湁錛屽績閲岀湡鏄竴鐧句釜鐨勪笉鐖斤紝鐜板湪鎴戜滑緇堜簬涔熸湁MVC妗嗘灦浜嗐傝櫧鐒跺井杞幇鍦ㄦ鍦ㄥ嚭涓涓狝SP.NET MVC妗嗘灦錛屼絾鏄畠鐜板湪榪樻槸Preview5錛屼篃涓嶇煡閬撲粈涔堟椂鍊欐墠鑳藉嚭姝e紡鐗堬紝鏈熷緟涓涓嬪惂錛屽井杞嚭鐨勪笢瑗垮簲璇ユ槸寰堝鏄撲嬌鐢ㄧ殑銆備笉榪囷紝鎹榪欎釜妗嗘灦鍙敮鎸?NET3.5鐨勭増鏈紝濡傛灉鐪熸槸榪欐牱鐨勮瘽錛岃繖鏄儚鎴戣繖縐嶈繕鍦ㄤ嬌鐢?NET2.0鐨勪漢鏉ヨ鏄竴澶х殑閬楁喚銆?/p>
榪樻湁涓鐐圭殑鏄紝榪欎釜妗嗘灦鍜屾垜涓婇潰鎻愬埌榪囩殑JSP妗嗘灦涓嶅悓錛屽畠鏄竴涓湡姝g殑MVC妗嗘灦錛屽畠涓嶅儚Struts瀹冧滑閭f牱鍙敮鎸乄eb搴旂敤鐨勫紑鍙戯紝铏界劧鐜板湪榪欑寮鍙戝緢嫻佽銆傚畠鍙槸涓涓鏋訛紝瀹冩槸璁╂垜浠洿濂界殑綆$悊鎴戜滑鐨勭▼搴忥紝浣垮緱瀹冩槗浜庣淮鎶わ紝鏄撲簬鎵╁睍鍜岀Щ妞嶃傚畠鍙槸涓涓湡姝g殑MVC妗嗘灦錛屽畠騫朵笉闈㈠悜浜庣壒瀹氱殑搴旂敤銆傛垜浠彲浠ヤ嬌鐢ㄥ畠寮鍙戞闈㈠簲鐢紝W(xué)eb搴旂敤絳夌瓑銆傚悓鏃訛紝瀹冭繕鏄竴涓交閲忕駭鐨勬鏋訛紝鑰屼笖榪樻槸寰堣交鐨勯偅縐嶏紝瀹冪殑澶у皬鏈澶氫篃灝?錛?0K鑰屽凡銆?/p>
鍏充簬PureMVC鐨勫涔?fàn)鏁櫧E嬬湡鐨勫ソ灝戯紝鎵句簡濂藉嚑澶╋紝緇撴灉榪樻槸鍙壘鍒板畼緗戜笂鐨勯偅涓狟est Practices銆傛湰浜烘瘮杈冩剼絎紝鐮旂┒浜嗗ソ鍑犲ぉ錛屾妸閭d釜鏂囨。鐪嬩簡鍙堢湅錛岀粓浜庢墠鏄庣櫧浜嗗畠澶ф鐨勫師鐞嗭紝鐜板湪鍐欎笅鏉ワ紝鍒嗕韓涓涓嬪績寰椼?/p>
PureMVC妗嗘灦鐨勭洰鏍囧緢鏄庣‘錛屽嵆鎶婄▼搴忓垎涓轟綆鑰﹀悎鐨勪笁灞傦細Model銆乂iew鍜孋ontroller銆傚畠浠悎縐頒負PureMVC妗嗘灦鐨勬牳蹇冿紝鐢盕acade緇熶竴綆$悊銆傚叧浜庡畠鐨勬牳蹇冨眰錛屾垜浠笉闇瑕佺澶錛屽彧闇瑕佽寰椾笅闈㈠嚑鐐瑰氨鍙互浜嗭細
涓銆丮odel淇濆瓨瀵筆roxy瀵硅薄鐨勫紩鐢紝Proxy璐熻矗鎿嶄綔鏁版嵁妯″瀷錛屼笌榪滅▼鏈嶅姟閫氫俊瀛樺彇鏁版嵁銆?/p>
浜屻乂iew淇濆瓨瀵筂ediator瀵硅薄鐨勫紩鐢ㄣ傜敱Mediator瀵硅薄鏉ユ搷浣滃叿浣撶殑瑙嗗浘緇勪歡錛圴iew Component錛屼緥濡侳lex鐨凞ataGrid緇勪歡錛夛紝鍖呮嫭錛氭坊鍔犱簨浠剁洃鍚櫒錛屽彂閫佹垨鎺ユ敹Notification 錛岀洿鎺ユ敼鍙樿鍥劇粍浠剁殑鐘舵併?/p>
涓夈丆ontroller淇濆瓨鎵鏈塁ommand鐨勬槧灝勩侰ommand鍙互鑾峰彇Proxy瀵硅薄騫朵笌涔嬩氦浜掞紝閫氳繃鍙戦丯otification鏉ユ墽琛屽叾浠栫殑Command銆?/p>
涓婇潰鐨勪粈涔堝浠涔堢殑寮曠敤錛屽彲浠ヤ竴寮濮嬬湅鐨勬椂鍊欏緢闅劇悊瑙o紝鎴戜滑鏆傛椂涓嶇敤綆″畠璋佸璋佺殑寮曠敤鐨勩傝繖浜涘凡緇忕敱妗嗘灦涓烘垜浠鐞嗗ソ浜嗭紝鎴戜滑瑕佹墍瑕佸仛鐨勬槸緙栧啓鍏蜂綋鐨凜ommand錛孧ediator錛孭roxy銆?/p>
涓銆丳roxy鏄礋璐f搷浣滄暟鎹ā鍨嬬殑錛屼粈涔堟槸鏁版嵁妯″瀷錛熸暟鎹ā鍨嬪氨鏄暟鎹簱錛孹ML絳夌瓑銆傛垜浠彲浠ョ洿瑙傚湴鐞嗚В涓猴紝Proxy鏄敤鏉ュ鏁版嵁妯″瀷榪涜鏌ヨ銆佹彃鍏ャ佹洿鏂般佸垹闄ょ瓑鎿嶄綔鐨勭被銆傛搷浣滃畬鎴愬悗錛屽畠?yōu)兗氬彂閫丯otification錛屼篃灝辨槸閫氱煡錛屽憡璇夊叾瀹冧袱涓眰鎴戝凡緇忓畬鎴愬伐浣滀簡銆?/p>
浜屻丮ediator璐熻矗鎿嶄綔鍏蜂綋鐨勮鍥劇粍浠訛紝鍖呮嫭錛氭坊鍔犱簨浠剁洃鍚櫒錛屽彂閫佹垨鎺ユ敹Notification 錛岀洿鎺ユ敼鍙樿鍥劇粍浠剁殑鐘舵併傚ソ鍍忔娊璞′簡鐐廣傚叿浣撶殑璇村惂錛孧ediator鏄礋璐g鐞嗙敤鎴風(fēng)晫闈紝涓庣敤鎴瘋繘琛屼氦浜掓搷浣滅殑銆傚錛氱粰Button娣誨姞浜嬩歡錛屽綋鐢ㄦ埛鐐瑰嚮鎸夐挳鏃訛紝鍙戦丯otification錛屽憡璇塁ontroler鎴戜滑鎵ц浠涔堟牱鐨勬搷浣溿傛瘮濡傝繖鏄竴涓櫥褰曠殑鎸夐挳錛岄偅涔圡ediator灝變細鍛婅瘔鍙戦侀氱煡緇機ontroler錛屽憡璇夊畠瑕佹墽琛岀櫥褰曟搷浣溿傛澶栵紝Mediator榪樿礋璐g洿鎺ユ敼鍙樿鍥劇殑鐘舵併傚氨鍍忥紝鎴戠偣鍑諱簡鐧誨綍鎸夐挳鍚庯紝Mediator灝辨敼鍙樺畠錛岃鐧誨綍鎸夐挳涓嶈繃鐢紝閬垮厤閲嶅鎿嶄綔銆傚畠榪樺彲浠ュ湪瑙嗗浘涓婃樉紺轟竴鏉′俊鎭紝鍛婅瘔鎴戞鍦ㄦ墽琛岀櫥褰曟搷浣溿傛葷殑鏉ヨ錛孧ediator鏄敤鏉ョ鐞嗚鍥劇殑銆?/p>
涓夈丆ommand鍙互鑾峰彇Proxy瀵硅薄騫朵笌涔嬩氦浜掞紝閫氳繃鍙戦丯otification鏉ユ墽琛屽叾浠栫殑Command銆傚啀鎷夸笂闈㈢殑鐧誨綍渚嬪瓙浣滆В閲婏紝褰撶偣鍑諱簡鐧誨綍鎸夐挳鍚庯紝Mediator灝變細鍛婅瘔Controler瑕佹墽琛岀浉搴旂殑Command浜嗭紝姣斿LoginComand銆傛棦鐒舵槸鐧誨綍錛岄偅涔堣繕寰楄鐭ラ亾鐢ㄦ埛鐨勪俊鎭墠琛屻侰ommand灝變細鍙戦丯otification鍛婄煡Proxy錛屾垜闇瑕佹煇涓敤鎴風(fēng)殑淇℃伅銆傞偅涔圥roxy灝變細璁塊棶鏁版嵁搴擄紙涔熷彲浠ユ槸鍒殑鏁版嵁妯″瀷錛夛紝鏌ヨ瀵瑰簲鐨勭敤鎴蜂俊鎭紝鐒跺悗鍙戦丯otification閫氱煡Command鎴戝凡緇忔煡璇㈠ソ浜嗭紝宸妸淇℃伅榪斿洖緇機ommand榪涜楠岃瘉錛屼笌浜涘悓鏃訛紝Mediator涔熷彲浠ユ帴鏀禤roxy鍙戦佺殑Notification錛岄氳繃瑙嗗浘鍛婅瘔鐢ㄦ埛姝e湪楠岃瘉淇℃伅銆侰ommand楠岃瘉浜嗙敤鎴蜂俊鎭悗錛屽彂閫丯otification鎶婇獙璇佺粨鏋滆繑鍥炵粰Mediatory錛屽憡璇夌敤鎴烽獙璇佺殑緇撴灉銆傛垨鑰咃紝Command涔熷彲浠ュ彂閫丯otification鎵ц鍏跺畠鐨凜ommand鎿嶄綔錛屾瘮濡傞獙璇侀氳繃鍚庯紝璇誨彇鐢ㄦ埛鐨勮緇嗚祫鏂欍?/p>
涓婇潰鐨凜ommand錛孧ediator錛孭roxy鐨勫叿浣撳疄鐜扮被閮芥槸瑕佽嚜宸辯紪鍐欑殑錛屽伐浣滈噺榪樻槸姣旇緝澶х殑銆?/p>
PureMVC妗嗘灦鐨勫師鐞嗗ぇ姒傚氨鏄繖鏍峰瓙錛屽啓寰椾笉瓚崇殑鍦版柟榪樿鍚勪綅澶ц櫨澶氬鎸囩偣銆?/p>
棣栧厛鏄嬌鐢?/span>ExtJS鐨勫噯澶囧伐浣滐紝鎶?/span>adapter鍜?/span>resources涓や釜鏂囦歡澶癸紝鍜?/span>ext-all.js鏂囦歡澶嶅埗鍒版垜浠殑欏圭洰涓傜劧鍚庡湪欏甸潰涓紩鍏ワ紝浠g爜濡備笅錛?/span>
棣栧厛浠庡熀鏈殑Ext.onReady(Function fn,Object scope,boolean override)寮濮嬨俹nReady鏂規(guī)硶灝嗕細鍦ㄩ〉闈㈠姞杞藉畬鎴愬悗鎵ц錛岀浉褰撲簬鎴戜滑騫蟲椂甯哥敤鍒扮殑window.onload鏂規(guī)硶錛屽畠鏄疎xt.EventManager.onDocumentReady鐨勭緝鍐欑増銆俹nReady涓鍏辨湁涓変釜鍙傛暟錛氱涓涓弬鏁版槸欏甸潰鍔犺澆瀹屾垚鍚庤鎵ц鐨勫嚱鏁幫紝榪欎篃鏄垜浠敤鐨勬渶澶氱殑銆?/p>
function positionOffset(element)
{
var top=0, left=0;
do
{
top+=element.offsetTop || 0;
left+=element.offsetLeft || 0;
element=element.offsetParent;
}while(element);
return [top, left];
}
緇忚繃嫻嬭瘯錛孫K娌¢棶棰樸?/font>
澶у鏁版儏鍐典笅錛屾垜浠兘鏄嬌鐢℉ttpSession鏉ヤ繚瀛樼櫥褰曠敤鎴風(fēng)殑淇℃伅錛屽鏋滅敤鎴鋒墜鍔ㄧ偣鍑諱簡銆愭敞閿銆戯紝鎴戜滑灝卞緢杞繪槗鍦扮煡閬撲簡璇ョ敤鎴峰凡緇忎笅綰夸簡銆?/font>
浣嗘槸錛屽湪澶ч儴鍒嗘儏鍐典笅錛屾垜浠緢灝戜細鎵嬪姩鐐瑰嚮銆愭敞閿銆戞寜閽殑錛屾垜浠氬父鏄洿鎺ュ叧闂祻瑙堝櫒錛岃繖鏍鋒垜浠氨鏃犳硶鍦ㄣ愭敞閿銆戠殑鍔熻兘閲岄潰鑾峰緱鐢ㄦ埛涓嬬嚎鐨勪俊鎭簡銆?/font>
鎴戜滑閮界煡閬擄紝HttpSession鏄湁鏃墮檺鐨勩傛垜浠彲浠ヤ嬌鐢℉ttpSessionBindingListener 鏉ョ洃鍚暟鎹HttpSession鐨勭粦瀹氬拰瑙g粦銆?/font>
浠涔堟槸鏁版嵁瀵笻ttpSession鐨勭粦瀹氬拰瑙g粦鍛紵
鎶婃暟鎹繚瀛樺埌HttpSession涓彨鍋氱粦瀹氾紝鏁版嵁浠嶩ttpSession涓垹闄ゅ彨鍋氳В緇戙傚綋HttpSession澶辨晥鏃訛紝鏁版嵁鏄細鑷姩瑙g粦鐨勩?/font>
鍒╃敤榪欎釜鎴戜滑灝辮兘寰堣交鏉懼湴瀹炵幇鏌ョ湅鐢ㄦ埛鏄惁鍦ㄧ嚎鐨勫姛鑳戒簡銆?/font>
浠g爜濡備笅錛?/font>
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class UserInfo implements HttpSessionBindingListener {
public void valueBound(HttpSessionBindingEvent arg0) {
System.out.println("璇ョ敤鎴峰凡涓婄嚎錛?);
}
public void valueUnbound(HttpSessionBindingEvent arg0) {
System.out.println("璇ョ敤鎴峰凡涓嬬嚎錛?);
}
}
浠g爜寰堢畝鍗曪紝鍙鍦╲alueBound鍜寁alueUnbound涓疄鐜板氨琛屼簡銆?/font>
鍝堬紝寰堢畝鍗曞惂銆?/font>
寤虹珛涓寮犺〃錛屽寘鍚袱涓瓧孌碉細HttpSessionId鍜岀敤鎴風(fēng)殑Id銆傚綋鏈夋柊鐨凥ttpSession鍒涘緩鏃訛紝鎶婃柊鍒涘緩鐨凥ttpSessionId鎻掑叆鍒拌琛ㄤ腑錛屽鏋滆鐢ㄦ埛鐧誨綍錛屽垯淇敼鐩稿簲鐨凥ttpSessionId鐨勭敤鎴稩d涓哄綋鍓嶇敤鎴稩d銆傚綋HttpSession澶辨晥鏃訛紝鍒欏垹闄ゆ帀琛ㄤ腑鐨勭浉搴擧ttpSessionId鐨勮褰曘?/font>
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnlineUser implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("鍙堟湁浜虹櫥褰曚簡銆?);
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("鍙堟湁浜洪鍑轟簡銆?);
}
}
鏈鍚庯紝榪樿鍦╳eb.xml鏂囦歡涓厤緗竴涓嬬洃鍚櫒錛?/font>
<listener>
<display-name>listener</display-name>
<listener-class>info.OnlineUser</listener-class>
</listener>
澶у姛鍛婃垚浜嗐?/font>