锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩欧美二区,怡红院av一区二区三区,99久久香蕉http://www.aygfsteel.com/Kaixinhutu/緋婃秱zh-cnTue, 17 Jun 2025 15:28:56 GMTTue, 17 Jun 2025 15:28:56 GMT60AJAX+J2EE寮€鍙戠粍緇囨満鏋勭鐞嗙郴緇燂紙鎽樿嚜澶╂瀬緗戯級(jí)http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42079.html緋婃秱緋婃秱Thu, 20 Apr 2006 01:21:00 GMThttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42079.htmlhttp://www.aygfsteel.com/Kaixinhutu/comments/42079.htmlhttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42079.html#Feedback0http://www.aygfsteel.com/Kaixinhutu/comments/commentRss/42079.htmlhttp://www.aygfsteel.com/Kaixinhutu/services/trackbacks/42079.html 涓€銆?姒傝堪

AJAX鏄粖騫村垵鎵嶉棶涓栫殑鏂版妧鏈紝鏄疉synchronous JavaScript and XML鐨勭緝鍐欍€傚畠鏄竴緇勫紑鍙慦eb搴旂敤紼嬪簭鐨勬妧鏈紝瀹冧嬌嫻忚鍣ㄥ彲浠ヤ負(fù)鐢ㄦ埛鎻愪緵鏇翠負(fù)鑷劧鐨勬祻瑙堜綋楠屻€傛瘡褰撻渶瑕佹洿鏂版椂錛屽鎴風(fēng)Web欏甸潰鐨勪慨鏀規(guī)槸寮傛鐨勫拰閫愭澧炲姞鐨勩€傝繖鏍鳳紝AJAX鍦ㄦ彁浜eb欏甸潰鍐呭鏃跺ぇ澶ф彁楂樹(shù)簡(jiǎn)鐢ㄦ埛鐣岄潰鐨勯€熷害銆傚湪鍩轟簬AJAX鐨勫簲鐢ㄧ▼搴忎腑娌℃湁蹇呰闀挎椂闂寸瓑寰呮暣涓〉闈㈢殑鍒鋒柊銆傞〉闈腑闇€瑕佹洿鏂扮殑閭i儴鍒嗘墠榪涜鏇存敼錛屽鏋滃彲鑳界殑璇濓紝鏇存柊鏄湪鏈湴瀹屾垚鐨勶紝騫朵笖鏄紓姝ョ殑銆?br />
J2ee鏄竴縐嶇敤鏉ュ紑鍙戝垎甯冨紡緋葷粺鐨勪綋緋葷粨鏋勩€傚畠涓昏鏄敤Java綾誨紑鍙戜笟鍔″疄浣撱€傞€氳繃JSP鏉ヨ繛鎺ュ簲鐢ㄦ湇鍔″櫒銆?br />
鏈枃寮€鍙戜竴涓粍緇囨満鏋勭鐞嗗皬緋葷粺錛岄€氳繃榪欎釜瀹炰緥鏉ヤ粙緇嶅浣曠敤Ajax寮€鍙慦EB搴旂敤紼嬪簭銆傛湰緋葷粺鍏鋒湁澧炲姞銆佷慨鏀廣€佸垹闄ょ粍緇囨満鏋勭殑鍔熻兘銆傚悓鏃剁粰鏈烘瀯鍒嗛厤浜哄憳錛岃兘澧炲姞銆佷慨鏀廣€佸垹闄や漢鍛樸€?br />
浜屻€?鐣岄潰璁捐

鏍?wèi)缁撴瀯鏄ぇ澶氳蒋錃g緋葷粺涓父閲囩敤鐨勭粨鏋勫艦寮忋€傜敱浜庢爲(wèi)鍨嬬粨鏋勫眰嬈″垎鏄庛€佷笂涓嬬駭鍏崇郴娓呮銆佷笖灞曞紑鏀剁緝琛ㄨ揪淇℃伅鏂逛究銆佺晫闈篃杈冪編瑙傦紝鎵€浠ユ槸澶у鐑》浜庣敤姝ょ粨鏋勩€傜粍緇囨満鏋勭鐞嗘槸涓€鑸蔣浠跺熀鏈叿鏈夌殑銆傜粍緇囨満鏋勬槸鎸囧叕鍙哥殑緇勭粐緇撴瀯銆傞泦鍥㈠叕鍙稿彲鍖呮嫭鍒嗗叕瀛愬叕鍙革紝鍏徃涓嬮潰鍙堟湁縐戝銆傚憳宸ュ綊灞炰簬鎵€鍦ㄧ殑鍏徃銆傜郴緇熻繍琛屽悗鐨勭晫闈㈠涓嬶細(xì)

orgManager.htm鏄粍緇囨満鏋勭鐞嗙殑涓婚〉闈€€俉EB搴旂敤紼嬪簭鐣岄潰璁捐鏄潪甯擱噸瑕佺殑銆傚浣曞竷灞€銆佷箞鏍風(fēng)粍緇囧彲鐩存帴浣撶幇涓€涓漢鐨勮璁℃按騫熾€?br />
緇勭粐鏈烘瀯涓昏鍖呮嫭鏍?wèi)缁撴瀯銆佺粍緇囨満鏋勭紪杈戙€佷漢鍛樼紪杈戠瓑涓夊ぇ鍧楋紝濡備綍鍒嗘垚涓夊潡鍛紝鐒惰€屼竴鑸爲(wèi)鍨嬬粨鏋勭殑紿椾綋甯稿厛浜屽潡錛屾爲(wèi)鍨嬬粨鏋勭嫭鍗犱竴鍧楋紝鍙︿竴鍧楀張鍒嗘垚涓婁笅浜岄儴鍒嗭紝涓婇潰鏄満鏋勭紪鐮侊紝涓嬮潰鏄漢鍛樼紪鐮併€傚浐鍙互鎶婇〉闈㈠垝鍒嗘垚濡備笅鍥懼艦寮忥細(xì)

鏍?wèi)缁撴瀯鍖?
緇勭粐緙栫爜鍖?
浜哄憳綆$悊鍖?


鏄劇劧鎴戜滑鏄€氳繃琛ㄦ潵瀹炵幇銆傝繖鏄竴涓簩琛屼簩鍒楃殑琛紝涓旂涓€銆佷簩琛岀殑宸﹁竟鍒楀悎騫跺崟鍏冩牸銆備唬鐮佸涓嬶細(xì)

錛?TABLE border="1" width="100%" height="100%"錛?br />
錛淭R錛?br />
錛淭D rowspan="2"錛烇紲FONT face="瀹嬩綋"錛烇紲/FONT錛烇紲/TD錛?br />
錛淭D錛烇紲/TD錛?br />
錛?TR錛?br />
錛淭R錛?br />
錛淭D錛烇紲/TD錛?br />
錛?TR錛?br />
錛?TABLE錛?/td>


鎴戜滑鍦?鍖猴紙鍗曞厓鏍鹼級(jí)涓婂姞涓婁竴涓狣IV錛屽洜涓篋IV鍙互鍔ㄦ€佸湴婊氬姩錛屽茍涓斿彲浠ユ彃鍏ュ叾瀹冩帶浠躲€侱IV鐨刬d涓?divTree"錛屼笖椋庢牸璁劇疆涓烘孩鍑烘椂鑷姩婊氬姩錛屽涓庨珮閮戒負(fù)100%錛屽強(qiáng)婊″尯鍩熴€備唬鐮佸涓嬶細(xì)

錛渄iv id="divTree" style="width:100%; height:100%;background-color:#f5f5f5;border :1px solid Silver;overflow:auto;"錛?br />
錛?div錛?/td>


鎴戜滑鍦?鍖猴紙鍗曞厓鏍鹼級(jí)涓婁篃鍔犱笂涓€涓狣IV錛屽湪DIV閲屽啀鎻掑叆涓€涓〃鏍箋€傝〃鏍間笂鏀句笅鎺т歡錛岃繖寰堢畝鍗曪紝灝變笉璇︾粏璇翠簡(jiǎn)銆?br />
鎴戜滑鍦?鍖猴紙鍗曞厓鏍鹼級(jí)涓婂姞涓婁竴涓狣IV銆傛DIV鐨刬d涓? divContent "錛屼笖椋庢牸璁劇疆涓虹珫鐩存孩鍑烘椂鑷姩婊氬姩錛屽涓庨珮閮戒負(fù)100%錛屽強(qiáng)婊″尯鍩燂紝姝IV鐢ㄦ潵瑁呰澆浜哄憳?shù)俊鎭?鍦―IV閲屽啀鎻掑叆涓€涓〃鏍? 姝able鐨刬d涓? tbList "錛屾槸鐢ㄦ潵杈撳叆銆佹樉紺轟漢鍛樹(shù)綔鎭紝鍚屾椂鍦ㄦ琛ㄤ腑鎻掑叆涓€浜涘checkbox 銆乼ext銆乻elect絳夋帶浠躲€傝鏄庯紝琛ㄧ殑絎簩鍒楁槸鐢ㄦ潵鏀句漢鍛樺敮涓€緙栧彿鐨勶紝涓嶆樉紺恒€備唬鐮佸涓嬶細(xì)

錛渄iv id="divContent" style="height:100%; overflow-y:auto;" width="100%"錛?br />
錛渢able id="tbList" border="1" width="100%"錛?br />
錛渢r seqNo="1"錛烇紲td錛?br />
錛渢able border="1" width="100%"錛?br />
錛渢r錛?br />
錛渢d width="5%"錛烇紲input type="checkbox" value="on"錛烇紲/input錛?錛?td錛?br />
錛渢d width="0%" style="display:none"錛?錛渋nput type="text" size="20"錛烇紲/input錛烇紲/td錛?br />
錛渢d width="40%"錛烇紲input type="text" size="20"錛烇紲/input錛烇紲/td錛?br />
錛渢d width="25%"錛?br />
錛渟elect size="1" name="D1"錛?br />
錛渙ption value="0"錛炵敺錛?option錛?br />
錛渙ption selected="true" value="1"錛炲コ錛?option錛?br />
錛?select錛?br />
錛?td錛?br />
錛?tr錛?br />
錛?table錛?

錛?td錛烇紲/tr錛?br />
錛?table錛?br />
錛?div錛?

涓夈€?鍓嶇欏甸潰鐨勪富瑕佺紪鐮?br />
1. 鏍?wèi)鐨勫疄鐜?br />
鍦╓EB涓婂疄鐜版爲(wèi)緇撴瀯錛屽悓鏍鋒垜浠槸閫氳繃Ajax鏉ュ疄鐜扮殑銆傛爲(wèi)涓婂彲浠ユ樉紺鴻嚜瀹氫箟鐨勫浘鏍囷紝鍙互鎻掑叆銆佸垹闄ゃ€佺粨鐐廣€傚茍涓旂粨鐐瑰彲浠繪剰縐誨姩銆傝繖閲屾垜浠笉閲嶇偣璁叉爲(wèi)鐨勫疄鐜版妧鏈紝鎴戜滑宸茬粡灝佽濂戒簡(jiǎn)錛屼綘鍙鎸夎姹傚幓鏀瑰姩灝辨槸浜?jiǎn)銆?

1) 閿帴鏍?wèi)鍨嬫枃錃g

鍦紲head錛炰笌錛?head錛炰箣闂撮敭鎺ユ垜浠殑涓庢爲(wèi)鏈夊叧鐨勬枃浠? 浠g爜濡備笅錛?br />

錛渓ink rel="STYLESHEET" type="text/css" href="css/dhtmlXTree.css"錛?br />
錛渟cript src="js/dhtmlXCommon.js"錛烇紲/script錛?br />
錛渟cript src="js/dhtmlXTree.js"錛烇紲/script錛?


2) 瑁呰澆鏂規(guī)硶

鍦ㄩ〉闈㈢殑鏂囨。鎵撳紑鏃惰杞借嚜瀹氫箟鏂規(guī)硶, preLoadImages鏂規(guī)硶瀹炵幇鏍?wèi)鎺т欢鐨勫浘鏍囧畾涔夊Q宒oOnLoad瀹炵幇鏍?wèi)鎺т欢鐨勫浘鏍囧畾涔変唬鐮佸涓嬪Q?br />
錛渂ody onload="preLoadImages();doOnLoad();"錛?/td>


3) 緙栧啓鏂規(guī)硶

//doOnLoad瀹炵幇瑁呰澆騫舵樉紺烘爲(wèi)銆傝緗爲(wèi)灞炴€х瓑銆?br />
function doOnLoad(){

銆€OrgTree=new dhtmlXTreeObject(document.getElementById('divTree'),"100%","100%",0);

銆€//dhtmlXTreeObject鏄爲(wèi)瀵硅薄錛岄€氳繃鏂板緩瀵硅薄錛屾寚瀹氭爲(wèi)鏄劇ず鐨凞IV鍙畾涔夋爲(wèi)銆?br />
銆€OrgTree.setImagePath("imgs/");//璁劇疆鏍?wèi)鐨勫泟囨墍鍦ㄤ綅緗?br />
銆€OrgTree.setDragHandler();//璁劇疆鏍?wèi)缁撶傄?guī)嫋鍔?br />
銆€OrgTree.enableDragAndDrop(true) //璁劇疆鏍?wèi)缁撶傄?guī)槸鍚﹀彲鎷栧姩

銆€OrgTree.setDragHandler(myDragHandler); //璁劇疆鏍?wèi)缁撶傄?guī)嫋鍔ㄦ椂鎵€鎵ц鐨勬柟娉?br />
銆€OrgTree.setOnClickHandler(mySelectHandler); //璁劇疆鏍?wèi)鍗曞嚴(yán)L椂鎵€鎵ц鐨勬柟娉?br />
銆€//OrgTree.setXMLAutoLoading("Org.jsp");//瑁呰澆鏍?wèi)缁撶傄?guī)暟鎹€傛暟鎹潵婧愬Org.jsp鎵€榪斿洖鐨刋ML鏍煎紡鐨勫瓧絎︿覆錛屾暟鎹槸鍔ㄦ€佽杞斤紝涓斿綋灞曞紑鏃舵墠瑁呰澆銆?br />
銆€OrgTree.loadXML("root.xml?0");//瑁呰澆鏍?wèi)缁撶傄?guī)暟鎹€傛暟鎹潵婧恟oot.xml鏂囦歡錛屽茍涓斾粠xml鏂囦歡鐨処D鍙蜂負(fù)0澶勮鍙栨暟鎹€?br />
銆€//OrgTree.loadXML("Org.jsp");//瑁呰澆鏍?wèi)缁撶傄?guī)暟鎹€傛暟鎹潵婧愬Org.jsp鎵€榪斿洖鐨刋ML鏍煎紡鐨勫瓧絎︿覆,騫朵笖鏄竴嬈℃€у叏閮ㄨ杞芥暟鎹€?

}

//preLoadImages鏂規(guī)硶瀹炵幇鏍?wèi)鎺т欢鐨勫浘鏍囧畾涔?br />
function preLoadImages(){

銆€var imSrcAr = new Array("line1.gif","line2.gif","line3.gif","line4.gif","minus2.gif","minus3.gif",

"minus4.gif","plus2.gif","plus3.gif","plus4.gif","book.gif","books_open.gif","books_close.gif",

"magazine_open.gif","magazine_close.gif","tombs.gif","tombs_mag.gif","book_titel.gif")

銆€var imAr = new Array(0);

銆€for(var i=0;i錛渋mSrcAr.length;i++){

imAr[imAr.length] = new Image();

imAr[imAr.length-1].src = "imgs/"+imSrcAr[i]

銆€}

}


聽(tīng)緇勭粐綆$悊鐨勫疄鐜?br />
緇勭粐鍙互澧炲姞銆佸垹闄ゃ€佺紪杈戙€傚悓鏃跺綋閫夋嫨鏍?wèi)缁撶傄?guī)椂搴旇鎶婄粍緇囨樉紺哄嚭鏉ヤ緵緙栬緫錛屾煡鐪嬨€備負(fù)浜?jiǎn)瀹炵幇杩欎簺鍔熻兘锛屼綘鍙鎸夎姹傚幚L敼鍔ㄥ氨鏄簡(jiǎn)銆?br />
1) 鍏ㄥ眬鍙橀噺鐨勫畾涔?br />
璁稿鍦版柟鎴戜滑瑕佺敤鍒頒竴浜涘叕鍏卞彉閲忥紝鎴戜滑鍦紲script錛炰笌錛?script錛炰箣闂村畾涔夊叏灞€鍙橀噺, 浠g爜濡備笅錛?br />

var OrgTree = null; //緇勭粐鏍?wèi)Dom

var nextSeq = 0;//浜哄憳綆$悊鐨勯『搴忓彿錛堟祦姘村彿錛?br />
var personDom;//浜哄憳Dom

var CurrNodeId;//褰撳墠緇撶偣Id



2) 鍒濆鍖?br />
褰撻〉闈㈡墦寮€鏃舵垜浠鎺т歡濂介偅閮ㄥ垎璇ユ樉紺猴紝閭i儴鍒嗚闅愯棌銆備笖瀵瑰叏灞€鍙橀噺鐨勮祴鍊肩瓑,緇勭粐綾誨瀷瑁呰澆銆傚湪欏甸潰鐨勬枃妗f墦寮€鏃惰杞借嚜瀹氫箟鏂規(guī)硶init錛堬級(jí), init鏂規(guī)硶瀹炵幇鍒濆鍖栥€?br />

錛渂ody onload="init();"錛?/td>



init鏂規(guī)硶瀹炵幇濡備笅錛?br />

function init(){

銆€//瀹氫箟personDom涓轟竴涓猉MLDOM'瀵硅薄

銆€personDom= new ActiveXObject('Microsoft.XMLDOM');

銆€personDom.async = false;

銆€//瀹氫箟stylesheet涓轟竴涓猉MLDOM'瀵硅薄錛屼笖stylesheet涓簆ersonDom紜畾鏄劇ず椋庢牸

銆€stylesheet = new ActiveXObject('Microsoft.XMLDOM');

銆€stylesheet.async = false;

銆€stylesheet.load("addOrgPerson.xsl"); //瑁呰澆stylesheet鐨勯鏍煎畾涔夋枃浠?br />
銆€//瑁呰澆緇勭粐綾誨瀷鏁版嵁

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=GetOrgType", false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send();

銆€retXml=xmlhttp.responseText;

銆€// alert(retXml);

銆€//鎶婄粍緇囩被鍨嬫彃鍏ヤ笅鎷夊垪琛ㄦ帶浠朵腑

銆€var OrgDoc = new ActiveXObject('Microsoft.XMLDOM');

銆€OrgDoc.async = false;

銆€OrgDoc.loadXML(retXml);

銆€var root = OrgDoc.documentElement;

銆€oNodeList = root.childNodes;

銆€txtType.options.length =oNodeList.length;

銆€for (var i=0; i錛渙NodeList.length; i++)

銆€{

Item = oNodeList.item(i);

var OrgTypeId=Item.childNodes(0).text;

var OrgTypeName=Item.childNodes(1).text;

txtType.options[i].value=OrgTypeId;

txtType.options[i].text=OrgTypeName;

// txtType.options[0].

銆€}

}



3) 緙栧啓鏍?wèi)鎷栧姩鍙?qiáng)閫夋嫨緇撶偣鐨勬柟娉?br />

// myDragHandler瀹炵幇鏍?wèi)缁撶傄?guī)嫋鍔ㄦ椂閲嶆柊鎸囧畾鐖跺瓙鍏崇郴銆?br />
function myDragHandler(idFrom,idTo){

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=moveOrg&orgId=" + idFrom + "&newparentOrgId=" + idTo, false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send();

銆€retXml=xmlhttp.OrgponseText;

銆€return true;

}

// mySelectHandler瀹炵幇閫夋嫨鏍?wèi)缁撶偣瀵咕p葷粺鐨勬帶鍒訛紝鍚屾椂鏄劇ず緇勭粐淇℃伅鍙?qiáng)璇ゾl勭粐涓嬬殑浜哄憳銆?br />
function mySelectHandler(id){

銆€tbOrg.style.display="block";

銆€divOrgMemo.style.display="none";

銆€divOrgInfo.style.display="none";

銆€if(id==1)

銆€{

divOrgMemo.style.display="block";

div1.style.display="none";

div2.style.display="none";

div3.style.display="none";

divContent.style.display="none";

div5.style.display="none";

銆€}

銆€else

銆€{

divOrgInfo.style.display="block";

div1.style.display="block";

div2.style.display="block";

div3.style.display="block";

divContent.style.display="block";

div5.style.display="block";

銆€}

銆€CurrNodeId=id;

銆€//瑁呰澆緇勭粐淇℃伅騫舵樉紺哄湪緙栫爜鍜屽悕縐扮殑鏂囨湰鎺т歡涓娿€?

銆€loadOrg(id);

銆€//瑁呰澆鏌愮粍緇囦笅浜哄憳?shù)俊鎭?

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=GetPerson&orgId=" + id, false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send();

銆€retXml=xmlhttp.responseText;

銆€personDom.loadXML (retXml);

銆€//緇欎漢鍛樹(shù)俊鎭殑姣忚鍔犱笂搴忓彿

銆€for(var i=0; i錛減ersonDom.documentElement.childNodes.length; i++){

personDom.documentElement.childNodes[i].setAttribute("seqNo", nextSeq);

nextSeq++;

銆€}

銆€//浜哄憳?shù)俊鎭槃·哄湪divContent涓婇潰

銆€divContent.innerHTML = personDom.transformNode(stylesheet);

};

//瑁呰澆緇勭粐淇℃伅騫舵樉紺哄湪緙栫爜鍜屽悕縐扮殑鏂囨湰鎺т歡涓娿€?br />
function loadOrg(OrgId){

銆€if(OrgId == null){

OrgId = OrgTree.getSelectedItemId();

銆€}

銆€if(OrgId == ""){

tbOrg.style.display = "none";

return;

銆€}

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=loadOrg&OrgId=" + OrgId, false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send();

銆€retXml=xmlhttp.responseText;

銆€var OrgDoc = new ActiveXObject('Microsoft.XMLDOM');

銆€OrgDoc.async = false;

銆€OrgDoc.loadXML(retXml);

銆€if(OrgId != 1){

txtCode.value = OrgDoc.selectSingleNode("http://OrgCode").text;

txtName.value = OrgDoc.selectSingleNode("http://OrgName").text;

銆€}

銆€tbOrg.style.display = "block";

}



4) 寤虹珛緇勭粐

緇勭粐寤虹珛涓昏鏄€氳繃璋冪敤XMLHTTP瀵硅薄鏉ュ疄鐜般€傛垜浠富瑕佸浼?xì)濡備綍璋冪敤XMLHTTP銆傜粍緇囧緩绔嬪簲璇ュ湪鍚庡彴瀹炵幇錛屾妸緇勭粐淇℃伅鎻掑叆鏁版嵁搴撲腑銆傝繖閲屾垜浠€氳繃JSP鏉ュ疄鐜般€傛垜浠殑Org.jsp 鏂囦歡涓湁涓猚reateOrg鏂規(guī)硶錛岃鏂規(guī)硶浼犻€掍竴涓埗ID銆?br />

function createOrg(parentOrgId){

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=createOrg&parentOrgId=" + parentOrgId, false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send();

銆€retXml=xmlhttp.responseText;

銆€var orgId = (new Number(retXml)).toString();

銆€return orgId;

}


5) 鍒犻櫎緇勭粐

緇勭粐鍒犻櫎鍚屾牱鏄皟鐢∣rg.jsp 鏂囦歡涓殑deleteOrg鏂規(guī)硶鏉ュ疄鐜幫紝璇ユ柟娉曚紶閫掓墍鍒犻櫎鐨勭粨鐐笽D銆?br />
function deleteOrg(){

銆€var OrgId = OrgTree.getSelectedItemId();

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=deleteOrg&OrgId=" + OrgId, false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send();

}


6) 緙栬緫緇勭粐

緇勭粐淇敼鏄皟鐢∣rg.jsp 鏂囦歡涓殑modifyOrg鏂規(guī)硶鏉ュ疄鐜幫紝璇ユ柟娉曚紶閫掓墍淇敼鐨勭粨鐐笽D銆傚悓鏃朵慨鏀圭殑鏁版嵁閫氳繃鑷畾涔夌殑XML鏍煎紡鐨勫瓧絎︿覆浼犻€?榪欐椂閫氳繃send瀛楃涓叉潵瀹炵幇銆備慨鏀瑰墠鏁版嵁涓€寰嬭楠岃瘉鍏跺悎娉曟€э紝騫舵彁紺洪敊璇俊鎭€?br />
function modifyOrg(){

銆€if(OrgTree.getSelectedItemId() == ""){

return "N";

銆€}

銆€if(txtCode.value == ""){

alert("璇瘋緭鍏ョ紪鐮侊紒");

return "N";

銆€}

銆€if(txtName.value == ""){

alert("璇瘋緭鍏ュ悕縐幫紒");

return"N";

銆€}

銆€var OrgId = OrgTree.getSelectedItemId();

銆€var OrgKind;

銆€//alert(txtType.options[txtType.selectedIndex].value)

銆€var strModify = "錛?xml version='1.0' encoding='gb2312'?錛? +

銆€"錛渄ata錛? +

銆€"錛淥rgCode錛烇紲![CDATA[" + txtCode.value + "]]錛烇紲/OrgCode錛? +

銆€"錛淥rgName錛烇紲![CDATA[" + txtName.value + "]]錛烇紲/OrgName錛? +

銆€"錛淥rgKind錛烇紲![CDATA[" + txtType.options[txtType.selectedIndex].value+ "]]錛烇紲/OrgKind錛? +

銆€"錛?data錛?;

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=modifyOrg&OrgId=" + OrgId, false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send(strModify);

銆€OrgTree.setItemText(OrgTree.getSelectedItemId(),txtName.value);

}
3. 浜哄憳綆$悊鐨勫疄鐜?br />
浜哄憳鍙互澧炲姞銆佸垹闄ゃ€佺紪杈戙€傚悓鏃跺綋閫夋嫨鏍?wèi)缁撶傄?guī)椂搴旇鎶婁漢鍛樻樉紺哄嚭鏉ヤ緵緙栬緫銆佹煡鐪?.....

1) 澧炲姞浜哄憳

浜哄憳澧炲姞瀹炵幇鐨勫師鐞嗘槸鍦╬ersonDom涓姞鍏ョ粨鐐筽eorsone錛岃緇撶偣鐩稿綋浜庤〃鐨勪竴琛岋紝璁劇疆灞炴€с€傚悓鏃跺湪peorsone涓笉緇у湴鍔犲叆鍏跺畠緇撶偣錛屼唬琛ㄦ暟鎹簱鐨勫瓧孌碉紝涓斿繀欏諱笌XLT鏂囦歡鐨勬爣鍙峰悓鍚嶃€傝繖浜涚粨鐐圭浉褰撹琛岀殑鍒椼€傛渶鍚庡湪琛ㄤ腑鎻掑叆涓€琛岋紝琛屼笂鎻掑叆涓€鍒楋紝騫舵樉紺轟箣銆?br />
function addPerson(){

銆€var seqNo = nextSeq;

銆€nextSeq++;

銆€var peorsonNode = personDom.createNode("1", "peorsone","");

銆€peorsonNode.setAttribute("isNew", "Y");

銆€peorsonNode.setAttribute("isDelete", "N");

銆€peorsonNode.setAttribute("seqNo", seqNo);

銆€personDom.documentElement.appendChild(peorsonNode);

銆€var PersonId= personDom.createNode("1", "personId", "");

銆€peorsonNode.appendChild(PersonId);

銆€var personCode= personDom.createNode("1", "personCode", "");

銆€peorsonNode.appendChild(personCode);

銆€var PersonName= personDom.createNode("1", "personName", "");

銆€peorsonNode.appendChild(PersonName);

銆€var Sex= personDom.createNode("1", "sex", "");

銆€peorsonNode.appendChild(Sex);

銆€var tr = tbList.insertRow(tbList.rows.length);

銆€tr.setAttribute("seqNo", seqNo);

銆€var td = tr.insertCell(0);

銆€td.innerHTML = peorsonNode.transformNode(stylesheet);

}


2) 鍒犻櫎浜哄憳

浜哄憳鍒犻櫎鍚屾牱鏄皟鐢∣rg.jsp 鏂囦歡涓殑deletePerson鏂規(guī)硶鏉ュ疄鐜幫紝璇ユ柟娉曚紶閫掓墍鍒犻櫎鐨勪漢鍛業(yè)D銆傚浣曠‘瀹氫漢鍛業(yè)D鏄€氳繃璇誨彇闅愯棌鐨処D錛屽茍鎵弿鏁翠釜琛紝鐪嬮偅浜涜閫変腑銆傝繖閲屾垜浠娉ㄦ剰鏄彁渚涘欏歸€夋嫨鐨勩€?br />
function deletePerson(){

銆€for(var i=0; i錛渢bList.rows.length; i++){

var row=tbList.rows[i].cells[0].children[0].rows[0];

if(row.cells[0].children[0].checked)

{

銆€var personId=row.cells[1].children[0].value;

銆€if(personId錛?)

銆€{

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.open("POST","Org.jsp?mode=deletePerson&personId=" + personId, false);

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xmlhttp.send();

銆€}

銆€tbList.deleteRow(i);

銆€i--;

}

銆€}

}


3) 緙栬緫浜哄憳

浜哄憳?shù)慨鏀规垜浠鍒ゅ畾鍝簺琛岃淇敼浜?jiǎn)銆傚垰澧炲姞浣嗘病淇濆瓨鐨勮搴旇鏄柊澧炶€屼笉鏄慨鏀圭殑銆?br />
function save(){

銆€if( modifyOrg()=="N")

銆€{

return;

銆€}

銆€for(var i=0; i錛渢bList.rows.length; i++)

銆€{

var row=tbList.rows[i].cells[0].children[0].rows[0];

var personId=row.cells[1].children[0].value;

var seqNo = tbList.rows[i].getAttribute("seqNo");

var staffNode = personDom.selectSingleNode("http://peorsone[@seqNo='" + seqNo + "']");

var personCode=row.cells[2].children[0].value;

var personName=row.cells[3].children[0].value;

var sex=row.cells[4].children[0].value; //alert(staffN;ode );

if(staffNode.getAttribute("isNew") == "Y")

{

銆€createPerson(CurrNodeId,personCode,personName,sex);

}

else

{

銆€var strXML = "錛?xml version='1.0' encoding='gb2312'?錛? +

"錛渄ata錛? +

"錛減ersonCode錛烇紲![CDATA[" + personCode+ "]]錛烇紲/personCode錛? +

"錛減ersonName錛烇紲![CDATA[" + personName + "]]錛烇紲/personName錛? +

"錛渟ex錛烇紲![CDATA[" + sex+ "]]錛烇紲/sex錛? +

"錛減ersonId錛烇紲![CDATA[" + personId+ "]]錛烇紲/personId錛? +

"錛?data錛?;

銆€//alert(strXML );

銆€var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

銆€xmlhttp.open("POST","Org.jsp?mode=modifyPerson", false);

銆€xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

銆€xmlhttp.send(strXML );

}

銆€}

}


鍥涖€?XML涓嶺SL鏂囦歡璁捐

XML鏄鍙墿灞曠殑鏍囪璇█錛屽畠鍏鋒湁寮€鏀劇殑銆佸彲鎵╁睍鐨勩€佸彲鑷弿榪扮殑璇█緇撴瀯錛屽畠宸茬粡鎴愪負(fù)緗戜笂鏁版嵁鍜屾枃妗d紶杈撶殑鏍囧噯銆俋SLT鐨勭洰鐨勬槸灝嗕俊鎭唴瀹逛笌 Web 鏄劇ず鍒嗙錛孒TML 閫氳繃鎸夋娊璞℃蹇碉紙濡傛钀姐€侀噸鐐瑰拰緙栧彿鍒楄〃錛夊畾涔夋樉紺烘潵瀹炵幇璁懼鐙珛鎬с€俋SLT鐢ㄦ潵鍏蜂綋鏄劇ず鎺т歡錛岃緗帶浠墮鏍箋€?br />
Ajax涓昏浣跨敤XML鍜孹SLT榪涜鏁版嵁浜ゆ崲涓庡鐞嗐€?br />
1. 鏍?wèi)淇℃伅鐨刋ML鏂囦歡(瑙乺oot.xml鏂囦歡)

XML鏄爣璁拌璦€錛屽厓绱犲繀欏繪垚瀵瑰嚭鐜般€傛爲(wèi)緇撴瀯涓互tree涓烘牴緇撶偣錛屼互item涓虹粨鐐逛綋錛屽睘鎬ext鎸囧嚭緇撶偣鎵€鏄劇ず鐨勬枃鏈紝id鎸囧嚭鍞竴鐨勬墍鏍囪瘑鍙楓€?br />

錛?xml version='1.0' encoding='gb2312'?錛?br />
錛渢ree id="0"錛?br />
錛渋tem child="1" text="緇勭粐" id="1" 錛?br />
錛?item錛?

錛?tree錛?/td>


榪欐枃浠跺茍涓嶆槸蹇呰鐨勶紝鍙槸涓轟簡(jiǎn)緋葷粺鑳界嫭绔嬭繍琛屾墠鍔犵殑銆備簨瀹炲鏋滆繛鎺ヤ簡(jiǎn)鍚庡彴鏁版嵁鏄笉闇€瑕佺殑銆傚彧瑕佸惂OrgTree.loadXML("root.xml?0")鏀逛負(fù)OrgTree.loadXML("Org.jsp")灝卞彲浠ヤ簡(jiǎn)銆?br />
2. 浜哄憳?shù)俊鎭疿ML鏂囦歡(瑙乸eorson.xml鏂囦歡)

璇存槑![CDATA[]]鍙湪浠諱綍鏄劇ず浠諱綍鏍煎紡鐨勬枃鏈紝鏂囨湰涓彲鎻掑叆鍏跺畠浠諱綍瀛楃銆傝繖鏂囦歡涔熶笉鏄繀瑕佺殑銆?br />
3. 浜哄憳?shù)俊鎭睍鐜扮殑xsl鏂囦歡錛堣addOrgPerson.xsl鏂囦歡錛?br />
xsl鏂囦歡鍚屾牱鏄疿ML鏍煎紡鏂囦歡銆傛墍浠ヤ竴寰嬮伒瀹圶ML鏍囧噯銆備笅闈㈠涓昏鐨勮璁茶В錛?br />
錛?xml version="1.0" encoding="gb2312"?錛?br />
//榪欐槸瀹氫箟xml鏂囦歡鐨勯琛屻€傜敤鏉ユ寚鏄庣増鏈強(qiáng)瀛楃闆?br />
錛渪sl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="JavaScript"錛?br />
//榪欓噷瀹氫箟浜?jiǎn)stylesheet 鍏冪礌銆傚茍鎸囧嚭鍏跺浗闄呭懡鍚嶇殑緇勭粐鍙?qiáng)璇a€銆?

錛渪sl:template match="/"錛?br />
錛渪sl:apply-templates select="peorsones"/錛?br />
錛?xsl:template錛?br />
//涓婇潰鏄尮閰嶇殑瑙勫垯銆?/"琛ㄧず浠庢牴緇撳紑濮嬪幓鍖歸厤銆傚尮閰嶅埌涓嬮潰鐨刾eorsones鏍囪銆傝繖鏄鍒欒〃杈懼紡鏈夊叧鐨勫闂€傛垜浠彧瑕佺悊瑙e氨鍙互銆?br />
錛渪sl:template match="peorsones"錛?br />
//褰撳尮閰嶄笂peorsones鏃舵墍瑕佸仛鐨勪簨鎯呫€?br />
錛渢able id="tbList" border="1" width="100%"錛?br />
//瀹氫箟涓€涓猧d涓?tbList鐨勮〃鏍箋€傛琛ㄦ牸鏄樉紺哄湪WEB涓婄殑

錛渪sl:for-each select="peorsone"錛?br />
//寰幆鍖歸厤peorsone

錛渢r錛?br />
//瀹氫箟tbList琛ㄦ牸鐨勪竴琛岋紝騫跺湪琛屼笂澧炲姞涓€涓彨seqNo鐨勫睘鎬у悕錛屽€間負(fù)鍖歸厤鍒扮殑seqNo錛堝簭鍙鳳級(jí)

錛渪sl:attribute name="seqNo"錛烇紲xsl:value-of select="@seqNo"/錛烇紲/xsl:attribute錛?br />
錛渢d錛?br />
//瀹氫箟琛屼笂鐨勪竴鍒楋紝鍒楀張鍘誨尮閰?br />
錛渪sl:apply-templates select="."/錛?br />
錛?td錛?br />
錛?tr錛?br />
錛?xsl:for-each錛?

錛?table錛?br />
錛?xsl:template錛?br />
錛渪sl:template match="peorsone"錛?br />
錛渢able border="1" width="100%"錛?br />
錛渢r錛?br />
//瀹氫箟瀹戒負(fù)5%鐨勪竴鍒楋紝鍦ㄨ鍒椾笂鎻掑叆涓€涓猚heckbox鎺т歡

錛渢d width="5%"錛?br />
錛渋nput type="checkbox" value="on" size="10"錛烇紲/input錛?br />
錛?td錛?br />
//瀹氫箟涓€涓笉鏄劇ず鐨勫垪錛屽湪璇ュ垪涓婃彃鍏ヤ竴涓猼ext鎺т歡錛宼ext鐨勫€間負(fù)鍖歸厤鍒扮殑personId錛堜漢鍛業(yè)d錛?br />
錛渢d style="display:none"錛?br />
錛渋nput type="text" size="25"錛?br />
錛渪sl:attribute name="value"錛烇紲xsl:value-of select="personId"/錛烇紲/xsl:attribute錛?br />
錛?input錛?

錛?td錛?br />
錛渢d width="30%"錛?

錛渋nput type="text" size="20"錛?

錛渪sl:attribute name="value"錛烇紲xsl:value-of select="personCode"/錛烇紲/xsl:attribute錛?

錛?input錛?

錛?td錛?

錛渢d width="40%"錛?

錛渋nput type="text" size="40"錛?br />
錛渪sl:attributename="value"錛烇紲xsl:value-of select="personName"/錛烇紲/xsl:attribute錛?

錛?input錛?br />
錛?td錛?br />
//瀹氫箟涓€涓獁idth涓?8%鐨勫垪錛屽湪璇ュ垪涓婃彃鍏ヤ竴涓笅鎷夊垪琛╯elect 鎺т歡錛宻elect鐨勫€煎鏋滃尮閰嶅埌涓?鏃跺垯涓?鐢?錛?鏃跺垯涓?濂?

錛渢d width="28%"錛?br />
錛渟elect size="1"錛?br />
錛渙ption value="0"錛?br />
錛渪sl:if test=".[sex=0]"錛?br />
錛渪sl:attribute name="selected"錛瀟rue錛?xsl:attribute錛?br />
錛?xsl:if錛?br />
鐢?br />
錛?option錛?br />
錛渙ption value="1"錛?br />
錛渪sl:if test=".[sex=1]"錛?br />
錛渪sl:attribute name="selected"錛瀟rue錛?xsl:attribute錛?br />
錛?xsl:if錛?

濂籌紲/option錛?br />
錛?select錛?br />
錛?td錛?br />
//瀹氫箟涓€鍒楋紝鍦ㄨ鍒椾笂鎻掑叆涓€涓猙utton鎺т歡錛宱nclick 浜嬩歡涓鴻嚜瀹氫箟鐨勬柟娉曪紝璇ユ柟娉曚紶閫掑綋鍓嶅崟鍑葷殑鎸夌航

錛渢d width="*"錛?

錛渂utton onclick="openPersonRolePage(this)" style="width: 36; height: 21"錛炶鑹詫紲/button錛?br />
錛?td錛?br />
錛?tr錛?br />
錛?table錛?br />
錛?xsl:template錛?br />
錛?xsl:stylesheet錛?/td>


浜斻€?鏁版嵁鎺ュ彛鐨勫疄鐜?/strong>錛堣Org.jpg鏂囦歡錛?br />
Org.JSP鏂囦歡鐢ㄦ潵鍦ㄦ湇鍔″櫒涓婅繍琛孞ava鐨勭被涓庡墠鍙皐eb欏典箣闂存灦璧蜂竴搴фˉ銆傚彇鍒頒腑闂翠歡鐨勬帴鍙d綔鐢ㄣ€?br />
榪欓噷鍒嗘瀽閮ㄥ垎浠g爜錛?br />

錛?@ page contentType="text/html; charset=GBK" %錛?br />
錛?@ page import="java.sql.*" %錛?br />
錛?@ page import="javax.naming.*" %錛?br />
錛?@ page import="javax.sql.*" %錛?br />
錛?@ page import="tool.*" %錛?br />
錛?@ page import="orgNew.*" %錛?br />
錛?@ page import="org.w3c.dom.*" %錛?br />
//涓婇潰涓昏鏄紩鐢ㄤ竴浜沯ava綾?br />
錛?

try{

銆€//request.setCharacterEncoding("GBK");

銆€Document doc = XmlTool.createDocumentFromRequest(request);

銆€//寤虹珛web闈㈡枃妗h姹傜殑鏂囨。瀵硅薄

銆€Connection conn = ConnTool.getConnectionFromPool();

銆€//鑾峰彇璇鋒眰鐨勬柟娉曞悕

銆€String mode=request.getParameter("mode");

銆€//out.println("ccc");

銆€//濡傛灉鏂規(guī)硶涓病鏈夊叾瀹冨弬鏁板垯璇誨彇緇勭粐鏍?wèi)鏁版?br />
銆€if(mode == null){

/* int OrgId = Integer.parseInt(request.getParameter("id"));

String str = orgManager.getChildOrg(OrgId, conn);

out.println(str);

*/

銆€String str = orgManager.getTree(conn);

銆€//out.println(str);

銆€out.println(str);

}else if(mode.equals("createOrg")){

銆€//濡傛灉鏄痗reateOrg鏂規(guī)硶鍒欏緩绔嬩竴涓粍緇?br />
銆€int parentOrgId = Integer.parseInt(request.getParameter("parentOrgId"));

銆€//鍙栧嚭浼犻€掓潵鐨勭涓€涓弬鏁皃arentOrgId

銆€int OrgId = orgManager.createOrg(parentOrgId, conn);

銆€//璋冪敤orgManager 綾葷殑createOrg鏂規(guī)硶鏉ュ緩绔嬩竴涓粍緇?br />
銆€out.println(OrgId);

銆€//榪斿洖緇撴灉

}

conn.close();

}

catch(Exception e){

銆€e.printStackTrace();

}

%錛?/td>



鍏€?鍚庡彴鏁版嵁鐨勫疄鐜?/b>

1. 鏁版嵁緇撴瀯鐨勫畾涔?br />
榪欓噷錛屾垜浠富瑕佹湁涓変釜琛ㄣ€備竴涓槸緇勭粐緇撴瀯琛紝涓€涓槸浜哄憳琛╬erson錛屼竴涓粍緇囦漢鍛樺叧鑱旇〃orgPerson銆傜粍緇囩粨鏋勮〃鏈塐rgCode錛堢粍緇囦唬鐮侊級(jí)銆丱rgName錛堢粍緇囧悕縐幫級(jí)銆乷rgId錛堢粍緇嘔d錛? parentOrgId錛堢埗Id錛夈€備漢鍛樿〃鏈塸ersonCode錛堜漢鍛樹(shù)唬鐮侊級(jí)銆乸ersonName錛堜漢鍛樺悕縐幫級(jí), sex錛堟€у埆錛夈€乸ersonId錛堜漢鍛業(yè)d錛夈€俹rgPerson琛ㄦ湁orgId, personId銆?br />
2. 鏁版嵁搴撶殑榪炴帴

WEB搴旂敤紼嬪簭甯哥敤MySQL浣滃悗鍙版暟鎹簱錛岃繖鏄洜涓篗ySQL綆€鍗曘€侀珮鏁堛€傝繖閲屾垜浠篃鐢∕ySQL浣滀負(fù)鏁版嵁搴撱€侸ava涓敤jdbc榪炴帴鏁版嵁搴撱€備笅闈㈡槸榪炴帴鏁版嵁搴撶殑CODE錛?br />

public static Connection getConnectionFromPool() throws Exception {

銆€Context ctx = new InitialContext();

銆€DataSource ds = (DataSource) ctx.lookup("java:/erpds");

銆€return ds.getConnection();

}

/**

* 鍙栨暟鎹簱閾炬帴瀵硅薄

* @return Connection 鏁版嵁搴撻摼鎺ュ璞?br />
* @throws Exception

*/

/*

public static Connection getDirectConnection() throws Exception {

銆€Class.forName("com.sybase.jdbc2.jdbc.SybDriver");

銆€String url = "jdbc:sybase:Tds:19.64.13.16:4100/wydb?charset=iso_1";

銆€String user = "sa";

銆€String password = "2860008";

銆€Connection conn = DriverManager.getConnection(url, user, password);

銆€return conn;

}

*/


. 涓氬姟閫昏緫灞傜殑瀹炵幇

鍚庡彴寮€鍙戞垜浠敤Java綾繪潵瀹炵幇銆傝繖閲屾垜浠紑鍙戜簡(jiǎn)涓€涓猳rgNew鍖咃紝綾誨悕涓簅rgManager銆傛綾誨皝瑁呬簡(jiǎn)涓庢暟鎹簱鎿嶄綔鏈夊叧鐨勬柟娉曘€傞€氳繃main鍙皟璇曠▼搴忕殑姝g‘鎬с€?br />
榪欓噷緇欏嚭浜?jiǎn)鏂板鍔犱竴涓粍緇囩殑鍏ㄩ儴浠g爜鍜岄€氳繃XML鍙栧緱鏍?wèi)缁撴瀯淇℃伅鐨勪唬鐮佸Q屾爲(wèi)緇撴瀯閫氳繃閫掑綊瀹炵幇銆?br />

package orgNew;// Java綾繪墍鎵撶殑鍖?br />
import tool.*;

import java.sql.*;

import java.util.*; // 寮曠敤Java綾葷殑

public class orgManager {

銆€public orgManager() { }

銆€public static void main(String[] args) throws Exception {

Connection conn = tool.ConnTool.getDirectConnection();// 寮曠敤鏁版嵁璁塊棶綾?br />
conn.setAutoCommit(false);

orgManager orgManager1 = new orgManager();

orgManager1.createOrg(0, conn); //嫻嬭瘯寤虹珛緇勭粐鏄惁姝g‘

銆€}

銆€//寤虹珛涓€涓粍緇?br />
銆€public static int createOrg(int parentOrgId, Connection conn) throws

銆€Exception {

String sql = "insert into Org (OrgName, parentOrgId) values('鏂扮粍緇?, ?)";

PreparedStatement pstat = conn.prepareStatement(sql);

pstat.setInt(1, parentOrgId);

pstat.executeUpdate();

pstat.close();

Statement stat = conn.createStatement();

String sql2 = "select max(OrgId) from Org";

ResultSet rs = stat.executeQuery(sql2);

rs.next();

int OrgId = rs.getInt(1);

rs.close();

stat.close();

System.out.println(OrgId);

return OrgId;

銆€}

}

//閫氳繃閫掑綊寰楀埌緇勭粐淇℃伅鐨刋ML鏍煎紡鐨勬暟鎹?br />
public static String getTree(Connection conn) throws

Exception {

銆€StringBuffer ret = new StringBuffer();//瀹氫箟鍙紦鍐茬殑瀛楃嫻?br />
銆€ret.append("錛?xml version='1.0' encoding='gb2312'?錛烇紲tree id='0'錛?);//瀹氫箟XML鏍煎紡鐨勫ご淇℃伅

銆€ret.append(" 錛渋tem child='1' text='緇勭粐' id='1' 錛?);//鎻掑叆緇撶偣浣撱€傛敞鏍?wèi)缁撶偣浠tem涓烘爣璁?

銆€ret.append(getChildTree(1, conn));

銆€ret.append("錛?item錛?);//緇撶偣浣撶粨鏉熸爣璁?br />
銆€ret.append("錛?tree錛?);//鏍?wèi)缁撴潫鏍囪?br />
銆€return ret.toString();//榪斿洖瀛楃嫻?br />
}

public static String getChildTree(int OrgId, Connection conn) throws

Exception {

銆€StringBuffer ret = new StringBuffer();

銆€String sql = "select a.OrgId, a.OrgName, a.OrgCode,count(b.parentOrgId) from Org a " +

"left join Org b on a.OrgId = b.parentOrgId " +

"where a.parentOrgId = ? " +

"group by a.OrgId, a.OrgName";

銆€PreparedStatement pstat = conn.prepareStatement(sql);

銆€pstat.setInt(1, OrgId);

銆€ResultSet rs = pstat.executeQuery();

銆€while (rs.next()) {

int childOrgId = rs.getInt(1);

String childOrgName = rs.getString(2);

String childOrgCode = rs.getString(3);

if (childOrgCode == null) {

銆€childOrgCode = " ";

}

if (childOrgName == null) {

銆€childOrgName = "鏂扮粍緇?;

}

int childCount = rs.getInt(3);

if (childCount 錛?0) {

銆€childCount = 1;

}

ret.append("錛渋tem child='" + childCount + "' text='" + childOrgName +

"' id='" +childOrgId + "' code='"+childOrgCode+"'錛?);

ret.append(getChildTree(childOrgId, conn));

ret.append("錛?item錛?);

銆€}

銆€rs.close();

銆€pstat.close();

銆€return ret.toString();

}

鍏跺畠浠g爜瑙乷rgManager.java鏂囦歡銆?br />
涓冦€?鎬葷粨

鏈枃浠墮€氳繃涓€涓疄渚嬪叏闈粙緇嶄簡(jiǎn)Ajax寮€鍙戠殑鍚勪釜緇嗚妭銆傞€氳繃涓嶫2ee鐨勭粨鍚堟潵瀹炵幇涓夊眰鍒嗗竷寮忓紑鍙戠殑灞傛鍒掑垎錛屽悗鍙頒笌鍓嶇鐨勮皟鐢ㄣ€傛暟鎹殑璇誨彇銆佽闂強(qiáng)灞曠幇銆?

閫氳繃榪欎釜瀹炰緥錛屾垜浠彲瑙侊紝Ajax浣縒EB涓殑鐣岄潰涓庡簲鐢ㄥ垎紱匯€傛暟鎹笌鍛堢幇鍒嗙鐨勫垎紱伙紝鏈夊埄浜庡垎宸ュ悎浣溿€佸噺灝戦潪鎶€鏈漢鍛樺欏甸潰鐨勪慨鏀歸€犳垚鐨刉EB搴旂敤紼嬪簭閿欒銆佹彁楂樻晥鐜囥€佷篃鏇村姞閫傜敤浜庣幇鍦ㄧ殑鍙戝竷緋葷粺銆備篃鍙互鎶婁互鍓嶇殑涓€浜涙湇鍔″櫒璐熸媴鐨勫伐浣滆漿瀚佸埌瀹㈡埛绔紝鍒╀簬瀹㈡埛绔棽緗殑澶勭悊鑳藉姏鏉ュ鐞嗐€?br />
Ajax鏄紶緇焀EB搴旂敤紼嬪簭鐨勪竴涓漿鍙樸€備互鍓嶆槸鏈嶅姟鍣ㄦ瘡嬈$敓鎴怘TML欏甸潰騫惰繑鍥炵粰瀹㈡埛绔紙嫻忚鍣級(jí)銆侫jax鐞嗗康鐨勫嚭鐜幫紝鎻紑浜?jiǎn)鏃犲堜h柊鏇存柊欏甸潰鏃朵唬鐨勫簭騫曪紝騫舵湁浠f浛浼犵粺web寮€鍙戜腑閲囩敤form(琛ㄥ崟)閫掍氦鏂瑰紡鏇存柊web欏甸潰鐨勮秼鍔匡紝鍙互綆楁槸涓€涓噷紼嬬銆?br />
鎬諱箣錛孉jax閫傜敤浜庝氦浜掕緝澶氾紝棰戠箒璇繪暟鎹紝鏁版嵁鍒嗙被鑹ソ鐨刉EB搴旂敤銆?/p>

緋婃秱 2006-04-20 09:21 鍙戣〃璇勮
]]>
璇﹁ВXML涓嶫2EE涔嬮棿緇勫悎鎶€鏈殑綺鵑珦 --錛堟憳鑷禌榪綉http://www.ccidnet.com/錛?/title><link>http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42077.html</link><dc:creator>緋婃秱</dc:creator><author>緋婃秱</author><pubDate>Thu, 20 Apr 2006 01:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42077.html</guid><wfw:comment>http://www.aygfsteel.com/Kaixinhutu/comments/42077.html</wfw:comment><comments>http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Kaixinhutu/comments/commentRss/42077.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Kaixinhutu/services/trackbacks/42077.html</trackback:ping><description><![CDATA[ <span id="wmqeeuq" class="top11">褰撳墠錛孞ava 2騫沖彴浼佷笟鐗堬紙J2EE錛夋灦鏋勫湪鍘傚晢甯?jìng)鍦哄拰寮€鍙戣€呯ぞ鍖轟腑鍊嶅彈鎺ㄥ磭銆備綔涓轟竴縐嶅伐鍏鳳紝鍙墿灞曟爣璁拌璦€錛圶ML錛夌畝鍖栦簡(jiǎn)鏁版嵁浜ゆ崲銆佽繘紼嬮棿娑堟伅浜ゆ崲榪欎竴綾葷殑浜嬫儏錛屽洜鑰屽寮€鍙戣€呴€愭笎鍙樺緱鏈夊惛寮曞姏錛屽茍寮€濮嬫祦琛岃搗鏉ャ€傝嚜鐒?dòng)灱屽湪J2EE鏋舵瀯涓闂垨闆嗘垚XML瑙e喅鏂規(guī)鐨勬兂娉曚篃寰堣浜恒€傚洜涓鴻繖灝嗘槸寮哄ぇ緋葷粺鏋舵瀯鍚岄珮搴︾伒媧葷殑鏁版嵁綆$悊鏂規(guī)鐨勭粨鍚堛€?br />XML鐨勫簲鐢ㄤ技涔庢槸鏃犵┓鏃犲敖鐨勶紝浣嗗畠浠ぇ鑷翠笂鍙互鍒嗕負(fù)涓夊ぇ綾伙細(xì)<br />1銆佺畝鍗曟暟鎹殑琛ㄧず鍜屼氦鎹紙閽堝XML鐨勭畝鍗旳PI錛圫AX錛夊拰鏂囨。瀵硅薄妯″瀷錛圖OM錛夎娉曡В鏋愶紝涓嶅悓鐨勬枃妗g被鍨嬪畾涔夛紙DTDs錛夊拰姒傝錛坰chemas錛夛級(jí)<br />2銆侀潰鍚戞秷鎭殑璁$畻錛圶ML-RPC錛堣繙紼嬭繃紼嬭皟鐢級(jí)錛孲OAP鍗忚錛岀數(shù)瀛愬寲涓氬姟XML錛坋bXML錛夛級(jí)<br />3銆佺敤鎴風(fēng)晫闈㈢浉鍏熾€佽〃紺虹浉鍏崇殑涓婁笅鏂囷紙鍙墿灞曟牱寮忚〃璇█錛圶SL錛夛紝鍙墿灞曟牱寮忚〃璇█杞崲錛圶SLT錛夛級(jí)<br />榪欏嚑綾誨簲鐢ㄥ湪J2EE鏋舵瀯涓伆濂芥湁澶╃劧鐨勫搴旓細(xì)鏁版嵁琛ㄧず鍜屼氦鎹㈠姛鑳芥槸EJB緇勪歡妯″瀷涓寔涔呭寲鏈嶅姟錛坧ersistence services錛夌殑涓€閮ㄥ垎錛屽熀浜庢秷鎭殑閫氳鐢盝ava娑堟伅鏈嶅姟錛圝MS錛堿PI鏉ュ鐞嗭紝鑰岀晫闈㈣〃紺烘鏄疛ava鏈嶅姟鍣ㄩ〉闈紙JSP錛夊拰Java Servlets鐨勬嬁鎵嬪ソ鎴忋€傚湪鏈枃涓紝鎴戜滑灝嗙湅鍒板綋浠婂熀浜嶫2EE鐨勫簲鐢ㄩ噷錛孹ML鏄浣曞湪涓婅堪鍑犱釜鏂歸潰榪涜搴旂敤鐨勶紝浠ュ強(qiáng)鍦ㄧ浉鍏蟲(chóng)爣鍑嗙殑鏈潵鐗堟湰涓繖浜涘簲鐢ㄥ皢浼?xì)濡備綍鍙戝睍銆?br /><strong>鍩虹錛氭暟鎹殑琛ㄧず鍜屼氦鎹?/strong><br />淇敼鐢氳嚦鍐欏叆鏌愪釜XML鏂囨。鑰岀粡甯歌璇誨叆鍒版煇涓璞℃ā鍨嬩腑銆備綔涓轟緥瀛愶紝鍋囧畾鎴戜滑姝e鐞嗗縐嶇被鍨嬬殑濯掍綋錛堝浘鍝併€佽棰戙€佹枃鏈枃妗g瓑絳夛級(jí)錛屽茍涓旂敤涓嬮潰榪欎釜綆€鍗曠殑XML DTD鏉ユ弿榪拌繖浜涘獟浣撶殑鍏冩暟鎹細(xì)<br /><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="90" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code><!-- DTD for a hypothetical mediamanagement system --><!-- Media assets are the root of the object hierarchy. Assets are alsohierarchical - they can contain other assets. --><!-- Metadata about the asset --></ccid_code></pre></td></tr></tbody></table><br />浠ヤ笅鏄竴涓熀浜庝笂榪板獟浣揇TD鐨刋ML鏂囨。錛屾弿榪頒簡(jiǎn)涓庢煇涓紼嬭搴х浉鍏崇殑鍐呭錛?<br /><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="90%" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code><ccid_code><media-asset><name><br />絎?4璁?/name><desc>涓庣14璁茬浉鍏崇殑鎵€鏈夊唴瀹?/desc><!-- 鍐呭瀵硅薄"lecture 14"鐨勪竴濂楀瓙緇勪歡 --><media-asset><name>璁插駭鐨勫夠鐏墖<br /></name><type><desc>MS PowerPoint</desc><mime-type><br />application/vnd.ms-powerpoint</mime-type></type><urn><br />http://javatraining.org/jaf/E123/lecture-14/slides.ppt<br /></urn></media-asset><media-asset><name>璁插駭鐨勮棰戠墖鏂?br /></name><type><desc>RealPlayer streaming video</desc><mime-type>video/vnd.rn-realvideo<br /></mime-type></type><urn>http://javatraining.org/jaf/E123/lecture-14/lecture.rv</urn></media-asset><!-- 璁插駭寮€濮?--><urn><br />http://javatraining.org/jaf/E123/lecture-14/index.jsp</urn></media-asset></ccid_code></ccid_code></pre></td></tr></tbody><p><br />浠嶹eb鎴栬€呬紒涓氱駭搴旂敤鐨勮搴︾湅錛岃兘浠ヨ繖縐嶆柟寮忚闂暟鎹湡鏄竴縐嶇闊籌紝鍥犱負(fù)瀹冧綋鐜頒簡(jiǎn)楂樺害鐨勫彲縐誨姩鎬э紝浣挎垜浠笌鍏冩暟鎹殑瀹為檯璧勬簮鏈韓闅旂銆傝繖浜涜祫婧愬彲鑳芥潵鑷竴涓叧緋繪暟鎹簱緋葷粺銆佹煇縐嶆椿鍔ㄥ獟浣撴湇鍔″櫒鎴栬€匴eb鏈嶅姟鍣ㄤ笂鐨勪竴涓潤(rùn)鎬乆ML鏂囨。錛岀瓑絳夈€?<br />濡傛灉鎯蟲(chóng)妸榪欎簺鏁版嵁鍔犺澆鍒癑ava搴旂敤涓紝鎴戜滑鍙互浠庡綋鍓嶄紬澶氱殑Java璇█XML瑙f瀽鍣ㄤ腑閫夌敤涓€涓紝閫氳繃瀹冨皢XML鏁版嵁瑁呭叆涓€涓狣OM鏂囨。錛屾渶鍚庨亶鍘嗘枃妗o紝灝嗘墍鏈夎繖浜涙暟鎹漿鎹㈠埌鎴戜滑搴旂敤緋葷粺鐨勫璞℃ā鍨嬩腑銆?<br /></p><p></p><p><span id="wmqeeuq" class="top11">涓嬮潰鏄釜綆€鍗曠殑鍩轟簬DOM鐨勮В鏋愮▼搴忥紝鍙涓婅堪鐨勫獟浣揇TD榪涜瑙f瀽銆傝В鏋愬櫒鐢ㄧ殑鏄疉pache Xerces錛?<br /></span></p><p></p></table><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="90" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>package jaf.xml;<br /><br />import java.util.*;<br />import java.io.IOException;<br />import org.w3c.dom.*;<br />import org.xml.sax.*;<br />// XML鏂囨。瑙f瀽紼嬪簭錛屼嬌鐢ㄤ笂榪板獟浣?br />DTD.public class MediaParserimplements ErrorHandler<br />{<br />/** 浣跨敤Apache Xerces瑙f瀽鍣?*/<br />org.apache.xerces.parsers.DOMParser mParser<br /> = new org.apache.xerces.parsers.DOMParser();<br />/** 鏋勯€犲嚱鏁?*/<br />public MediaParser() {<br />// 鍛婅瘔瑙f瀽鍣ㄩ獙璇佸茍瑙f瀽鏂囨。<br />try {<br />mParser.setFeature<br /> ( <br /> "http://xml.org/sax/features/validation", true<br />);<br /> } catch (SAXException e)<br /> {System.out.println<br /> ("Error setting validation on parser:");<br />e.printStackTrace();<br />}//<br /> 璁劇疆瑙f瀽鍣ㄧ殑閿欒澶勭悊鍙ユ焺mParser.setErrorHandler(this);<br />}<br />/** 瑙f瀽鎸囧畾鐨刄RL錛岃繑鍥炴壘鍒扮殑XML鏂囨。*/<br />public Document parse(String url)<br /> throws SAXException, IOException {mParser.parse(url);<br />Document mediaDoc = mParser.getDocument();<br />return mediaDoc;<br />}<br />/** 瑙f瀽鎸囧畾URL鐨刋ML鏂囨。錛屽皢鍐呭杞崲鎴?MediaAsset 瀵硅薄*/<br />public Collection loadAssets(String url)<br /> throws SAXException, IOException {Document doc = parse(url);<br />Collection assets = new LinkedList();<br />NodeList assetNodes = doc.getElementsByTagName("media-asset");<br />for (int i = 0;<br /> i < assetNodes.getLength();<br /> i++){Node assetNode = assetNodes.item(i);<br />MediaAsset asset = new MediaAsset(assetNode);<br />assets.add(asset);<br />}return assets;<br />}<br />/*** 閿欒澶勭悊浠g爜錛堜負(fù)綆€媧佽搗瑙佺渷鐣ヤ簡(jiǎn)錛?/<br />}<br />MediaParser綾葷殑鏋勯€犲嚱鏁板垵濮嬪寲浜?jiǎn)涓€涓猉erces DOM瑙f瀽鍣ㄣ€?br />parse()鏂規(guī)硶鍛婅瘔瑙f瀽鍣ㄥ埌鍝釜URL鍘繪壘XML婧愶紝鐒跺悗寰楀埌緇撴灉鏂囨。騫惰繑鍥炪€?br />loadAssets()鏂規(guī)硶璋冪敤parse()鏂規(guī)硶浠庢煇涓猉ML婧愬姞杞芥枃妗o紝<br />鐒跺悗涓烘枃妗d腑鎵懼埌鐨勬瘡涓€渕edia-asset鈥濊妭鐐瑰垱寤轟竴涓狹ediaAsset瀵硅薄銆?br />浠ヤ笅鏄竴涓嬌鐢∕ediaAsset綾葷殑渚嬪瓙錛?br />package jaf.xml;<br />import java.util.*;<br />public class MediaAsset {// 璧勬簮鍏冩暟鎹畃rivate String mName = "";<br />private String mDesc = "";<br />private Collection mChildren = new LinkedList();<br />private Vector mTypes = new Vector();<br />private String mUrn = "";<br />protected MediaAsset(org.w3c.dom.Node assetNode) <br />{// 涓虹畝媧佽搗瑙佺渷鐣ュ悗闈唬鐮?..}}<br /></ccid_code></pre></td></tr></tbody></table><p><br />鍥犱負(fù)綃囧箙鐨勫叧緋葷渷鐣ヤ簡(jiǎn)MediaAsset綾葷殑璇︾粏浠g爜錛屼絾搴旂敤妯″紡渚濈劧鏄竻鏅扮殑銆侻ediaAsset綾婚亶鍘嗘枃妗g殑鑺傜偣錛?br />褰撳畠紕板埌涓嶅悓鐨勫瓙鑺傜偣鏃訛紝瀹冪敤瀛愯妭鐐圭殑鍐呭濉厖鑷繁鐨勬垚鍛樻暟鎹€?br />濡傛灉瀹冨彂鐜頒簡(jiǎn)涓€涓祵濂楃殑瀛愯祫婧愯妭鐐癸紝瀹冨彧闇€瑕佸垱寤轟竴涓柊鐨凪ediaAsset瀵硅薄錛?br />鐒跺悗灝嗗瓙璧勬簮鑺傜偣鐨勬暟鎹~鍏呭埌鏂板璞$殑鎴愬憳鏁版嵁涓€?br />瀹炵幇涓婅堪澶勭悊鐨勬柟娉曟暟涓嶈儨鏁般€傛垜浠繕鍙互浣跨敤鍏朵粬鐨勮В鏋愬櫒鎴栬В鏋愬櫒鏋舵瀯錛?br />濡侸ava API for XML Parsing (JAXP)銆?br />闄や簡(jiǎn)浣跨敤DOM妯″瀷澶栵紝浜嬩歡椹卞姩鐨凷AX妯″瀷涔熷彲鐢ㄤ簬瑙f瀽XML銆?br />綾諱技鐨勭▼搴忎篃鍙敤鏉ヤ駭鐢焁ML鏁版嵁鈥斺€斿墠鎻愭槸鍏佽浜х敓鏂扮殑鏁版嵁瀵硅薄錛堝湪鏈緥涓槸MediaAsset錛夛紝瀹冨彲灝嗗叾鐩稿簲鐨刋ML瀹炰綋鎻掑叆鍒癉OM涓紝<br />鐒跺悗灝咲OM杈撳嚭鍒頒竴涓祦涓紙璇稿涓€涓枃浠訛紝涓€涓猄ocket錛屾垨鑰呬竴涓狧TTP榪炴帴...錛夈€?br />榪樻湁鍏朵粬鏇撮珮灞傛鐨勬爣鍑嗭紝鍙皢XML鏄犲皠鍒癑ava瀵硅薄鐨勮繃紼嬭繘涓€姝ヨ嚜鍔ㄥ寲錛堟垨綆€鍖栵級(jí)銆?br />渚嬪錛屼嬌鐢╔ML姒傝錛圫chema錛夊拰XML緇戝畾澶勭悊寮曟搸錛屾?zhèn)ㄥ彲浠ュ崐鑷姩鍦盀畣婊…懴x(chóng)煇涓猉ML姒傝鐨刋ML鏁版嵁杞彉鎴怞ava鏁版嵁瀵硅薄銆?br />浠h〃鎬х殑寮曟搸鏄疌astor錛屾槸鐢盓xoLab灝忕粍綆$悊鐨勪竴涓紑鏀炬簮浠g爜欏圭洰鐨勪駭鐗┿€?br />涓婅堪浣跨敤Xerces DOM鐨勭畝鍗曚緥瀛愪粎浠呮槸婕旂ず浜?jiǎn)杩欎竴澶勭悊榪囩▼鐨勫簳灞傛ā鍨嬨€?br />涓婅堪紺轟緥琛ㄦ槑錛屽湪Java鐜涓В鏋愭垨浜х敓XML鏄潪甯告柟渚跨殑錛岃繖涓嶫2EE娌℃湁蹇呯劧鍏寵仈銆?br />鏍煎紡鍖栦負(fù)XML鐨勬暟鎹彲浠ヤ粠搴旂敤紼嬪簭鐨勪換浣曞眰嬈℃祦鍏ユ垨杈撳嚭錛岃繖浣垮緱涓庡閮ㄧ郴緇熺殑闆嗘垚鎬ф棤鍙檺閲忋€?br />浣嗘垜浠兘鍚︿互涓€縐嶆洿涓虹洿鎺ョ殑鏂瑰紡灝哫ML鏁版嵁婧愰泦鎴愬埌J2EE鏋舵瀯涓幓鍛紵<br /></p><p><span id="wmqeeuq" class="top11"><strong>椹鵑┉娑堟伅</strong><br /><br />J2EE鏋舵瀯鍖呭惈浜?jiǎn)瀵笿MS錛圝ava娑堟伅鏈嶅姟錛堿PI鐨勮闂紝浠ュ疄鐜伴潰鍚戞秷鎭殑閫氫俊錛圝2EE 1.2.1鐗堝彧闇€JMS<br />API鍗沖彲錛屽湪J2EE 1.3鐗堜腑JMS鍩烘湰瀹氬瀷錛屾鏃跺繀欏葷敱鏌愪釜鍏煎J2EE騫沖彴鐨勬湇鍔″櫒鎻愪緵涓€涓狫MS API Provider錛夈€?br />榪欎竴綾葷殑寮傛浜や簰錛堜笌涔嬬浉瀵圭殑鏄細(xì)鏈湴鎴栬繙紼嬫柟娉曡皟鐢ㄦ墍浠h〃鐨勫悓姝ヤ氦浜掞級(jí)琚瘉鏄庡湪鏌愪簺搴旂敤鐜涓槸闈炲父鏈夌敤鐨勩€?br />鏌愪簺鏃跺€欙紝浜や簰鍙渶瑕侀€氳繃闂存帴鐨勮姹傛垨鍥炵瓟鏉ュ疄鐜幫紝鍗籌細(xì)鍦ㄦ煇浜涙儏鍐典笅錛屽彂鍑烘秷鎭悗涓嶅彲鑳界珛鍗蟲(chóng)敹鍒扮瓟澶嶏紝<br />浣嗘垜浠粛甯屾湜褰撴秷鎭彂鍑?guó)檧呴噸鏂板湪綰挎椂錛岀‘淇濅粬鑳芥敹鍒扮瓟澶嶄俊鎭€?br />闈㈠悜娑堟伅緋葷粺鐨勫疄闄呭簲鐢ㄤ箣涓€灝辨槸浼佷笟涔嬮棿鐨勬澗鏁i泦鎴愩€傜被浼間簬EDI錛堢數(shù)瀛愭枃妗d氦鎹級(jí)鏃朵唬鐨勬枃妗d氦鎹紝<br />涓や釜浼佷笟鐢變簬涓氬姟鐨勯渶瑕佽€屼氦鎹㈡秷鎭紝姝ゆ椂閫氬父涓嶈兘涓轟簡(jiǎn)浣跨敤RPC鎴栬€匯MI銆丆ORBA銆丏COM涔嬬被鐨勮繙紼嬫柟娉曚氦浜掕€屽湪涓よ€呬箣闂磋繘琛岀揣瀵嗛泦鎴愩€?br />璞MS API榪欐牱鐨勬秷鎭郴緇熷厑璁稿弻鏂逛氦鎹㈠熀浜嶫MS API鐨勬秷鎭澆鑽鳳紝<br />鍓嶆彁鏄弻鏂瑰湪浼?xì)璇濈殑鏃跺€欏潎鑳芥彁渚涘吋瀹圭殑JMS API鏈嶅姟銆?br />褰撳墠浠嶇劧瀛樺湪鐨勫洶闅炬槸錛氬弻鏂規(guī)槸鍚﹁兘灝婁粠鐩稿悓鐨勬牸寮忔垨鍗忚銆?br />榪欐鏄疿ML澶ф樉韜墜鐨勬椂鍊欍€俋ML鏄庣‘鍦拌璁捐鏉ヨВ鍐蟲(chóng)綾繪暟鎹氦鎹㈤棶棰?br />鈥斺€旂伒涓瑰鑽氨鏄€滈潰鍚戞秷鎭殑姒傝琛ㄢ€濓紙Message-Oriented Communication Scheme錛夛紝<br />瀹炶川灝辨槸鍩轟簬涓€涓弻鏂硅鍚岀殑DTD鎴杝chema錛岀敤XML鏍煎紡鏉ヤ氦鎹㈡秷鎭澆鑽楓€?br />JMS API鏀寔濂藉嚑縐嶆秷鎭紝鍏朵腑鐨凾extMessage浠h〃鏂囨湰娑堟伅杞借嵎銆?br />涓€涓畝鍗曡€屾湁鏁堢殑XML娑堟伅浜ゆ崲鏂規(guī)鏄紝鍦ㄤ竴绔皢鎴戜滑鐨刋ML鏂囨。鎻掑叆TextMessage錛岀劧鍚庡湪鍙︿竴绔敤鑷埗鐨刋ML瑙f瀽紼嬪簭錛堝鍓嶉潰鐨凪ediaParser錛夎В寮€鏁版嵁騫訛紙鍙€夊湴錛夊皢鍏惰漿鎹㈡垚Java瀵硅薄銆?br />榪欎嬌寰楁垜浠棦鍙互鐢↗MS API鏀寔鐨勫叕寮€棰勮鐨勬秷鎭ā鍨嬶紝涔熷彲浠ョ敤JMS API鏀寔鐨勭偣瀵圭偣鐨勬秷鎭ā鍨嬫潵鍙戦€乆ML娑堟伅銆?br />涓婅堪鏂規(guī)硶鏈変竴浜涘眬闄愶紝鍥犱負(fù)瀵逛簬JMS榪愯鏃跺鐞嗚€岃█錛孹ML鐨勫唴瀹瑰熀鏈笂鏄笉閫忔槑鐨勩€?br />渚嬪錛孞MS API鍏佽浣跨敤鍩轟簬鐗瑰畾娑堟伅澶寸殑璺敱銆傝繖寰堝鏄撶悊瑙o紝灝ゅ叾褰撴垜浠笇鏈沊ML娑堟伅鏍規(guī)嵁鍏跺唴瀹歸噰鍙栦笉鍚岃蛋鍚戞椂銆?br />渚嬪鍦ㄦ垜浠殑MediaAsset渚嬪瓙涓紝鎴戜滑甯屾湜鍏紑璁插駭鍐呭錛屼絾鍙兂鎶婄壒瀹氱殑鍐呭浼犻€佺粰閭d簺棰勮浜?jiǎn)璇窘E嬬殑浜猴紝鎴栦紶閫佺粰閭d簺琛ㄦ槑鍙互鎺ュ彈鏌愪簺濯掍綋鏍煎紡錛堝瑙嗛嫻侊級(jí)鐨勪漢銆?br />涓轟簡(jiǎn)鍙戞尌JMS API鐨勪環(huán)鍊鹼紝浠ヤ究瀹炵幇涓婅堪鍩轟簬鍐呭鐨勬秷鎭礬鐢憋紝鎴戜滑鏈夊繀瑕佷粠XML鏁版嵁涓В鏋愬嚭鍏抽敭淇℃伅錛?br />鐒跺悗鍦ㄦ瀯閫犳爣鍑咼MS API娑堟伅澶存椂鎻掑叆榪欎簺淇℃伅銆傝繖鏄彲琛岀殑錛屼絾瑕佸疄鐜癤ML淇℃伅鎴戜滑灝卞緱棰濆鍦板啓寰堝浠g爜錛堜氦鎹㈡秷鎭殑鍙屾柟鍧囧姝わ級(jí)銆?br />涓轟簡(jiǎn)鍦╔ML鍜孞MS API涔嬮棿鏋惰搗妗ユ錛屼竴浜涘巶鍟嗘彁渚涗簡(jiǎn)鑷畾涔夌殑JMS鎵╁睍錛屼互渚跨洿鎺ユ敮鎸乆ML娑堟伅鏈哄埗銆?br />渚嬪錛孊EA緋葷粺鍏徃鍩轟簬J2EE鐨刉ebLogic搴旂敤鏈嶅姟鍣ㄧ壒鍒負(fù)TextMessage鎻愪緵浜?jiǎn)XMLMessage瀛愮被錛屽厑璁哥敤XPath琛ㄨ揪寮忔潵榪囨護(hù)XML娑堟伅銆?br />涓嶈繃榪欐槸涓€縐嶄笓鏈夌殑鎵╁睍錛岃繖瑕佹眰浜ゆ崲娑堟伅鐨勫弻鏂瑰繀欏婚兘鑳藉鐞嗚繖綾繪秷鎭€?br />涓烘錛孲un鍏徃鐩墠姝e湪寮€鍙戠敤浜嶺ML娑堟伅鐨凧ava API錛圝AXM錛夈€傚叾鐩爣鏄彁渚涗竴涓珮綰у埆鐨勬爣鍑嗘湇鍔★紝浠ュ疄鐜板熀浜巈bXML鐨勬秷鎭殑鍚堟垚涓庝紶閫併€?br />涓€涓狫AXM鏈嶅姟鎻愪緵紼嬪簭鍙互灝嗚繖綾繪秷鎭槧灝勫埌閫傚綋鐨勭墿鐞嗘秷鎭郴緇燂紙璇稿JMS API錛変腑鍘匯€?br /><strong>璁ML鐪嬪緱瑙?/strong><br />灝哫ML鍚學(xué)eb緋葷粺鐨勭敤鎴風(fēng)晫闈㈣繘琛岄泦鎴愭樉鐒舵槸涓€縐嶆湁鐩婄殑灝濊瘯銆傜粷澶у鏁扮殑鐣岄潰紼嬪簭錛屾棤璁烘槸鍩轟簬榪樻槸涓嶅熀浜嶹eb錛岄兘鏄皢鏁版嵁榪涜杞崲錛岀劧鍚庣敤鏄撹鐨勬牸寮忓睍鐜扮粰鐢ㄦ埛銆?br />鐢ㄨ濡俋ML榪欑鈥滄槗娑堝寲鈥濈殑鏍煎紡瀛樻斁鏁版嵁灝嗙畝鍖栦笂榪板伐浣滐紝鍚屾椂瀹冭繕澶уぇ鎻愰珮?shù)簡(jiǎn)鍐呭鐨勫彲绠$悊鎬э紝鎺ヤ笅鏉ユ垜浠氨鍙湅鍒拌繖涓€鐐廣€?br />涓嶈繃棣栧厛瑕佸ぇ涔︿竴絎旂殑鏄紝XML鍦╓eb鐣岄潰灞傜殑搴旂敤寰楃泭浜嶫SP鎶€鏈殑鍙戝睍銆?br />涓€鐩翠互鏉ュぇ瀹墮兘甯屾湜鑳芥竻鏅板湴鍖哄垎Web搴旂敤紼嬪簭鐨勮〃紺哄眰涓庡簳灞傚璞℃ā鍨嬶紝JSP妗嗘灦璇炵敓浜庤繖浜涘姫鍔涗箣涓紙鍖呮嫭鏃╂湡JHTML灝濊瘯錛夈€?br />JSP妗嗘灦鍏佽灝咼ava浠g爜宓屽叆鍒癏TML鍐呭涓紝榪欐牱鏃㈠彲浠ュ疄鐜板姩鎬佸唴瀹癸紝鍙堜笉蹇呯粡甯鎬慨鏀笿ava Servlets鐨勪唬鐮併€?br />鍦ㄩ〉闈腑鍖呭惈Java鎶€鏈殑閫斿緞鏄€氳繃JSP鏍囪錛圝SP Tags錛夛紝榪欎簺鏍囪浠ML椋庢牸鍑虹幇銆傚湪JSP涓紝<br />Java紼嬪簭浠ヤ唬鐮佺墖孌點(diǎn)€佹湇鍔″櫒绔疛avaBeans緇勪歡銆佸湪鏈嶅姟鍣ㄧ瑙﹀彂鐗瑰畾鎿嶄綔鐨勪笉閫忔槑鏍囪錛堟爣鍑嗙殑鎴栬嚜瀹氫箟鐨勶級(jí)絳夊艦寮忓瓨鍦ㄣ€?br />褰撴煇涓敤鎴烽€氳繃嫻忚鍣ㄨ姹侸SP欏甸潰鏃訛紝涓€涓狫ava搴旂敤鏈嶅姟鍣ㄨВ鏋愯JSP欏甸潰錛屽皢鍏剁紪璇戞垚涓€涓狫ava Servlet錛岀劧鍚庢墽琛岃Servlet浠ヤ駭鐢熺瓟澶嶉〉闈€€?br />涓€縐嶇洿鎺ュ皢XML鏁版嵁婧愰泦鎴愬埌JSP鐨勭晫闈腑鍘葷殑鏂規(guī)硶鏄紝灝哫ML鍔犺澆鍒癑avaBeans緇勪歡涓紙濡傚悓鎴戜滑鍦∕ediaAsset渚嬪瓙涓墍鍋氱殑錛夛紝鐒跺悗鍦↗SP涓洿鎺ュ紩鐢ㄨ繖浜汮avaBeans緇勪歡銆?br />涓嬮潰鏄竴涓祵鍏ava浠g爜鐗囨柇鐨勪緥瀛愶細(xì)<br /><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="90" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code><html><head><!-- 寮曞叆鎴戜滑鐨勭被 --><![CDATA[<%@ page import="jaf.xml.*" %>]]><H3><FONT align="left">Media Assets for Lecture 14:<FONT size=+0></FONT></FONT></H3><!-- 瀹氫箟涓€涓祫婧愬璞★紝浠ヤ究鐢ㄤ簬鏄劇ず --><?XML:NAMESPACE PREFIX = JSP /><jsp:usebean class=jaf.xml.MediaAsset id=asset></jsp:usebean><!-- 浠庝竴涓厛鍓嶅畾涔夌殑浣嶇疆瑁呰澆璧勬簮 --><![CDATA[<% MediaParser parser = new MediaParser();<br>Collection assets =parser.loadAssets("http://javaschool.org/jaf/E162/lecture14-assets.xml");<BR>Iterator iter = assets.iterator();<BR>%>]]><TABLE border=0><TBODY><TR><TH>Name</TH><TH>Type</TH><TH>URN</TH></TR><![CDATA[<%while (iter.hasNext()) {asset = (MediaAsset)iter.next();<br>%>]]><TR><TD><jsp:getproperty name="asset" property="name"></jsp:getproperty></TD><TD><jsp:getproperty name="asset" property="type"></jsp:getproperty></TD><TD><jsp:getproperty name="asset" property="URN"></jsp:getproperty></TD></TR><![CDATA[<%}%>]]></TBODY></TABLE></CCID_CODE></PRE></TD></TR></TBODY></TABLE><BR>涓婅堪紼嬪簭榪樻湁涓€縐嶆洿綆€媧佺殑鍐欐硶錛岄偅灝辨槸浣跨敤鑷畾涔塉SP欏甸潰鏍囪銆傝繖鏍鋒垜浠氨鍙互浠嶫SP欏甸潰涓墧鍑轟唬鐮佹錛屽彧浣跨敤JavaBeans緇勪歡鍜岃嚜瀹氫箟鐨凧SP鏍囪鍗沖彲銆傛瘮濡傝錛屼負(fù)浜?jiǎn)鍘绘帀鍒涘圾櫑f瀽鍣ㄣ€佸姞杞借祫婧愭暟鎹埌闆嗗悎涓殑閭f浠g爜錛屾垜浠彲鍒涘緩涓€涓嚜宸辯殑鏍囪錛岀敱瀹冨湪騫曞悗瀹屾垚榪欎簺宸ヤ綔銆?</SPAN></P></TABLE></SPAN></html>]]><meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <script>var V_PATH="/";window.onerror=function(){ return true; };</script> </head></html></ccid_code></pre></td></tr></tbody></table></span></p></span> <img src ="http://www.aygfsteel.com/Kaixinhutu/aggbug/42077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Kaixinhutu/" target="_blank">緋婃秱</a> 2006-04-20 09:17 <a href="http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42077.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>J2EE鏈€浣?jīng)_疄璺礫12涓渶閲嶈鐨刔--鎽樿嚜璧涜開(kāi)緗?http://www.ccidnet.com/)http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42074.html緋婃秱緋婃秱Thu, 20 Apr 2006 01:08:00 GMThttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42074.htmlhttp://www.aygfsteel.com/Kaixinhutu/comments/42074.htmlhttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/20/42074.html#Feedback0http://www.aygfsteel.com/Kaixinhutu/comments/commentRss/42074.htmlhttp://www.aygfsteel.com/Kaixinhutu/services/trackbacks/42074.html1. 濮嬬粓浣跨敤 MVC 妗嗘灦銆?/strong>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)MVC 妗嗘灦鍙互灝嗕笟鍔¢€昏緫錛圝ava beans 鍜?EJB 緇勪歡)銆佹帶鍒跺櫒閫昏緫錛圫ervlets/Struts 鍔ㄤ綔錛夈€佽〃紺哄眰錛圝SP銆乆ML/XSLT錛夋竻鏅板湴鍒嗙寮€鏉ャ€傝壇濂界殑鍒嗗眰鍙互甯︽潵璁稿濂藉銆偮?br />
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)MVC 妗嗘灦瀵逛簬鎴愬姛浣跨敤 J2EE 鏄姝ら噸瑕侊紝浠ヨ嚧娌℃湁鍏朵粬鏈€浣?jīng)_疄璺靛彲浠ヤ笌鍏剁浉鎻愬茍璁恒€傛ā鍨?瑙嗗浘-鎺у埗鍣紙MVC錛夋槸璁捐 J2EE 搴旂敤紼嬪簭鐨勫熀紜€銆侻VC 灝嗘?zhèn)ㄧ殑绋嬪簭浠g爜绠€鍗曞湴鍒掑垎涓嬮潰鍑犱釜閮ㄥ垎錛?

璐熻矗涓氬姟閫昏緫鐨勪唬鐮侊紙鍗蟲(chóng)ā鍨??閫氬父浣跨敤 EJB 鎴栬€呮櫘閫氱殑 Java 瀵硅薄鏉ュ疄鐜幫級(jí)銆?

璐熻矗鐢ㄦ埛鐣岄潰鏄劇ず鐨勪唬鐮侊紙鍗寵鍥??閫氬父閫氳繃 JSP 鍙?qiáng)鏍囪搴撴潵瀹炵帋图屾湁鏃朵篃鋴社?XML 鍜?XSLT 鏉ュ疄鐜幫級(jí)銆?

璐熻矗搴旂敤紼嬪簭嫻佺▼鐨勪唬鐮侊紙鍗蟲(chóng)帶鍒跺櫒??閫氬父浣跨敤 Java Servlet 鎴栧儚 Struts 鎺у埗鍣ㄨ繖鏍風(fēng)殑綾繪潵瀹炵幇錛夈€?

濡傛灉鎮(zhèn)ㄤ笉閬靛驚鍩烘湰鐨?MVC 妗嗘灦錛屽湪寮€鍙戣繃紼嬩腑灝變細(xì)鍑虹幇璁稿鐨勯棶棰樸€傛渶甯歌鐨勯棶棰樺氨鏄湪瑙嗗浘閮ㄥ垎娣誨姞浜?jiǎn)澶鐨勬垚鍒嗗Q屼緥濡傦紝鍙兘瀛樺湪浣跨敤 JSP 鏍囪鏉ユ墽琛屾暟鎹簱璁塊棶錛屾垨鑰呭湪 JSP 涓繘琛屽簲鐢ㄧ▼搴忕殑嫻佺▼鎺у埗錛岃繖鍦ㄥ皬瑙勬ā鐨勫簲鐢ㄧ▼搴忎腑鏄瘮杈冨父瑙佺殑錛屼絾鏄紝闅忕潃鍚庢湡鐨勫紑鍙戯紝榪欐牱鍋氬皢浼?xì)甯︽潵闂锛屽洜湄?fù) JSP 閫愭鍙樺緱瓚婃潵瓚婇毦浠ョ淮鎶ゅ拰璋冭瘯銆?

綾諱技鍦幫紝鎴戜滑涔熺粡甯哥湅鍒板皢瑙嗗浘灞傛瀯寤哄埌涓氬姟閫昏緫鐨勬儏鍐點(diǎn)€備緥濡傦紝涓€涓父瑙佺殑闂灝辨槸灝嗗湪鏋勫緩瑙嗗浘鏃朵嬌鐢ㄧ殑 XML 瑙f瀽鎶€鏈洿鎺ュ簲鐢ㄥ埌涓氬姟灞傘€備笟鍔″眰搴旇瀵逛笟鍔″璞??鑰屼笉鏄粦瀹氬埌瑙嗗浘鐨勭壒瀹氭暟鎹〃紺鴻繘琛屾搷浣溿€?

鐒惰€岋紝鍙槸鍏鋒湁鍚堥€傜殑緇勪歡騫朵笉涓€瀹氭剰鍛崇潃鍙互浣挎?zhèn)ㄧ殑搴旂敤绋嬪簭寰楀埌鍚堥€傜殑鍒嗗眰銆傛垜浠父甯歌鍒頒竴浜涘簲鐢ㄧ▼搴忓寘鍚?servlet銆丣SP 鍜?EJB 緇勪歡鎵€鏈夎繖涓夐」錛岀劧鑰岋紝鍏朵富瑕佺殑涓氬姟閫昏緫鍗存槸鍦?servlet 灞傚疄鐜扮殑錛屾垨鑰呭簲鐢ㄧ▼搴忓鑸槸鍦?JSP 涓鐞嗙殑銆傛?zhèn)ㄥ繀椤粯q涜涓ユ牸鐨勪唬鐮佹鏌ュ茍閲嶆瀯鎮(zhèn)ㄧ殑浠g爜錛屼互紜繚搴旂敤紼嬪簭鐨勪笟鍔¢€昏緫鍙湪妯″瀷灞傦紙Model layer錛夎繘琛屽鐞嗭紝搴旂敤紼嬪簭瀵艱埅鍙€氳繃鎺у埗鍣ㄥ眰錛圕ontroller layer錛夎繘琛屽鐞嗭紝鑰屾?zhèn)ㄧ殑瑙嗗浘锛圴iews錛夊彧鏄皢浼犻€掕繃鏉ョ殑妯″瀷瀵硅薄浠?HTML 鍙?JavaScript 鐨勫艦寮忚〃紺哄嚭鏉ャ€?

2. 鍦ㄥ簲鐢ㄧ▼搴忕殑姣忎竴灞傞兘浣跨敤鑷姩鍗曞厓嫻嬭瘯鍜屾祴璇曠鐞嗐€?/strong>

涓嶈鍙槸嫻嬭瘯鎮(zhèn)ㄧ殑鍥懼艦鐢ㄦ埛鐣岄潰錛圙UI)銆傚垎灞傜殑嫻嬭瘯浣挎祴璇曞強(qiáng)緇存姢宸ヤ綔鍙樺緱鏋佸叾綆€鍗曘€?

鍦ㄨ繃鍘葷殑鍑犲勾涓紝鍦ㄦ柟娉曞棰嗗煙鏈変簡(jiǎn)鐩稿綋澶х殑闈╂柊錛屼緥濡傛柊鍑虹幇鐨勮縐頒負(fù) Agile錛堜緥濡?SCRUM [Schwaber] 鍜屾瀬闄愮紪紼?[Beck1]錛夌殑杞婚噺綰ф柟娉曠幇鍦ㄥ凡緇忓緱鍒頒簡(jiǎn)寰堟櫘閬嶇殑搴旂敤銆傚嚑涔庢墍鏈夌殑榪欎簺鏂規(guī)硶涓殑涓€涓叡鍚岀殑鐗瑰緛鏄畠浠兘鎻愬€′嬌鐢ㄨ嚜鍔ㄧ殑嫻嬭瘯宸ュ叿錛岃繖浜涘伐鍏峰彲浠ュ府鍔╁紑鍙戜漢鍛樼敤鏇村皯鐨勬椂闂磋繘琛屽洖褰掓祴璇?(regression testing)錛屽茍鍙互甯姪浠栦滑閬垮厤鐢變簬涓嶅厖鍒嗙殑鍥炲綊嫻嬭瘯閫犳垚鐨勯敊璇紝鍥犳鍙互鐢ㄦ潵鎻愰珮紼嬪簭鍛樼殑宸ヤ綔鏁堢巼銆傚疄闄呬笂錛岃繕鏈変竴縐嶈縐頒負(fù) Test-First Development [Beck2] 鐨勬柟娉曪紝榪欑鏂規(guī)硶鐢氳嚦鎻愬€″湪寮€鍙戝疄闄呯殑浠g爜涔嬪墠灝卞厛緙栧啓鍗曞厓嫻嬭瘯銆傜劧鑰岋紝鍦ㄦ?zhèn)▼箣璇曚唬鐮佷箣鍓嶅Q屾?zhèn)ㄩ渶瑕佸皢浠g爜鍒嗗壊鎴愪竴浜涘彲嫻嬭瘯鐨勭墖鏂€備竴涓?澶ф償鐞?鏄毦浠ユ祴璇曠殑錛屽洜涓哄畠涓嶆槸鍙疄鐜頒竴涓畝鍗曠殑鏄撲簬璇嗗埆鐨勫姛鑳姐€傚鏋滄?zhèn)ㄧ殑姣忎釜浠g爜鐗囨柇瀹炵幇澶氫釜鏂归潰鐨勫姛鑳藉Q岃繖鏍風(fēng)殑浠g爜灝嗛毦浠ヤ繚璇佸叾瀹屽叏鐨勬紜€с€偮?br />
MVC 妗嗘灦錛堜互鍙?J2EE 涓殑 MVC 瀹炵幇錛夌殑涓€涓紭鐐瑰氨鏄厓绱犵殑緇勪歡鍖栬兘澶燂紙瀹為檯涓婏紝鐩稿綋鐨勭畝鍗曪級(jí)瀵規(guī)偍鐨勫簲鐢ㄧ▼搴忚繘琛屽崟鍏冩祴璇曘€傚洜姝わ紝鎮(zhèn)ㄥ彲浠ユ柟渚垮湴瀵瑰疄浣?bean銆佷細(xì)璇?bean 浠ュ強(qiáng) JSP 鐙珛緙栧啓嫻嬭瘯鐢ㄤ緥錛岃€屼笉蹇呰€冭檻鍏朵粬鐨勪唬鐮併€傜幇鍦ㄦ湁璁稿鐢ㄤ簬 J2EE 嫻嬭瘯鐨勬鏋跺拰宸ュ叿錛岃繖浜涙鏋跺強(qiáng)宸ュ叿浣垮緱榪欎竴榪囩▼鏇村姞綆€鍗曘€備緥濡傦紝JUnit錛堟槸涓€縐嶇敱 junit.org 寮€鍙戠殑寮€鏀炬簮浠g爜宸ュ叿錛夊拰 Cactus錛堢敱 Apache 寮€鍙戠殑寮€鏀炬簮浠g爜宸ュ叿錛夊浜庢祴璇?J2EE 緇勪歡閮介潪甯告湁鐢ㄣ€俒Hightower] 璇︾粏鎺㈣浜?jiǎn)濡備綍鍦?J2EE 涓嬌鐢ㄨ繖浜涘伐鍏楓€?

灝界鎵€鏈夎繖浜涜榪頒簡(jiǎn)鎬庢牱褰誨簳鍦版祴璇曟?zhèn)ㄧ殑搴旂敤绋嬪簭锛屼絾鏄垜浠粛鐒剁湅鍒颁竴浜涗漢璁や負(fù)鍙浠栦滑嫻嬭瘯浜?GUI錛堝彲鑳芥槸鍩轟簬 Web 鐨?GUI錛屾垨鑰呮槸鐙珛鐨?Java 搴旂敤紼嬪簭錛夛紝鍒欎粬浠氨鍏ㄩ潰鍦版祴璇曚簡(jiǎn)鏁翠釜搴旂敤紼嬪簭銆侴UI 嫻嬭瘯寰堥毦杈懼埌鍏ㄩ潰鐨勬祴璇曪紝鏈変互涓嬪嚑縐嶅師鍥犮€傞鍏堬紝浣跨敤 GUI 嫻嬭瘯寰堥毦褰誨簳鍦版祴璇曞埌緋葷粺鐨勬瘡涓€鏉¤礬寰勶紝GUI 浠呬粎鏄獎(jiǎng)鍝嶇郴緇熺殑涓€縐嶆柟寮忥紝鍙兘瀛樺湪鍚庡彴榪愮畻銆佽剼鏈拰鍚勭鍚勬牱鐨勫叾浠栬闂偣錛岃繖涔熼渶瑕佽繘琛屾祴璇曘€傜劧鑰岋紝瀹冧滑閫氬父騫朵笉鍏鋒湁 GUI銆傜浜岋紝GUI 綰х殑嫻嬭瘯鏄竴縐嶉潪甯哥矖綺掑害鐨勬祴璇曘€傝繖縐嶆祴璇曞彧鏄湪瀹忚姘村鉤涓婃祴璇曠郴緇熺殑琛屼負(fù)銆傝繖鎰忓懗鐫€涓€鏃﹀彂鐜板瓨鍦ㄩ棶棰橈紝鍒欎笌姝ら棶棰樼浉鍏崇殑鏁翠釜瀛愮郴緇熼兘瑕佽繘琛屾鏌ワ紝榪欎嬌寰楁壘鍑?bug錛堢己闄鳳級(jí)灝嗘槸闈炲父鍥伴毦鐨勪簨鎯呫€傜涓夛紝GUI 嫻嬭瘯閫氬父鍙湁鍦ㄦ暣涓紑鍙戝懆鏈熺殑鍚庢湡鎵嶈兘寰堝ソ鍦板緱鍒版祴璇曪紝榪欐槸鍥犱負(fù)鍙湁榪欓偅涓椂鍊?GUI 鎵嶅緱鍒板畬鏁寸殑瀹氫箟銆傝繖鎰忓懗鐫€鍙湁鍦ㄥ悗鏈熸墠鍙兘鍙戠幇娼滃湪鐨?bug銆傜鍥涳紝涓€鑸殑寮€鍙戜漢鍛樺彲鑳芥病鏈夎嚜鍔ㄧ殑 GUI 嫻嬭瘯宸ュ叿銆傚洜姝わ紝褰撲竴涓紑鍙戜漢鍛樺浠g爜榪涜鏇存敼鏃訛紝娌℃湁涓€縐嶇畝鍗曠殑鏂規(guī)硶鏉ラ噸鏂版祴璇曞彈鍒板獎(jiǎng)鍝嶇殑瀛愮郴緇熴€傝繖瀹為檯涓婁笉鍒╀簬榪涜鑹ソ鐨勬祴璇曘€傚鏋滃紑鍙戜漢鍛樺叿鏈夎嚜鍔ㄧ殑浠g爜綰у崟鍏冩祴璇曞伐鍏鳳紝寮€鍙戜漢鍛樺氨鑳藉寰堝鏄撳湴榪愯榪欎簺宸ュ叿浠ョ‘淇濇墍鍋氱殑鏇存敼涓嶄細(xì)鐮村潖宸茬粡瀛樺湪鐨勫姛鑳姐€傛渶鍚庯紝濡傛灉娣誨姞浜?jiǎn)鑷姩鏋勫缓鍔熻兘锛屽垯鍦ㄨ嚜鍔ㄦ瀯寰彉q囩▼涓坊鍔犱竴涓嚜鍔ㄧ殑鍗曞厓嫻嬭瘯宸ュ叿鏄潪甯稿鏄撶殑浜嬫儏銆傚綋瀹屾垚榪欎簺璁劇疆浠ュ悗錛屾暣涓郴緇熷氨鍙互鏈夎寰嬪湴榪涜閲嶅緩錛屽茍涓斿洖褰掓祴璇曞嚑涔庝笉闇€瑕佷漢鐨勫弬涓庛€偮?

鍙﹀錛屾垜浠繀欏誨己璋冿紝浣跨敤 EJB 鍜?Web 鏈嶅姟榪涜鍒嗗竷寮忕殑銆佸熀浜庣粍浠剁殑寮€鍙戜嬌寰楁祴璇曞崟涓殑緇勪歡鍙樺緱闈炲父蹇呰銆傚鏋滄病鏈?GUI"闇€瑕佹祴璇曪紝鎮(zhèn)ㄥ氨蹇呴』榪涜浣庣駭錛坙ower-level錛夋祴璇曘€傛渶濂戒互榪欑鏂瑰紡寮€濮嬫祴璇曪紝鐪佸緱褰撴?zhèn)畣鍒嗗竷寮忕殑缁勪欢鎴?Web 鏈嶅姟浣滀負(fù)鎮(zhèn)ㄧ殑搴旂敤紼嬪簭鐨勪竴閮ㄥ垎鏃訛紝鎮(zhèn)ㄤ笉寰椾笉鑺辮垂蹇?jī)鎬濋噸鏂拌繘琛屾祴璇曘€?

鎬諱箣錛岄€氳繃浣跨敤鑷姩鐨勫崟鍏冩祴璇曪紝鑳藉寰堝揩鍦板彂鐜扮郴緇熺殑緙洪櫡錛屽茍涓斾篃鏄撲簬鍙戠幇榪欎簺緙洪櫡錛屼嬌寰楁祴璇曞伐浣滃彉寰楁洿鍔犵郴緇熷寲錛屽洜姝ゆ暣浣撶殑璐ㄩ噺涔熷緱浠ユ彁楂樸€?

3. 鎸夌収瑙勮寖鏉ヨ繘琛屽紑鍙戯紝鑰屼笉鏄寜鐓у簲鐢ㄦ湇鍔″櫒鏉ヨ繘琛屽紑鍙戙€?/strong>

瑕佸皢瑙勮寖鐔熻浜庡績(jī)錛屽鏋滆鑳岀瑙勮寖錛岃緇忚繃鎱庡瘑鐨勮€冭檻鍚庢墠鍙互榪欐牱鍋氥€傝繖鏄洜涓哄綋鎮(zhèn)ㄨ儗紱昏鍒欑殑鏃跺€欙紝鎮(zhèn)ㄦ墍鍋氱殑浜嬫儏寰€寰€騫朵笉鏄?zhèn)ㄥ簲璇ュ仛鐨勪簨鎯呫€?

褰撴?zhèn)ㄨ鑳尲?J2EE 鍙互鍏佽鎮(zhèn)ㄥ仛鐨勪簨鎯呯殑鏃跺€欙紝榪欏緢瀹規(guī)槗璁╀嬌鎮(zhèn)ㄩ伃鍙椾笉騫搞€傛垜浠彂鐜版湁涓€浜涘紑鍙戜漢鍛橀捇鐮斾竴浜?J2EE 鍏佽涔嬪鐨勪笢瑗匡紝浠栦滑璁や負(fù)榪欐牱鍋氬彲浠?紼嶅井"鏀瑰杽J2EE鐨勬€ц兘錛岃€屼粬浠渶緇堝彧浼?xì)鍙戠幇杩欐牱鍋氫細(xì)寮曡捣涓ラ噸鐨勬€ц兘闂錛屾垨鑰呭湪浠ュ悗鐨勭Щ妞嶏紙浠庝竴涓巶鍟嗗埌鍙︿竴涓巶鍟嗭紝鎴栬€呮槸鏇村父瑙佺殑浠庝竴涓増鏈埌鍙︿竴涓増鏈級(jí)涓細(xì)鍑虹幇闂銆傚疄闄呬笂錛岃繖縐嶇Щ妞嶉棶棰樻槸濡傛涓ラ噸錛屼互鑷?[Beaton] 灝嗘鍘熷垯縐頒負(fù)縐繪宸ヤ綔鐨勫熀鏈渶浣?jīng)_疄璺點(diǎn)€偮?br />
鐜板湪鏈夊ソ鍑犱釜鍦版柟濡傛灉涓嶇洿鎺ヤ嬌鐢?J2EE 鎻愪緵鐨勬柟娉曡偗瀹氫細(xì)浜х敓闂銆備竴涓父瑙佺殑渚嬪瓙灝辨槸寮€鍙戜漢鍛橀€氳繃浣跨敤 JAAS 妯″潡鏉ユ浛浠?J2EE 瀹夊叏鎬э紝鑰屼笉鏄嬌鐢ㄥ唴緗殑閬靛驚瑙勮寖鐨勫簲鐢ㄧ▼搴忔湇鍔″櫒鏈哄埗鏉ヨ繘琛岄獙璇佸拰鎺堟潈銆傝娉ㄦ剰涓嶈鑴辯 J2EE 瑙勮寖鎻愪緵鐨勯獙璇佹満鍒訛紝濡傛灉鑴辯浜?jiǎn)姝よ鑼冨Q岃繖灝嗘槸緋葷粺瀛樺湪瀹夊叏婕忔礊浠ュ強(qiáng)鍘傚晢鍏煎鎬ч棶棰樼殑涓昏鍘熷洜銆傜被浼煎湴錛岃浣跨敤 servlet 鍜?EJB 瑙勮寖鎻愪緵鐨勬巿鏉冩満鍒訛紝騫朵笖濡傛灉鎮(zhèn)ㄨ鍋忕榪欎簺瑙勮寖鐨勮瘽錛岃紜繚浣跨敤瑙勮寖瀹氫箟鐨?API錛堜緥濡?getCallerPrincipal()錛変綔涓哄疄鐜扮殑鍩虹銆傞€氳繃榪欑鏂瑰紡錛屾?zhèn)畣鑳藉鍒╃敤鍘傚晢鎻愪緵鐨勫己瀹夊叏鎬у熀紜€璁炬柦錛屽叾涓紝涓氬姟瑕佹眰闇€瑕佹敮鎸佸鏉傜殑鎺堟潈瑙勫垯銆?

鍏朵粬甯歌鐨勯棶棰樺寘鎷嬌鐢ㄤ笉閬靛驚 J2EE 瑙勮寖鐨勬寔涔呮€ф満鍒訛紙榪欎嬌寰椾簨鍔$鐞嗗彉寰楀洶闅撅級(jí)銆佸湪J2EE紼嬪簭涓嬌鐢ㄤ笉閫傚綋鐨凧2SE 鏂規(guī)硶錛堜緥濡傜嚎紼嬫垨 singleton錛夛紝浠ュ強(qiáng)浣跨敤鎮(zhèn)ㄨ嚜宸辯殑鏂規(guī)硶瑙e喅紼嬪簭鍒扮▼搴忥紙program-to-program錛夌殑閫氫俊錛岃€屼笉鏄嬌鐢?J2EE 鍐呭湪鏀寔鐨勬満鍒訛紙渚嬪 JCA銆丣MS 鎴?Web 鏈嶅姟錛夈€傚綋鎮(zhèn)ㄥ皢涓€涓伒寰?J2EE 鐨勬湇鍔″櫒縐繪鍒板叾浠栫殑鏈嶅姟鍣ㄤ笂錛屾垨鑰呯Щ妞嶅埌鐩稿悓鏈嶅姟鍣ㄧ殑鏂扮増鏈笂錛屼笂榪扮殑璁捐閫夋嫨灝嗕細(xì)閫犳垚鏃犳暟鐨勯棶棰樸€傚敮涓€瑕佽儗紱昏鑼冪殑鎯呭喌鏄紝褰撲竴涓棶棰樺湪瑙勮寖鐨勮寖鍥村唴鏃犳硶瑙e喅鐨勬椂鍊欍€備緥濡傦紝瀹夋帓鎵ц瀹氭椂鐨勪笟鍔¢€昏緫鍦?EJB2.1 鍑虹幇涔嬪墠鏄竴涓棶棰橈紝鍦ㄧ被浼艱繖鏍風(fēng)殑鎯呭喌涓嬶紝鎴戜滑寤鴻褰撴湁鍘傚晢鎻愪緵鐨勮В鍐蟲(chóng)柟妗堟椂灝變嬌鐢ㄥ巶鍟嗘彁渚涚殑瑙e喅鏂規(guī)錛堜緥濡?WebSphere Application Server Enterprise 涓殑 Scheduler 宸ュ叿錛夛紝鑰屽湪娌℃湁鍘傚晢鎻愪緵鐨勮В鍐蟲(chóng)柟妗堟椂灝變嬌鐢ㄧ涓夋柟鎻愪緵鐨勫伐鍏楓€傚鏋滀嬌鐢ㄥ巶鍟嗘彁渚涚殑瑙e喅鏂規(guī)錛屽簲鐢ㄧ▼搴忕殑緇存姢浠ュ強(qiáng)灝嗗叾縐繪鍒版柊鐨勮鑼冪増鏈皢鏄巶鍟嗙殑闂錛岃€屼笉鏄?zhèn)ㄧ殑闂銆偮?br />
鏈€鍚庯紝瑕佹敞鎰忎笉瑕佸お鏃╁湴閲囩敤鏂版妧鏈€傚お榪囦簬鐑》閲囩敤榪樻病鏈夐泦鎴愬埌 J2EE 瑙勮寖鐨勫叾浠栭儴鍒嗘垨鑰呰繕娌℃湁闆嗘垚鍒板巶鍟嗙殑浜у搧涓殑鎶€鏈父浼?xì)甯︽潵鐏鹃毦鎬х殑鍚庢灉銆傛敮鎸佹槸鍏抽敭鐨??濡傛灉鎮(zhèn)ㄧ殑鍘傚晢涓嶇洿鎺ユ敮鎸佷竴縐嶇壒瀹氱殑鍦?JSR 涓彁鍑虹殑鎶€鏈紝浣嗘鎶€鏈繕娌℃湁琚?J2EE 鎵€鎺ュ彈錛岄偅涔堟?zhèn)兏嶅簲璇ラ噰鐢ㄦ鎶€鏈€傛瘯绔燂紝鎴戜滑涓殑澶у鏁頒漢浠庝簨瑙e喅涓氬姟闂錛岃€屼笉鏄帹榪涙妧鏈殑鍙戝睍銆?

4. 浠庝竴寮€濮嬪氨璁″垝浣跨敤 J2EE 瀹夊叏鎬с€?/strong>

鍚敤 WebSphere 瀹夊叏鎬с€傝繖浣挎?zhèn)ㄧ?EJB 鍜?URL 鑷沖皯鍙互璁╂墍鏈夋巿鏉冪敤鎴瘋闂€備笉瑕侀棶涓轟粈涔??鐓х潃鍋氬氨鏄簡(jiǎn)銆偮?br />
鍦ㄤ笌鎴戜滑鍚堜綔鐨勫鎴蜂腑錛屼竴寮€濮嬪氨鎵撶畻鍚敤 WebSphere J2EE 瀹夊叏鎬х殑欏懼鏄潪甯稿皯鐨勶紝榪欎竴鐐逛竴鐩磋鎴戜滑鎰熷埌鍚冩儕銆傛嵁鎴戜滑浼拌澶х害鍙湁 50% 鐨勯【瀹竴寮€濮嬪氨鎵撶畻浣跨敤姝ょ壒鎬с€備緥濡傦紝鎴戜滑鏇句笌涓€浜涘ぇ鍨嬬殑閲戣瀺鏈烘瀯錛堥摱琛屻€佷唬鐞嗙瓑絳夛級(jí)鍚堜綔榪囷紝浠栦滑涔熸病鏈夋墦綆楀惎鐢ㄥ畨鍏ㄦ€с€傚垢榪愮殑鏄紝榪欑闂鍦ㄩ儴緗蹭箣鍓嶇殑媯€(gè)鏌ユ椂灝卞緱浠ヨВ鍐?

涓嶄嬌鐢?J2EE 瀹夊叏鎬ф槸鍗遍櫓鐨勪簨鎯呫€傚亣璁炬?zhèn)ㄧ殑搴旂敤绋嬪簭闇€瑕佸畨鍏ㄦ€э紙鍑犱箮鎵€鏈夌殑搴旂敤紼嬪簭閮介渶瑕侊級(jí)錛屾?zhèn)ㄦ暍鎵撹祵鎮(zhèn)ㄧ殑寮€鍙戜漢鍛樿兘澶熸瀯寤哄嚭鑷繁鐨勫畨鍏ㄦ€х郴緇燂紝鑰岃繖涓郴緇熸瘮鎮(zhèn)ㄤ粠 J2EE 鍘傚晢閭i噷涔版潵鐨勬洿濂姐€傝繖鍙笉鏄釜濂界殑璧屾敞錛屼負(fù)鍒嗗竷寮忕殑搴旂敤紼嬪簭鎻愪緵瀹夊叏鎬ф槸寮傚父鍥伴毦鐨勩€備緥濡傦紝鎮(zhèn)ㄩ渶瑕佷嬌鐢ㄧ綉緇滃畨鍏ㄥ姞瀵嗕護(hù)鐗屾帶鍒跺 EJB 鐨勮闂€備互鎴戜滑鐨勭粡楠岀湅鏉ワ紝澶у鏁拌嚜宸辨瀯寤虹殑瀹夊叏鎬х郴緇熸槸涓嶅畨鍏ㄧ殑錛屽茍涓旀湁閲嶅ぇ鐨勭己闄鳳紝榪欎嬌浜у搧緋葷粺鏋佸叾鑴嗗急銆?

涓€浜涗笉浣跨敤 J2EE 瀹夊叏鎬х殑鐞嗙敱鍖呮嫭錛氭媴蹇?jī)鎬ц兘鐨勪笅闄嶏紝鐩鎬俊鍏朵粬鐨勫畨鍏ㄦ€э紙渚嬪 Netegrity SiteMinder錛夊彲浠ュ彇浠?J2EE 瀹夊叏鎬э紝鎴栬€呮槸涓嶇煡閬?WebSphere Application Server 瀹夊叏鐗規(guī)€у強(qiáng)鍔熻兘銆備笉瑕侀櫡鍏ヨ繖浜涢櫡闃變箣涓紝灝ゅ叾鏄紝灝界鍍?Netegrity SiteMinder 榪欐牱鐨勪駭鍝佽兘澶熸彁渚涗紭縐€鐨勫畨鍏ㄧ壒鎬э紝浣嗘槸浠呬粎鍏惰嚜韜笉鍙兘淇濇姢鏁翠釜 J2EE 搴旂敤紼嬪簭銆傝繖浜涗駭鍝佸繀欏諱笌 J2EE 搴旂敤紼嬪簭鏈嶅姟鍣ㄨ仈鍚堣搗鏉ユ墠鍙兘鍏ㄩ潰鍦頒繚鎶ゆ?zhèn)ㄧ殑绯痪l熴€?

鍏朵粬鐨勪竴縐嶅父瑙佺殑涓嶄嬌鐢?J2EE 瀹夊叏鎬х殑鍘熷洜鏄細(xì)鍩轟簬瑙掕壊鐨勬ā鍨嬫病鏈夋彁渚涜凍澶熺殑綺掑害璁塊棶鎺у埗浠ユ弧瓚沖鏉傜殑涓氬姟瑙勫垯銆傚敖綆′簨瀹炴槸榪欐牱鐨勶紝浣嗚繖涔熶笉搴旇鎴愪負(fù)涓嶄嬌鐢?J2EE 瀹夊叏鎬х殑鐞嗙敱銆傜浉鍙嶅湴錛屽簲璇ュ皢 J2EE 楠岃瘉鍙?J2EE 瑙掕壊涓庣壒瀹氱殑鎵╁睍瑙勫垯緇撳悎璧鋒潵銆傚鏋滃鏉傜殑涓氬姟瑙勫垯闇€瑕佸仛鍑哄畨鍏ㄦ€у喅絳栵紝閭e氨緙栧啓鐩稿簲鐨勪唬鐮侊紝鍏跺畨鍏ㄦ€у喅絳栬鍩轟簬鍙互鐩存帴浣跨敤鐨勪互鍙?qiáng)鍙潬鐨?J2EE 楠岃瘉淇℃伅錛堢敤鎴?ID 鍜岃鑹詫級(jí)銆?br />5銆佸垱寤轟綘鎵€鐭ラ亾鐨?br />

鍙嶅鐨勫紑鍙戝伐浣滃皢浣挎?zhèn)ㄨ兘澶熼€愭笎鍦版帉鎻℃墍鏈夌殑 J2EE 妯″潡銆傝浠庡垱寤哄皬鑰岀畝鍗曠殑妯″潡寮€濮嬭€屼笉鏄粠涓€寮€濮嬪氨椹笂娑夊強(qiáng)鍒版墍鏈夌殑妯″潡銆?

鎴戜滑蹇呴』鎵胯 J2EE 鏄簽澶х殑浣撶郴銆傚鏋滀竴涓紑鍙戝皬緇勫彧鏄紑濮嬩嬌鐢?J2EE錛岃繖灝嗗緢闅句竴涓嬪瓙灝辮兘鎺屾彙瀹冦€傚湪 J2EE 涓湁澶鐨勬蹇靛拰 API 闇€瑕佹帉鎻°€傚湪榪欑鎯呭喌涓嬶紝鎴愬姛鎺屾彙 J2EE 鐨勫叧閿槸浠庣畝鍗曠殑姝ラ寮€濮嬪仛璧楓€偮?br />
榪欑鏂規(guī)硶鍙互閫氳繃鍦ㄦ?zhèn)ㄧ殑搴旂敤绋嬪簭涓垱寰彏畯鑰岀畝鍗曠殑妯″潡鏉ュ緱鍒版渶濂界殑瀹炵幇銆傚鏋滀竴涓紑鍙戝皬緇勯€氳繃鍒涘緩涓€涓畝鍗曠殑鍩熸ā鍨嬩互鍙?qiáng)鍚庣鐨勬寔涔呮€ф満鍒訛紙涔熻浣跨敤鐨勬槸 JDBC錛?騫朵笖瀵瑰叾榪涜浜?jiǎn)瀹屾暣鐨剫箣璇曞Q岃繖浼?xì)澧炲嫁Z粬浠殑鑷俊蹇?jī)锛屼簬鏄粬浠細(xì)鋴社敤璇ュ煙妯″瀷鍘绘帉鎻′娇鐢?servlet 鍜?JSP 鐨勫墠绔紑鍙戙€傚鏋滀竴涓紑鍙戠粍鍙戠幇鏈夊繀瑕佷嬌鐢?EJB錛屼粬浠篃浼?xì)绫讳技鍦板紑濮嬪湪瀹瑰櫒綆$悊鐨勬寔涔呮€?EJB 緇勪歡涔嬩笂浣跨敤綆€鍗曠殑浼?xì)璇?Facades錛屾垨鑰呬嬌鐢ㄥ熀浜?JDBC 鐨勬暟鎹闂璞★紙JDBC-based Data Access Objects錛孌AO錛夛紝鑰屼笉鏄煩榪囪繖浜涘幓浣跨敤鏇村姞澶嶆潅鐨勬瀯閫狅紙渚嬪娑堟伅椹卞姩bean鍜孞MS錛夈€?

榪欑鏂規(guī)硶騫朵笉鏄粈涔堟柊鏂規(guī)硶錛屼絾鏄緢灝戞湁寮€鍙戠粍浠ヨ繖縐嶆柟寮忔潵鍩瑰吇浠栦滑鐨勬妧鑳姐€傜浉鍙嶅湴錛屽鏁板紑鍙戠粍鐢變簬灝濊瘯椹笂灝辨瀯寤烘墍鏈夌殑妯″潡錛屽悓鏃舵秹鍙?MVC 涓殑瑙嗗浘灞傘€佹ā鍨嬪眰鍜屾帶鍒跺櫒灞傦紝榪欐牱鍋氱殑緇撴灉鏄粬浠線寰€浼?xì)闄峰叆杩涘害鐨勫帇鍔涗箣涓€備粬浠簲璇ヨ€冭檻涓€浜涙晱鎹鳳紙Agile錛夊紑鍙戞柟娉曪紝渚嬪鏋侀檺緙栫▼錛圶P錛夛紝榪欑寮€鍙戞柟娉曢噰鐢ㄤ竴縐嶅閲忓涔?fàn)鍙?qiáng)寮€鍙戞柟娉曘€傚湪 XP 涓湁涓€縐嶇О涓?ModelFirst 鐨勮繃紼嬶紝榪欎釜榪囩▼娑夊強(qiáng)鍒伴鍏堟瀯寤哄煙妯″瀷浣滀負(fù)涓€縐嶆満鍒舵潵緇勭粐鍜屽疄鐜扮敤鎴峰満鏅€傚熀鏈鏉ワ紝鎮(zhèn)ㄨ鏋勫緩鍩熸ā鍨嬩綔涓烘?zhèn)ㄨ瀹炵幇鐨勭敤鎴峰満鏅殑棣栬閮ㄥ垎锛岀劧鍚庡湪鍩熸ā鍨嬩箣涓婃瀯寰忎竴涓敤鎴風(fēng)晫闈紙UI錛変綔涓虹敤鎴峰満鏅疄鐜扮殑緇撴灉銆傝繖縐嶆柟娉曢潪甯擱€傚悎璁╀竴涓紑鍙戠粍涓€嬈″彧瀛﹀埌涓€縐嶆妧鏈紝鑰屼笉鏄浠栦滑鍚屾椂闈㈠寰堝縐嶆儏鍐碉紙鎴栬€呰浠栦滑璇誨緢澶氫功錛夛紝榪欎細(xì)浠や粬浠穿婧冪殑銆?

榪樻湁錛屽姣忎釜搴旂敤紼嬪簭灞傞噸澶嶇殑寮€鍙戝彲鑳戒細(xì)鍖呭惈涓€浜涢€傚綋鐨勬ā寮忓強(qiáng)鏈€浣?jīng)_疄璺點(diǎn)€傚鏋滄?zhèn)ㄤ粠搴旂敤绋嬪簭鐨勫簳灞傚紑濮嬪簲鐢ㄤ竴浜涙ā寮忓鏁版嵁璁塊棶瀵硅薄鍜屼細(xì)璇?Facades錛屾?zhèn)兏嶅簲璇ュ湪鎮(zhèn)ㄧ殑JSP鍜屽叾浠栬鍥懼璞′腑浣跨敤鍩熼€昏緫銆?

鏈€鍚庯紝褰撴?zhèn)ㄥ紑鍙戜竴浜涚畝鍗曠殑妯″潡鏃訛紝鍦ㄥ紑濮嬬殑鍒濇湡灝卞彲浠ュ鎮(zhèn)ㄧ殑搴旂敤紼嬪簭榪涜鎬ц兘嫻嬭瘯銆傚鏋滅洿鍒板簲鐢ㄧ▼搴忓紑鍙戠殑鍚庢湡鎵嶈繘琛屾€ц兘嫻嬭瘯鐨勮瘽錛岃繖寰€寰€浼?xì)鍑虹幇鐏鹃毦鎬х殑鍚庢灉銆?

6. 褰撲嬌鐢?EJB 緇勪歡鏃訛紝濮嬬粓浣跨敤浼?xì)璇?Facades銆?



鍐充笉瑕佸皢瀹炰綋 bean 鐩存帴鏆撮湶緇欎換浣曠敤鎴風(fēng)被鍨嬨€傚瀹炰綋 bean 鍙彲浠ヤ嬌鐢ㄦ湰鍦?EJB 鎺ュ彛錛圠ocal EJB interfaces錛夈€?

褰撲嬌鐢?EJB 緇勪歡鏃訛紝浣跨敤涓€涓細(xì)璇?Facades 鏄竴涓‘璁ゆ棤鐤戠殑鏈€浣?jīng)_疄璺點(diǎn)€傚疄闄呬笂錛岃繖涓€氱敤鐨勫疄璺佃騫挎硾鍦板簲鐢ㄥ埌浠諱綍鍒嗗竷寮忕殑鎶€鏈腑錛屽寘鎷?CORBA銆丒JB 鍜?DCOM銆備粠鏍規(guī)湰涓婅錛屾?zhèn)ㄧ殑搴旂敤绋嬪簭鐨勫垎甯?浜ゅ弶鍖哄煙"瓚婃槸搴曞眰鍖栵紝瀵瑰皬鍧楃殑鏁版嵁鐢變簬澶氭閲嶅鐨勭綉緇滀腑緇ч€犳垚鐨勬椂闂存秷鑰楀氨瓚婂皯銆傝杈懼埌榪欎釜鐩殑鐨勬柟娉曞氨鏄細(xì)鍒涘緩澶х矑搴︾殑 Facades 瀵硅薄錛岃繖涓璞″寘鍚€昏緫瀛愮郴緇燂紝鍥犺€屽彲浠ラ€氳繃涓€涓柟娉曡皟鐢ㄥ氨鍙互瀹屾垚涓€浜涙湁鐢ㄧ殑涓氬姟鍔熻兘銆傝繖縐嶆柟娉曚笉浣嗚兘澶熼檷浣庣綉緇滃紑閿€錛岃€屼笖鍦?EJB 鍐呴儴閫氳繃涓烘暣涓笟鍔″姛鑳藉垱寤轟竴涓簨鍔$幆澧冧篃鍙互澶уぇ鍦板噺灝戝鏁版嵁搴撶殑璁塊棶嬈℃暟銆?

EJB 鏈湴鎺ュ彛錛堜粠 EJB 2.0 瑙勮寖寮€濮嬩嬌鐢級(jí)涓哄叡瀛樼殑 EJB 鎻愪緵浜?jiǎn)鎬ц兘浼樺寲鏂規(guī)硶銆傛湰鍦版帴鍙e繀欏昏鎮(zhèn)ㄧ殑搴旂敤紼嬪簭鏄懼紡鍦拌繘琛岃闂紝榪欓渶瑕佷唬鐮佺殑鏀瑰彉鍜岄槻姝互鍚庨厤緗?EJB 鏃墮渶瑕佸簲鐢ㄧ▼搴忕殑鏀瑰彉銆傜敱浜庝細(xì)璇?Facades 鍜屽畠鍖呭惈鐨勬暣涓?EJB 瀵逛簬褰兼鏉ヨ閮藉簲璇ユ槸鏈湴鐨勶紝鎴戜滑寤鴻瀵逛細(xì)璇?Facades 鍚庨潰鐨勫疄浣?bean 浣跨敤鏈湴鎺ュ彛銆傜劧鑰岋紝浼?xì)璇?Facades 鏈韓鐨勫疄鐜幫紙鍏稿瀷渚嬪瓙濡傛棤鐘舵€佷細(xì)璇?bean錛夊簲璇ヨ璁′負(fù)榪滅▼鎺ュ彛銆?

涓轟簡(jiǎn)鎬ц兘鐨勪紭鍖栵紝鍙互灝嗕竴涓湰鍦版帴鍙f坊鍔犲埌浼?xì)璇?Facades銆傝繖鏍峰仛鍒╃敤浜?jiǎn)杩欐牱涓€涓簨瀹烇細(xì)鍦ㄥぇ澶氭暟鎯呭喌涓嬶紙鑷沖皯鍦?Web 搴旂敤紼嬪簭涓級(jí)錛屾?zhèn)ㄧ?EJB 瀹㈡埛绔拰 EJB 浼?xì)鍏卞悓瀛樺湪浜庡悓涓€涓?Java 铏氭嫙鏈猴紙JVM錛変腑銆傚彟澶栦竴縐嶆儏鍐碉紝濡傛灉浼?xì)璇?Facades 鍦ㄦ湰鍦拌璋冪敤錛屽彲浠ヤ嬌鐢?J2EE 搴旂敤鏈嶅姟鍣ㄩ厤緗紭鍖栵紙configuration optimizations錛夛紝渚嬪 WebSphere 涓殑"No Local Copies"銆傜劧鑰岋紝鎮(zhèn)ㄥ繀欏繪敞鎰忓埌榪欎簺鍙緵閫夋嫨鐨勬柟妗堜細(xì)灝嗕氦浜掓柟娉曚粠鎸夊€間紶閫掞紙pass-by-value錛夋敼鍙樹(shù)負(fù)鎸夊紩鐢ㄤ紶閫掞紙pass-by-reference錛夈€傝繖鍙兘浼?xì)鍦ㄦ?zhèn)ㄧ殑浠g爜涓駭鐢熷緢寰鐨勯敊璇€傚綋鎮(zhèn)ㄨ鍒╃敤榪欎簺鏂規(guī)鏃訛紝鎮(zhèn)ㄥ簲璇ュ湪涓€寮€濮嬪氨鑰冭檻鍏跺彲琛屾€с€偮?br />
濡傛灉鍦ㄦ?zhèn)ㄧ殑浼?xì)璇?Facades 涓嬌鐢ㄨ繙紼嬫帴鍙o紙鑰屼笉鏄湰鍦版帴鍙o級(jí)錛屾?zhèn)ㄤ篃鍙互灏嗗悓鏍风殑浼?xì)璇?Facades 鍦?J2EE 1.4 涓互鍏煎鐨勬柟寮忎綔涓?Web 鏈嶅姟鏉ラ厤緗€傝繖鏄洜涓?JSR 109錛圝2EE 1.4 涓殑 Web 鏈嶅姟閮ㄧ講閮ㄥ垎錛夎姹備嬌鐢ㄦ棤鐘舵€佷細(xì)璇?bean 鐨勮繙紼嬫帴鍙d綔涓?EJB Web 鏈嶅姟鍜?EJB 瀹炵幇鐨勬帴鍙c€傝繖鏍峰仛鏄€煎緱鐨勶紝鍥犱負(fù)榪欐牱鍋氬彲浠ヤ負(fù)鎮(zhèn)ㄧ殑涓氬姟閫昏緫澧炲姞瀹㈡埛绔被鍨嬬殑鏁伴噺銆?

7. 浣跨敤鏃犵姸鎬佷細(xì)璇?bean錛岃€屼笉鏄湁鐘舵€佷細(xì)璇?bean

榪欐牱鍋氬彲浠ヤ嬌鎮(zhèn)ㄧ殑緋葷粺緇忓緱璧烽敊璇殑緇堟銆備嬌鐢?HttpSession 瀛樺偍鍜岀敤鎴風(fēng)浉鍏崇殑鐘舵€併€?

浠ユ垜浠殑瑙傜偣鐪嬫潵錛屾湁鐘舵€佷細(xì)璇?bean 鐨勬蹇靛凡緇忚繃鏃朵簡(jiǎn)銆傚鏋滄?zhèn)ㄤ粩缁嗗鍏惰€冭檻涓€涓嬶紝涓€涓湁鐘舵€佷細(xì)璇?bean 瀹為檯涓婁笌涓€涓?CORBA 瀵硅薄鍦ㄤ綋緋葷粨鏋勪笂鏄畬鍏ㄧ浉鍚岀殑錛屾棤闈炲氨鏄竴涓璞″疄渚嬶紝緇戝畾鍒頒竴涓湇鍔″櫒錛屽茍涓斾緷璧栦簬鏈嶅姟鍣ㄦ潵綆$悊鍏剁敓鍛藉懆鏈熴€傚鏋滄湇鍔″櫒鍏抽棴浜?jiǎn)锛寴q欑瀵硅薄涔熷氨涓嶅瓨鍦紝閭d箞榪欎釜 bean 鐨勫鎴風(fēng)鐨勪俊鎭篃灝變笉瀛樺湪銆?

J2EE 搴旂敤鏈嶅姟鍣ㄤ負(fù)鏈夌姸鎬佷細(xì)璇?bean 鎻愪緵鐨勬晠闅滆漿縐伙紙failover錛夎兘澶熻В鍐充竴浜涢棶棰橈紝浣嗘槸鏈夌姸鎬佺殑瑙e喅鏂規(guī)娌℃湁鏃犵姸鎬佺殑瑙e喅鏂規(guī)鏄撲簬鎵╁睍銆備緥濡傦紝鍦?WebSphere Application Server 涓紝瀵規(guī)棤鐘舵€佷細(xì)璇?bean 鐨勮姹傦紝鏄€氳繃瀵歸儴緗叉棤鐘舵€佷細(xì)璇濈殑鎴愬憳闆嗙兢榪涜騫寵 鍔犺澆鏉ュ疄鐜般€傜浉鍙嶅湴錛孞2EE 搴旂敤鏈嶅姟鍣ㄤ笉鑳藉鏈夌姸鎬?bean 鐨勮姹傝繘琛屽鉤琛″姞杞姐€傝繖鎰忓懗鐫€鎮(zhèn)ㄧ殑闆嗙兢涓殑鏈嶅姟鍣ㄧ殑鍔犺澆榪囩▼浼?xì)鏄笉鍧囪 鐨勩€傛澶栵紝浣跨敤鏈夌姸鎬佷細(xì)璇?bean 灝嗕細(xì)鍐嶆坊鍔犱竴浜涚姸鎬佸埌鎮(zhèn)ㄧ殑搴旂敤鏈嶅姟鍣ㄤ笂錛岃繖涔熸槸涓嶅ソ鐨勫仛娉曘€傝繖鏍峰氨澧炲姞浜?jiǎn)绯痪l熺殑澶嶆潅鎬э紝騫朵笖鍦ㄥ嚭鐜版晠闅滅殑鎯呭喌涓嬩嬌闂鍙樺緱澶嶆潅鍖栥€傚垱寤哄仴澹殑鍒嗗竷寮忕郴緇熺殑涓€涓叧閿師鍒欐槸灝介噺浣跨敤鏃犵姸鎬佽涓恒€?

鍥犳錛屾垜浠緩璁澶у鏁板簲鐢ㄧ▼搴忎嬌鐢ㄦ棤鐘舵€佷細(xì)璇?bean 鏂規(guī)硶銆備換浣曞湪澶勭悊鏃墮渶瑕佷嬌鐢ㄧ殑涓庣敤鎴風(fēng)浉鍏崇殑鐘舵€佸簲璇ヤ互鍙傛暟鐨勫艦寮忎紶閫佸埌 EJB 鐨勬柟娉曚腑錛堝茍涓旈€氳繃浣跨敤涓€縐嶆満鍒跺 HttpSession 鏉ュ瓨鍌ㄥ畠錛夋垨鑰呬粠鎸佷箙鎬х殑鍚庣瀛樺偍錛堜緥濡傞€氳繃浣跨敤瀹炰綋 bean)浣滀負(fù) EJB 浜嬪姟鐨勪竴閮ㄥ垎鏉ヨ繘琛屾绱€€傚湪鍚堥€傜殑鎯呭喌涓嬶紝榪欎釜淇℃伅鍙互緙撳瓨鍒板唴瀛樹(shù)腑錛屼絾鏄娉ㄦ剰鍦ㄥ垎甯冨紡鐨勭幆澧冧腑淇濆瓨榪欑緙撳瓨鎵€娼滃湪鐨勬寫鎴樻€с€傜紦瀛橀潪甯擱€傚悎浜庡彧璇繪暟鎹€?

鎬諱箣錛屾?zhèn)ㄨ纭繚浠庝竴寮€濮嬪氨瑕佽€冭檻鍒板彲浼稿睍鎬с€傛鏌ヨ璁′腑鐨勬墍鏈夎鎯籌紝騫朵笖鑰冭檻鍒板綋鎮(zhèn)ㄧ殑搴旂敤紼嬪簭瑕佸湪澶氫釜鏈嶅姟鍣ㄤ笂榪愯鏃訛紝鏄惁涔熷彲浠ユ甯歌繍琛屻€傝繖涓鍒欎笉浣嗛€傚悎涓婅堪鎯呭喌鐨勫簲鐢ㄧ▼搴忎唬鐮侊紝涔熼€傜敤浜庡 MBean 鍜屽叾浠栫鐞嗙晫闈㈢殑鎯呭喌涓嬨€?

閬垮厤浣跨敤鏈夌姸鎬佹€т笉鍙槸瀵?IBM/WebSphere 鐨勫緩璁紝榪欐槸涓€涓熀鏈殑 J2EE 璁捐鍘熷垯銆?

8. 浣跨敤瀹瑰櫒綆$悊鐨勪簨鍔?/strong>

瀛︿範(fàn)涓€涓?J2EE 涓殑涓ら樁孌墊彁浜や簨鍔★紝騫朵笖浣跨敤榪欑鏂瑰紡錛岃€屼笉鏄紑鏀炬?zhèn)ㄨ嚜宸辩殑浜嬪姟绠$悊銆傚鍣ㄥ湪浜嬪姟浼樺寲鏂歸潰鍑犱箮鎬繪槸姣旇緝濂界殑銆?

浣跨敤瀹瑰櫒綆$悊鐨勪簨鍔★紙CMT錛夋彁渚涗簡(jiǎn)涓や釜鍏抽敭鐨勪紭鍔匡紙濡傛灉娌℃湁瀹瑰櫒鏀寔榪欏嚑涔庢槸涓嶅彲鑳界殑錛夛細(xì)鍙粍鍚堢殑宸ヤ綔鍗曞厓鍜屽仴澹殑浜嬪姟琛屼負(fù)銆?

濡傛灉鎮(zhèn)ㄧ殑搴旂敤紼嬪簭浠g爜鏄懼紡鍦頒嬌鐢ㄤ簡(jiǎn)寮€濮嬪拰緇撴潫浜嬪姟錛堜篃璁鎬嬌鐢?javax.jts.UserTransaction 鎴栬€呯敋鑷蟲(chóng)槸鏈湴璧勬簮浜嬪姟錛夛紝鑰屽皢鏉ョ殑瑕佹眰闇€瑕佺粍鍚堟ā鍧楋紙涔熻浼?xì)鏄唬鐮侀噸鏋勭殑涓€閮ㄥ垎錛夛紝榪欑鎯呭喌涓嬪線寰€闇€瑕佹敼鍙樹(shù)簨鍔′唬鐮併€備緥濡傦紝濡傛灉妯″潡 A 寮€濮嬩簡(jiǎn)涓€涓暟鎹簱浜嬪姟錛屾洿鏂版暟鎹簱錛岄殢鍚庢彁浜や簨鍔★紝騫朵笖鏈夋ā鍧?B 鍋氬嚭鍚屾牱鐨勫鐞嗭紝璇瘋€(gè)冭檻涓€涓嬪綋鎮(zhèn)ㄥ湪妯″潡 C 涓皾璇曚嬌鐢ㄤ笂榪頒袱涓ā鍧楋紝浼?xì)鍑虹庮C粈涔堟儏鍐靛憿錛熺幇鍦紝妯″潡 C 姝e湪鎵ц涓€涓€昏緫鍔ㄤ綔錛岃€岃繖涓姩浣滃疄闄呬笂灝嗚皟鐢ㄤ袱涓嫭绔嬬殑浜嬪姟銆傚鏋滄ā鍧?B 鍦ㄦ墽琛屼腑澶辮觸浜?jiǎn)锛岃€屾ā鍧?A 鐨勪簨鍔′粛鐒惰兘琚彁浜ゃ€傝繖鏄垜浠墍涓嶅笇鏈涘嚭鐜扮殑琛屼負(fù)銆傚鏋滐紝鐩稿弽鍦幫紝妯″潡 A 鍜屾ā鍧?B 閮戒嬌鐢?CMT 鐨勮瘽錛屾ā鍧?C 涔熷彲浠ュ紑濮嬩竴涓?CMT錛堥€氬父閫氳繃閰嶇疆鎻忚堪絎︼級(jí)錛屽茍涓斿湪妯″潡 A 鍜屾ā鍧?B 涓殑浜嬪姟灝嗘槸鍚屼竴涓簨鍔$殑闅愬惈閮ㄥ垎錛岃繖鏍峰氨涓嶅啀闇€瑕佸鏉傜殑閲嶅啓浠g爜鐨勫伐浣滀簡(jiǎn)銆?

濡傛灉鎮(zhèn)ㄧ殑搴旂敤紼嬪簭鍦ㄥ悓涓€涓搷浣滀腑闇€瑕佽闂縐嶈祫婧愶紝鎮(zhèn)ㄥ氨瑕佷嬌鐢ㄤ袱闃舵鎻愪氦浜嬪姟銆備緥濡傦紝濡傛灉浠?JMS 闃熷垪涓垹闄や竴涓秷鎭紝騫朵笖闅忓悗鏇存柊鍩轟簬榪欐潯娑堟伅鐨勭邯褰曪紝榪欐椂錛岃淇濊瘉榪欎袱涓搷浣滈兘浼?xì)鎵ц鎴栭兘涓嶄細(xì)鎵ц灏卞彉寰棡湄?fù)閲嶈銆傚鏋滀竴鏉℃秷鎭凡緇忎粠闃熷垪涓鍒犻櫎錛岃€岀郴緇熸病鏈夋洿鏂頒笌姝ゆ秷鎭浉鍏崇殑鏁版嵁搴撲腑鐨勭邯褰曪紝閭d箞榪欑緋葷粺鏄笉紼沖畾鐨勩€備竴浜涗弗閲嶇殑瀹㈡埛鍙?qiáng)鍟嗕笟绾牼U鋒簮鑷笉涓€鑷寸殑鐘舵€併€?

鎴戜滑鏃跺父鐪嬪埌涓€浜涘鎴峰簲鐢ㄧ▼搴忚瘯鍥懼疄鐜頒粬浠嚜宸辯殑瑙e喅鏂規(guī)銆備篃璁鎬細(xì)閫氳繃搴旂敤紼嬪簭鐨勪唬鐮佸湪鏁版嵁搴撴洿鏂板け璐ョ殑鏃跺€?"鎾ら攢"瀵歸槦鍒楃殑鎿嶄綔銆傛垜浠笉鎻愬€¤繖鏍峰仛銆傝繖縐嶅疄鐜拌姣旀?zhèn)ㄦ渶鍒濈殑鎯寵薄瑕佸鏉傚緱澶氾紝騫朵笖榪樻湁璁稿鍏朵粬鐨勬儏鍐碉紙鎯寵薄涓€涓嬪鏋滃簲鐢ㄧ▼搴忓湪鎵ц姝ゆ搷浣滅殑榪囩▼涓獊鐒跺穿婧冪殑鎯呭喌錛夈€備綔涓烘浛浠g殑鏂瑰紡錛屽簲璇ヤ嬌鐢ㄤ袱闃舵鎻愪氦浜嬪姟銆傚鏋滄?zhèn)ㄤ娇鐢?CMT錛屽茍涓斿湪涓€涓崟涓€鐨?CMT 涓闂袱闃舵鎻愪氦鐨勮祫婧愶紙渚嬪 JMS 鍜屽ぇ澶氭暟鏁版嵁搴擄級(jí)錛學(xué)ebSphere 灝嗕細(xì)澶勭悊鎵€鏈夌殑澶嶆潅宸ヤ綔銆傚畠?yōu)畣纭繚鏁翠釜浜嬪姟琚墽琛屾垨鑰呴兘涓嶈鎵ц錛屽寘鎷郴緇熷穿婧冦€佹暟鎹簱宕╂簝鎴栧叾浠栫殑鎯呭喌銆傚叾瀹炵幇鍦ㄤ簨鍔℃棩蹇椾腑淇濆瓨鐫€浜嬪姟鐘舵€併€傚綋搴旂敤紼嬪簭璁塊棶澶氱璧勬簮鐨勬椂鍊欙紝鎴戜滑鎬庝箞寮鴻皟浣跨敤 CMT 浜嬪姟鐨勫繀瑕佹€ч兘涓嶄負(fù)榪囥€?
9銆佸皢jsp浣滀負(fù)琛ㄧず灞傜殑棣栭€?br />鍙湁鍦ㄩ渶瑕佸縐嶈〃紺鴻緭鍑虹被鍨嬶紝騫朵笖杈撳嚭綾誨瀷琚竴涓崟涓€鐨勬帶鍒跺櫒鍙?qiáng)鍚庣鏀寔鏃舵墠鋴社?XML/XSLT銆?

鎴戜滑甯稿惉鍒頒竴浜涗簤璁鴻錛屼負(fù)浠€涔堟?zhèn)ㄩ€夋嫨 XML/XSLT 鑰屼笉鏄?JSP 浣滀負(fù)琛ㄧず灞傛妧鏈€傞€夋嫨 XML/XSLT 鐨勪漢鐨勮鐐規(guī)槸錛孞SP" 鍏佽鎮(zhèn)ㄥ皢妯″瀷鍜岃鍥炬販鍚堝湪涓€璧?錛岃€?XML/XSLT 涓嶄細(xì)鏈夎繖縐嶉棶棰樸€傞仐鎲劇殑鏄紝榪欑瑙傜偣騫朵笉瀹屽叏姝g‘錛屾垨鑰呰嚦灝戜笉鍍忕櫧涓庨粦閭f牱鍒嗙殑娓呮銆傚疄闄呬笂錛孹SL 鍜?XPath 鏄紪紼嬭璦€銆俋SL 鏄浘鐏靛畬鎴愮殑錛圱uring-complete錛夛紝灝界瀹冧笉絎﹀悎澶у鏁頒漢瀹氫箟鐨勭紪紼嬭璦€錛屽洜涓哄畠鏄熀浜庤鍒欑殑錛屽茍涓斾笉鍏峰紼嬪簭鍛樹(shù)範(fàn)鎯殑鎺у埗宸ュ叿銆?

鐜板湪鐨勯棶棰樻槸鏃㈢劧緇欎簣浜?jiǎn)杩櫩U嶇伒媧繪€э紝寮€鍙戜漢鍛樺氨浼?xì)鍒╃敤杩櫩U嶇伒媧繪€с€傚敖綆℃瘡涓漢閮借鍚?JSP 浣垮紑鍙戜漢鍛樺鏄撳湪瑙嗗浘涓姞鍏?綾諱技妯″瀷"鐨勮涓猴紝鑰屽疄闄呬笂錛屽湪 XSL 涓篃鏈夊彲鑳藉仛鍑轟竴浜涘悓鏍風(fēng)殑浜嬫儏銆傚敖綆′粠 XSL 涓繘琛岃闂暟鎹簱榪欐牱鐨勪簨鎯呬細(xì)闈炲父鍥伴毦錛屼絾鏄垜浠浘緇忚鍒拌繃涓€浜涘紓甯稿鏉傜殑 XSLT 鏍峰紡琛ㄦ墽琛屽鏉傜殑杞崲錛岃繖瀹為檯涓婃槸妯″瀷浠g爜銆?

鐒惰€岋紝搴旇閫夋嫨 JSP 浣滀負(fù)棣栭€夌殑琛ㄧず鎶€鏈殑鏈€鍩烘湰鐨勫師鍥犳槸錛孞SP 鏄幇鍦ㄦ敮鎸佹渶騫挎硾鐨勩€佷篃鏄渶琚箍娉涚悊瑙g殑 J2EE 瑙嗗浘鎶€鏈€傝€岄殢鐫€鑷畾涔夋爣璁板簱銆丣STL 鍜?JSP2.0 鐨勬柊鐗規(guī)€х殑寮曞叆錛屽垱寤?JSP 鍙樺緱鏇村姞瀹規(guī)槗錛屽茍涓斾笉闇€瑕佷換浣?Java 浠g爜錛屼互鍙?qiáng)鍙互灏嗘ā鍨嬪拰瑙嗗浘娓呮櫚鐨勫垎绂诲紑銆傚湪涓€浜涘紑鍙戠幆澧冧腑錛堝 WebSphere Studio錛夊姞鍏ヤ簡(jiǎn)瀵?JSP錛堝寘鎷璋冭瘯鐨勬敮鎸侊級(jí)鐨勫己澶ф敮鎸侊紝騫朵笖璁稿寮€鍙戜漢鍛樺彂鐜頒嬌鐢?JSP 榪涜寮€鍙戣姣斾嬌鐢?XLS 綆€鍗曪紝涓€浜涙敮鎸?JSP 鐨勫浘褰㈣璁″伐鍏峰強(qiáng)鍏朵粬鐗瑰緛錛堝挨鍏跺湪 JSF 榪欐牱鐨勬鏋朵笅錛変嬌寰楀紑鍙戜漢鍛樺彲浠ヤ互鎵€瑙佸嵆鎵€寰楃殑鏂瑰紡榪涜 JSP 鐨勫紑鍙戯紝鑰屽浜?XSL 鏈夋椂涓嶅鏄撳仛鍒般€?

鏈€鍚庝竴涓璋ㄦ厧鑰冭檻浣跨敤 JSP 鐨勫師鍥犳槸閫熷害闂銆傚湪 IBM 鎵€浣滅殑瀵規(guī)瘮 XSL 鍜?JSP 鐩稿閫熷害鐨勬€ц兘嫻嬭瘯鏄劇ず錛氬湪澶у鏁版儏鍐典笅錛孞SP 鍦ㄧ敓鎴愬悓鏍風(fēng)殑 HTML 鐨勬椂鍊欙紝瑕佹瘮 XSL 蹇ソ鍑犲€嶏紝鐢氳嚦浣跨敤緙栬瘧榪囩殑 XSL 涔熸槸濡傛銆傚敖綆″鏁版儏鍐典笅榪欎笉鏄棶棰橈紝浣嗗湪鎬ц兘瑕佹眰寰堥珮鐨勬儏鍐典笅錛岃繖灝變細(xì)鎴愪負(fù)闂銆?

鐒惰€岋紝榪欎篃涓嶈兘璇達(dá)紝鎮(zhèn)ㄦ案榪滀篃涓嶈浣跨敤 XSL銆傚湪涓€浜涙儏鍐典笅錛孹SL 鑳藉琛ㄧず涓€緇勫浐瀹氱殑鏁版嵁錛屽茍涓斿彲浠ュ熀浜庝笉鍚岀殑鏍峰紡琛ㄦ潵浠ヤ笉鍚岀殑鏂瑰紡鏄劇ず榪欎簺鏁版嵁鐨勮兘鍔涙槸鏄劇ず瑙嗗浘鐨勬渶浣寵В鍐蟲(chóng)柟妗堛€傜劧鑰岋紝榪欏彧鏄竴縐嶄緥澶栫殑鎯呭喌錛岃€屼笉鏄€氱敤鐨勮鍒欍€傚鏋滄?zhèn)ㄥ彧鏄敓鎴?HTML 鏉ヨ〃杈炬瘡涓€涓〉闈紝閭d箞鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝XSL 鏄竴縐嶄笉蹇呰鐨勬妧鏈紝騫朵笖錛屽畠緇欐?zhèn)ㄧ殑寮€鍙戜漢鍛樻墍甯︽潵鐨勯棶棰樿繙姣斿畠鎵€鑳借В鍐崇殑闂澶氥€?

10. 褰撲嬌鐢?HttpSession 鏃訛紝灝介噺鍙皢褰撳墠浜嬪姟鎵€闇€瑕佺殑鐘舵€佷繚瀛樺叾涓紝鍏朵粬鍐呭涓嶈淇濆瓨鍦?HttpSession 涓€偮?br />


鍚敤浼?xì)璇濇寔涔呮€с€?

HttpSessions 瀵逛簬瀛樺偍搴旂敤紼嬪簭鐘舵€佷俊鎭槸闈炲父鏈夌敤鐨勩€傚叾 API 鏄撲簬浣跨敤鍜岀悊瑙c€傞仐鎲劇殑鏄紝寮€鍙戜漢鍛樺父甯擱仐蹇樹(shù)簡(jiǎn) HttpSession 鐨勭洰鐨?---鐢ㄦ潵淇濇寔鏆傛椂鐨勭敤鎴風(fēng)姸鎬併€傚畠涓嶆槸浠繪剰鐨勬暟鎹紦瀛樸€傛垜浠凡緇忚鍒拌繃澶鐨勭郴緇熶負(fù)姣忎釜鐢ㄦ埛鐨勪細(xì)璇濇斁鍏ヤ簡(jiǎn)澶ч噺鐨勬暟鎹紙杈懼埌鍏嗗瓧鑺傦級(jí)銆傞偅濂戒簡(jiǎn)錛屽鏋滃悓鏃舵湁 1000 涓櫥褰曠郴緇熺殑鐢ㄦ埛錛屾瘡涓敤鎴鋒嫢鏈?1MB 鐨勪細(xì)璇濇暟鎹紝閭d箞灝遍渶瑕?1G 鎴栬€呮洿澶氱殑鍐呭瓨鐢ㄤ簬榪欎簺浼?xì)璇濄€傝浣胯繖浜?HTTP 浼?xì)璇濇暟鎹緝灏忎竴浜涳紝涓嶇劧鐨勮瘽錛屾?zhèn)ㄧ殑搴旂敤绋嬪簭鐨勬€ц兘灝嗕細(xì)涓嬮檷銆備竴涓ぇ綰︽瘮杈冨悎閫傜殑鏁版嵁閲忓簲璇ユ槸姣忎釜鐢ㄦ埛鐨勪細(xì)璇濇暟鎹湪 2K-4K 涔嬮棿錛岃繖涓嶆槸涓€涓‖鎬х殑瑙勫垯錛?K 浠嶇劧娌℃湁闂錛屼絾鏄樉鐒朵細(xì)姣?2K 鏃剁殑閫熷害瑕佹參銆備竴瀹氳娉ㄦ剰錛屼笉瑕佷嬌 HttpSession 鍙樻垚鏁版嵁鍫嗙Н鐨勫満鎵€銆偮?br />
涓€涓父瑙佺殑闂鏄嬌鐢?HttpSession 緙撳瓨?shù)竴浜涘緢瀹規(guī)槗鍐嶅垱寤虹殑淇℃伅錛屽鏋滄湁蹇呰鐨勮瘽銆傜敱浜庝細(xì)璇濇槸鎸佷箙鎬х殑錛岃繘琛屼笉蹇呰鐨勫簭鍒楀寲浠ュ強(qiáng)鍐欏叆鏁版嵁鏄竴縐嶅緢濂緢鐨勫喅瀹氥€傜浉鍙嶅湴錛屽簲璇ヤ嬌鐢ㄥ唴瀛樹(shù)腑鐨勫搱甯岃〃鏉ョ紦瀛樻暟鎹紝騫朵笖鍦ㄤ細(xì)璇濅腑淇濆瓨?shù)竴涓姝ゆ暟鎹繘琛屽紩鐢ㄧ殑鍏抽敭瀛椼€傝繖鏍鳳紝濡傛灉涓嶈兘鎴愬姛鐧誨綍鍒板彟澶栫殑搴旂敤鏈嶅姟鍣ㄧ殑璇濓紝灝卞彲浠ラ噸鏂板垱寤烘暟鎹€?

褰撹皥鍙?qiáng)浼?xì)璇濇寔涔呮€ф椂錛屼笉瑕佸繕璁拌鍚敤榪欓」鍔熻兘銆傚鏋滄?zhèn)ㄦ病鏈夊惎鐢ㄤ細(xì)璇濇寔涔呮€э紝鎴栬€呮湇鍔″櫒鍥犱負(fù)鏌愮鍘熷洜鍋滄浜?jiǎn)锛堟湇鍔″櫒鏁呴殰鎴栨甯哥殑缁存姢锛?jí)錛屽垯鎵€鏈夋搴旂敤鏈嶅姟鐨勫綋鍓嶇敤鎴風(fēng)殑浼?xì)璇潪畣浼?xì)涓㈠け銆傝繖鏄歡浠や漢闈炲父涓嶉珮鍏寸殑浜嬫儏銆傜敤鎴蜂笉寰椾笉閲嶆柊鐧誨綍錛屽茍涓旈噸鏂板仛涓€浜涗粬浠浘緇忓凡緇忓仛榪囩殑浜嬫儏銆傜浉鍙嶅湴錛屽鏋滃惎鐢ㄤ簡(jiǎn)浼?xì)璇濇寔涔呮€э紝W(xué)ebSphere 浼?xì)鑷姩灏嗙敤鎴峰Q堜互鍙?qiáng)浠栦滑鐨勪細(xì)璇濆Q夌Щ鍒板彟澶栦竴涓簲鐢ㄦ湇鍔″櫒涓婂幓銆傜敤鎴風(fēng)敋鑷充笉鐭ラ亾浼?xì)鏈墭q欑浜嬫儏鐨勫彂鐢熴€傛垜浠浘緇忚鍒拌繃涓€浜涗駭鍝佺郴緇熷洜涓哄瓨鍦ㄤ簬鏈湴浠g爜涓護(hù)浜洪毦浠ュ繊鍙楃殑 bug錛堜笉鏄?IBM 鐨勪唬鐮侊紒錛夎€岀獊鐒跺穿婧冪殑鎯呭喌錛岃繖榪欑鎯呭喌涓嬶紝涓婅堪鍔熻兘浠嶇劧鍙互榪愯鑹ソ銆偮?br />
11. 鍦?WebSphere 涓紝浣跨敤鍔ㄦ€佺紦瀛橈紝騫朵嬌鐢?WebSphere servlet 緙撳瓨鏈哄埗銆?/strong>聽(tīng)

閫氳繃浣跨敤榪欎簺鍔熻兘錛岀郴緇熸€ц兘鍙互寰楀埌寰堝ぇ鐨勬彁楂橈紝鑰屽紑閿€鏄緢灝忕殑銆傚茍涓斾笉褰卞搷緙栫▼妯″瀷銆?

閫氳繃緙撳瓨鏉ユ彁楂樻€ц兘鐨勫ソ澶勬槸浼楁墍鍛ㄧ煡鐨勪簨鎯呫€傞仐鎲劇殑鏄紝褰撳墠鐨?J2EE 瑙勮寖娌℃湁鍖呮嫭涓€縐嶇敤浜?servlet/JSP 緙撳瓨鐨勬満鍒躲€傜劧鑰岋紝W(xué)ebSphere 鎻愪緵浜?jiǎn)瀵箼宓闈互鍙?qiáng)鐗囨柇緙撳瓨鐨勬敮鎸侊紝榪欑鏀寔鏄€氳繃鍏跺姩鎬佺紦瀛樺姛鑳芥潵瀹炵幇鐨勶紝騫朵笖涓嶉渶瑕佸搴旂敤紼嬪簭浣滃嚭浠諱綍鏀瑰彉銆傚叾緙撳瓨鐨勭瓥鐣ユ槸澹版槑鎬х殑錛岃€屼笖鍏墮厤緗槸閫氳繃 XML 閰嶇疆鎻忚堪絎︽潵瀹炵幇鐨勩€傚洜姝わ紝鎮(zhèn)ㄧ殑搴旂敤紼嬪簭涓嶄細(xì)鍙楀埌褰卞搷錛屽茍淇濇寔涓?J2EE 瑙勮寖鐨勫吋瀹規(guī)€у拰縐繪鎬э紝鍚屾椂榪樹(shù)粠 WebSphere 鐨?servlet 鍙?JSP 鐨勭紦瀛樻満鍒朵腑寰楀埌鎬ц兘鐨勪紭鍖栥€?

浠?servet 鍙?JSP 鐨勫姩鎬佺紦瀛樻満鍒跺緱鍒扮殑鎬ц兘鐨勬彁楂樻槸鏄捐€屾槗瑙佺殑錛岃繖鍙栧喅浜庡簲鐢ㄧ▼搴忕殑鐗規(guī)€с€侰ox 鍜?Martin [Cox] 鎸囧嚭瀵逛竴涓幇鏈夌殑 RDF錛堣祫婧愭弿榪版牸寮忥級(jí)绔欑偣鎽樿 (RSS)servlet錛屽綋浣跨敤鍔ㄦ€佺紦瀛樻椂錛屽叾鎬ц兘鍙互鎻愰珮 10%銆傝娉ㄦ剰榪欎釜瀹為獙鍙秹鍙?qiáng)鍒颁竴涓畝鍗曠殑 servlet錛岃繖涓€ц兘鐨勫闀塊噺鍙兘騫朵笉鑳藉弽鏄犱竴涓鏉傜殑搴旂敤紼嬪簭銆?

涓轟簡(jiǎn)鏇村鍦版彁楂樻€ц兘錛屽皢 WebSphere servlet/JSP 緇撴灉緙撳瓨?shù)?WebSphere 鎻掍歡 ESI Fragment 澶勭悊鍣ㄣ€両BM HTTP Server Fast Response Cache Accelerator (FRCA) 鍜?Edge Server 緙撳瓨鍔熻兘闆嗘垚鍦ㄤ竴璧楓€傚浜庣箒閲嶇殑鍩轟簬璇誨彇鐨勫伐浣滆礋鑽鳳紝閫氳繃浣跨敤榪欎簺鍔熻兘鍙互寰楀埌璁稿棰濆鐨勫ソ澶勩€?

12. 涓轟簡(jiǎn)鎻愰珮紼嬪簭鍛樼殑宸ヤ綔鏁堢巼錛屽皢 CMP 瀹炰綋 bean 浣滀負(fù) O/R 鏄犲皠鐨勯閫夎В鍐蟲(chóng)柟妗?

閫氳繃 WebSphere 妗嗘灦錛坮eadahead銆佺紦瀛樸€侀殧紱葷駭鍒瓑錛変紭鍖栨€ц兘銆傚鏋滃彲鑳斤紝鏈夐€夋嫨鐨勫簲鐢ㄤ竴浜涙ā寮忔潵杈懼埌鎻愰珮鎬ц兘鐨勭洰鐨勶紝渚嬪 Fast-Lane 闃呰鍣?[Marinescu]銆?

瀵硅薄/鍏崇郴錛圤/R錛夋槧灝勬槸浣跨敤 Java 鍒涘緩浼佷笟綰х殑搴旂敤紼嬪簭鐨勫熀紜€銆傚嚑涔庢瘡涓?J2EE 搴旂敤紼嬪簭閮介渶瑕佷竴浜涚被鍨嬬殑 O/R 鏄犲皠銆侸2EE 鍘傚晢鎻愪緵涓€縐?O/R 鏄犲皠鏈哄埗錛岃繖縐嶆満鍒跺湪涓嶅悓鐨勫巶鍟嗛棿鏄彲縐繪鐨勶紝楂樻晥鐨勶紝騫朵笖鑳藉琚竴浜涙爣鍑嗗強(qiáng)宸ュ叿寰堝ソ鍦版敮鎸併€傝繖灝辨槸 EJB 瑙勮寖涓殑 CMP錛堝鍣ㄧ鐞嗙殑鎸佷箙鎬э級(jí)閮ㄥ垎銆?

鏃╂湡鐨?CMP 瀹炵幇浠ヨ〃鐜頒笉浣?jīng)_強(qiáng)涓嶆敮鎸佽澶?SQL 緇撴瀯鑰岃憲縐般€傜劧鑰岋紝闅忕潃 EJB 2.0 鍙?2.1 瑙勮寖鐨勫嚭鐜幫紝浠ュ強(qiáng)琚竴浜涘巶鍟嗘墍閲囩撼錛屽茍涓旈殢鐫€鍍?IBM WebSphere Studio Application Developer 鐨勫嚭鐜幫紝榪欎簺闂宸茬粡涓嶅啀鏄棶棰樹(shù)簡(jiǎn)銆?

CMP EJB 緇勪歡鐜板湪宸茬粡琚箍娉涘湴搴旂敤浜庤澶氶珮鎬ц兘鐨勫簲鐢ㄧ▼搴忎腑銆俉ebSphere 鍖呮嫭涓€浜涗紭鍖栧姛鑳戒互鎻愰珮 EJB 緇勪歡鐨勬€ц兘錛屼紭鍖栧姛鑳藉寘鎷細(xì)瀵圭敓鍛藉懆鏈熺殑緙撳瓨鍜?read-ahead 鑳藉姏銆傝繖涓よ€呬紭鍖栧姛鑳介兘鏄厤緗椂鐨勯€夐」錛屽茍涓斾笉闇€瑕佸搴旂敤紼嬪簭榪涜淇敼鎴栬€呭獎(jiǎng)鍝嶅彲縐繪鎬с€?

澶勪簬緙撳瓨鐘舵€佺殑鐢熷懡鍛ㄦ湡緙撳瓨 CMP 鐘舵€佹暟鎹茍鎻愪緵鍩轟簬鏃墮棿鐨勬棤鏁堟€с€備粠澶勪簬緙撳瓨鐘舵€佺殑鐢熷懡鍛ㄦ湡寰楀埌鐨勬€ц兘鎻愰珮鍙互杈懼埌閫夐」 A 鐨勭紦瀛樻€ц兘錛屽茍涓斾粛鐒跺彲浠ヤ負(fù)鎮(zhèn)ㄧ殑搴旂敤紼嬪簭鎻愪緵鍙幾灞曟€с€俁ead-ahead 鑳藉姏鍜屽鍣ㄧ鐞嗙殑鍏崇郴緇撳悎浣跨敤銆傝繖涓壒鎬ч€氳繃鍦ㄧ浉鍚岀殑鏌ヨ涓殢鎰忓湴媯€(gè)绱㈢浉鍏崇殑鏁版嵁浣滀負(fù)鐖舵暟鎹€屽噺灝戜笌鏁版嵁搴撶殑浜や簰銆傚鏋滅浉鍏崇殑鏁版嵁瑕侀€氳繃浣跨敤騫跺彂鐨勬煡璇㈡潵璁塊棶鐨勮瘽錛岃繖縐嶆柟娉曞彲浠ュ緱鍒版€ц兘鐨勬敼榪涖€俒Gunther]鎻愪緵浜?jiǎn)璇l嗙殑鎻忚堪浠ュ強(qiáng)閫氳繃榪欎簺鐗規(guī)€у緱鍒扮殑鎬ц兘鎻愰珮鐨勭粏鑺傘€?

姝ゅ錛屼負(fù)浜?jiǎn)瀹屽叏浼樺寲鎮(zhèn)ㄧ?EJB 緇勪歡錛屽綋鎸囧畾闅旂綰у埆鏃惰鐗瑰埆娉ㄦ剰銆傚敖鍙兘浣跨敤鏈€浣庣殑闅旂綰у埆錛屽茍涓斾粛鐒朵繚鎸佹?zhèn)ㄧ殑鏁版嵁鐨勫畬鏁存€с€傝緝浣庣殑闅旂綰у埆鍙互鎻愪緵鏈€浣崇殑鎬ц兘錛屽茍涓斿彲浠ラ檷浣庡嚭鐜版暟鎹簱姝婚攣鐨勫嵄闄┿€?

榪欐槸鐩墠鏈€鏈変簤璁殑鏈€浣?jīng)_疄璺點(diǎn)€傚凡緇忔湁澶ч噺鐨勬枃绔犺禐鎵?CMP EJB錛屽悓鏍風(fēng)殑璐枼澹頒篃涓嶇粷浜庤€熾€傜劧鑰岋紝榪欓噷鏈€鍩烘湰鐨勯棶棰樻槸鏁版嵁搴撳紑鍙戞槸鍥伴毦鐨勩€傚綋鎮(zhèn)ㄥ紑濮嬩嬌鐢ㄤ換浣曟寔涔呮€цВ鍐蟲(chóng)柟妗堜箣鍓嶏紝鎮(zhèn)ㄩ渶瑕佹帉鎻℃煡璇互鍙?qiáng)鏁版嵁搴撻攣瀹氬浣曞伐浣湗q欎簺鍩虹鐭ヨ瘑銆傚鏋滄?zhèn)ㄩ€夋嫨浣跨敤 CMP EJB錛屾?zhèn)ㄨ纭繚鎮(zhèn)ㄥ凡缁忛€氳繃涓€浜涗功綾嶏紙渚嬪 [Brown] 鍜?[Barcia]錛夌煡閬撳浣曚嬌鐢ㄥ畠浠€傚湪閿佸畾鍙?qiáng)浜夌敤鏂归潰鏈変竴浜涘井濡欑殑浜や簰闅句互鐞嗚В錛屼絾鏄紝鍦ㄦ?zhèn)ㄨ€楄垂涓€瀹氱殑鏃墮棿鍙?qiáng)鍔姏鍚庝細(xì)灏嗗叾鎺屾彙鐨勩€?/p>

緋婃秱 2006-04-20 09:08 鍙戣〃璇勮
]]>
闇€瑕佺炕鐨勪功http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/10/40251.html緋婃秱緋婃秱Mon, 10 Apr 2006 08:11:00 GMThttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/10/40251.htmlhttp://www.aygfsteel.com/Kaixinhutu/comments/40251.htmlhttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/10/40251.html#Feedback0http://www.aygfsteel.com/Kaixinhutu/comments/commentRss/40251.htmlhttp://www.aygfsteel.com/Kaixinhutu/services/trackbacks/40251.html 搴忓彿 涔﹀悕 澶囨敞 1 JAVA鏁版嵁緇撴瀯 娓呭崕澶у鍑虹増紺?/td>

緋婃秱 2006-04-10 16:11 鍙戣〃璇勮
]]>
Java Socket緗戠粶緙栫▼鍒濈駭鍏ラ棬 http://www.aygfsteel.com/Kaixinhutu/archive/2006/04/04/39155.html緋婃秱緋婃秱Tue, 04 Apr 2006 06:04:00 GMThttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/04/39155.htmlhttp://www.aygfsteel.com/Kaixinhutu/comments/39155.htmlhttp://www.aygfsteel.com/Kaixinhutu/archive/2006/04/04/39155.html#Feedback0http://www.aygfsteel.com/Kaixinhutu/comments/commentRss/39155.htmlhttp://www.aygfsteel.com/Kaixinhutu/services/trackbacks/39155.html闃呰鍏ㄦ枃

緋婃秱 2006-04-04 14:04 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 永靖县| 壤塘县| 沿河| 张家川| 苍南县| 油尖旺区| 隆林| 奈曼旗| 平舆县| 通海县| 玛多县| 洛南县| 康定县| 德州市| 绥中县| 黑龙江省| 辽阳县| 大城县| 汤阴县| 四子王旗| 红桥区| 南和县| 河西区| 麻阳| 南安市| 台中市| 长丰县| 隆昌县| 昌江| 黎川县| 炉霍县| 玛曲县| 林州市| 公安县| 万山特区| 客服| 大城县| 肥乡县| 藁城市| 绿春县| 株洲县|