锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Spring鐨勯粯璁や簨鍔¢殧紱葷駭鍒?span style="line-height: 18px; font-family: Tahoma">ISOLATION_DEFAULT 鏄?strong>ISOLATION_READ_COMMITTED 鎻愪氦璇伙紱榛樿浜嬪姟浼犳挱琛屼負(fù)鏄?span style="line-height: normal; font-family: Verdana">PROPAGATION_REQUIRED錛?span style="font-weight: normal">濡傛灉瀛樺湪涓涓簨鍔★紝鍒欐敮鎸佸綋鍓嶄簨鍔°傚鏋滄病鏈変簨鍔″垯寮鍚竴涓柊鐨勪簨鍔°?/font>
榪欓噷鏈変釜寰堟湁鎰忔濈殑浜嬫儏錛屾兂鍜屽ぇ瀹朵竴璧峰垎浜竴涓嬨?/span>
Class Sample{
private int id;
private String name;
//setters and getters
}
Class A {
public void functionA(Sample sample){
//浜嬪姟澶勭悊錛屾洿鏂皊ample
}
}
class B {
public void functionB(List samples){
//浜嬪姟澶勭悊錛岄亶鍘唖amples錛岃皟鐢ˋ鐨刦unctionA鏂規(guī)硶
}
}
浠g爜鎴戝氨涓嶈緇嗙殑鍐欏嚭鏉ヤ簡(jiǎn)錛屽ぇ鑷寸殑鎰忔濆ぇ瀹朵篃搴旇鑳界湅鏄庣櫧錛屼簨鍔$殑闅旂綰у埆鍜屼紶鎾涓洪兘鏄粯璁ょ殑銆傝皟鐢˙鐨刦unctionB鏂規(guī)硶錛屽ぇ瀹惰寰椾細(xì)鍑虹幇浠涔堥棶棰橈紵
--EOF--
Spring in action 絎簩鐗?br />
杞嚜鎴戠殑javaeye錛?font face="Verdana">http://littlez.javaeye.com/admin/blogs/254980
]]>
<div id="show" style="overflow:hidden;height:210px;">
2</div>
3<script>
4function startmarquee(lh,speed,delay){
5 var t;
6 var oHeight = 210; /** div鐨勯珮搴?nbsp;**/
7 var p=false;
8 var o=document.getElementById("show");
9 var preTop = 0;
10 o.scrollTop = 0;
11 function start(){
12 t=setInterval(scrolling,speed);
13 o.scrollTop += 1;
14 }
15 function scrolling(){
16 if(o.scrollTop%lh!=0 && o.scrollTop%(o.scrollHeight-oHeight-1)!=0){
17 preTop = o.scrollTop;
18 o.scrollTop+=1;
19 if(preTop >= o.scrollHeight || preTop==o.scrollTop){
20 o.scrollTop = 0;
21 }
22 }else{
23 clearInterval(t);
24 setTimeout(start,delay);
25 }
26 }
27 setTimeout(start,delay);
28}
29startmarquee(20,20,1500);
30/**startmarquee(涓嬈℃粴鍔ㄩ珮搴?閫熷害,鍋滅暀鏃墮棿);**/
31</script>
32
鎺ㄨ崘涓鏈涔?fàn)javascript鐨勭粡鍏稿ソ涔︼細(xì)娣卞叆嫻呭嚭JavaScript(鍥劇伒璁$畻鏈虹瀛︿笡涔?
]]>
涓嶇鏄冪爺榪樻槸鎵懼伐浣滐紝閮借鍋氬ソ鍏呰凍鐨勫噯澶囷紝涓轟簡(jiǎn)榪欎簺鍘葷湅寰堝涔︺傝冪爺鎴戝氨涓嶅璇翠簡(jiǎn)錛屽洜涓哄湪涓よ呬箣闂存垜鏈鍚庤繕鏄夋嫨浜?jiǎn)宸ヤ綔銆?/span>
<<紼嬪簭鍛橀潰璇曞疂鍏?/span>>>鍜?span style="color: #333399">銆?/span>java紼嬪簭鍛橀潰璇曞疂鍏?/span>銆?/span>錛?span lang="zh-CN">鍓嶉潰榪欐湰涓昏鏀跺綍鐨勬槸C鍜?/span>c++鐨勯鐩?/span>浠旂粏鐪?span lang="zh-CN">瀹岃繖涓ゆ湰錛?/span>鍩烘湰鑳藉簲浠樺ぇ閮ㄥ垎C 錛?/span>C++鍜?/span>Java鐨?/span>絎旇瘯棰樸?/span>
<<娣卞叆鐞嗚В璁$畻鏈虹郴緇?/span>>>錛?span lang="zh-CN">浠庣▼搴忓憳鐨勮搴︾湅璁$畻鏈虹郴緇燂紝姹傝亴蹇呭錛岃冪爺涔熷繀澶?/span>銆?/span>
鐪嬪畬浠ヤ笂涓夋湰錛?/span>涓鑸殑IT鍏徃鍩烘湰閮借兘鎼炲畾浜?jiǎn)銆?/span>
<<C璇█紼嬪簭璁捐>>錛?/span>钖勫綊钖勶紝鍙槸浜哄鏄涔?/span>C璇█鐨勫湥緇忥紝浣犱篃娌″姙娉曘傚悓鏍峰緢钖勫緢緇忓吀鐨勪功榪樻湁<<effective C++>>錛?/span><<緙栫▼鐝犵帒>>錛?/span><<effective java>>銆?/span>
<<UNIX鐜楂樼駭緙栫▼>>錛?/span>linux緋葷粺紼嬪簭璁捐鐨勬潃鎵嬨?/span>
<<綆楁硶瀵艱>>錛?/span>榪欎箞闂誨悕鐨勪功錛岃繕鐢ㄤ粙緇嶄箞錛?/span>榪欐湰涔︿綘涔頒竴鏈惂錛屼笉涔板涓嶈搗浣犲浜?jiǎn)澶汄q磋綆楁満銆?span lang="zh-CN">鎯沖幓濂界殑鍏徃錛岀畻娉曚竴瀹氫笉鑳借惤涓嬶紝絎旇瘯灝變笓鑰冧綘綆楁硶錛屼笉浼?xì)鐨勮瘽鎶撶媯涔熸病鐢ㄣ?/span>
闄や簡(jiǎn)涓ゆ湰闈㈣瘯瀹濆吀澶栵紝鍏朵粬鐨勪功閮芥槸鎵懼畬宸ヤ綔鍚庯紝閮借兘緇х畫鐣欏湪浣犱功鏋朵笂鐨勪功錛屽綋鏋曞ご錛屽綋鐮栧ご錛屽灚絎旇鏈紝閮藉簲璇ョ暀鐫銆?/span>
榪囦簡(jiǎn)絎旇瘯鍏籌紝榪樻湁闈㈣瘯鍏熾傝繖騫村ご錛岄潰璇曞彲鏄繃N鍏籌紝鏂?/span>N灝嗙殑銆備竴瀹氳鑷俊錛屾病鑷俊灝卞凡緇忔瓏鑿滀竴鍗婁簡(jiǎn)銆備笉瑕佸皬鐪嬮偅浜涢潰璇曞畼錛屼粬浠潰浜?jiǎn)閭d箞澶氫汉锛岃亰鍑犲彞灏卞熀鏈兘鎽告竻浣犵殑搴曘傚崈涓囪鑷俊錛屽敩浣忛偅浜涢潰璇曞畼銆傛垜榪涘叕鍙稿悗錛屽綋鏃墮潰鎴戠殑涓葷瀵規(guī)垜璇達(dá)紝鎴戝綋鏃舵嫑浣犲氨嬈h祻浣犵殑鑷俊銆?/span>
鎶婇潰璇曞綋鑱婂ぉ錛屽績(jī)鎬佽濂姐備笉瑕佹垜錛屽ぇ涓嶄簡(jiǎn)鎴戠戶緇洖鍘昏冪爺鍛楋紒鎴戝綋鏃跺氨榪欎箞鎯崇殑銆傛病浜?jiǎn)鍘嬪姏锛岃嚜鐒稙鏀惧紑浜?jiǎn)銆?/span>
姹傝亴鐨勯亾璺篃璁稿緢婕暱錛屼篃璁鎬篃鍜屾垜涓鏍風(fēng)嫍灞庤繍濂斤紝鍙潰浜?jiǎn)涓瀹跺氨鑳芥嬁鍒板績(jī)浠殑offer銆傚彧鏄紝鍦ㄨ繖涓繃紼嬩腑錛屾垜浠繀欏諱繚鎸佽壇濂界殑蹇?jī)鎬侊紝鎬諱細(xì)鏈変竴瀹跺ソ鍏徃錛岀粰鎴戜滑濂?/span>offer銆傚井絎戯紝鎬繪槸鏇村鏄撹闈㈣瘯瀹樿浣忎綘鐨勫悕瀛椼?/span>
鍦╲elocity欏甸潰閲岋紝榪涜涓涓瘮杈冿細(xì)
欏甸潰鑲畾浼?xì)鎵撳嵃鍑?姣旇緝澶辮觸".鍥犱負(fù)鍦╲elocity涓幏鍙栫殑鍙橀噺aLong鏄痩ong綾誨瀷錛岃屾暟瀛?234鏄粯璁や負(fù)int綾誨瀷鐨勩傝櫧鐒跺肩浉絳夛紝鍙槸綾誨瀷涓嶅悓銆?br />
鍦╲elocity閲岋紝濂藉儚娌℃湁鏂規(guī)硶榪涜鍩虹綾誨瀷涔嬮棿鐨勫己鍒惰漿鎹紝濡傛灉浣犵煡閬撶殑璇濓紝璇峰洖甯栧憡璇夋垜浠?br />
閭g幇鍦ㄩ棶棰樻憜鍦ㄨ繖閲岋紝鎴戜滑鎯崇湅鍒?綾誨瀷姣旇緝鎴愬姛"錛屽簲璇ユ庝箞鍋氬憿錛?br />
淇敼java浠g爜錛屾妸鍙橀噺aLong寮哄埗杞崲鎴恑nt綾誨瀷:
涓嶈繃鎴戜笉鏄緢璧炴垚榪欑鍋氭硶錛屼粠long寮哄埗杞崲鎴恑nt綾誨瀷錛屽緢瀹規(guī)槗閫犳垚綺懼害涓㈠け銆?br />
榪樻湁涓縐嶆瘮杈冪洿鎺ョ殑鏂規(guī)硶錛屼笉淇敼java浠g爜錛岀洿鎺ヤ慨鏀箆m鏂囦歡錛?/span>
鎶婁袱杈歸兘鍙樻垚浜?jiǎn)String綾誨瀷錛屽氨涓嶄細(xì)鍑虹幇綾誨瀷姣旇緝澶辮觸鐨勬儏鍐典簡(jiǎn)銆?br />
璁よ瘑姣旇緝鑲ゆ祬琛ㄩ潰錛岃繕甯屾湜澶у澶氭寚鐐逛竴涓嬨?/span>
濡傛灉鐩存帴浣跨敤 == 鏉ュ垽鏂袱鑰呮槸鍚︾浉鍚岋細(xì)
緇撴灉浼?xì)鏄Q歯ot equals
鑰屼嬌鐢╡quals錛?/span>
緇撴灉涔熸槸錛歯ot equals
鏁扮粍鐨勬瘮杈冿紝搴旇鏄嬌鐢╦ava.util.Arrays
緇撴灉涓猴細(xì)equals
Arrays.equals鐨勫弬鏁板彲浠ユ槸浠繪剰綾誨瀷鐨勬暟緇勩傚叿浣撹錛?/span>http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html
dwr鍙互璁╂垜浠湪嫻忚鍣ㄤ腑浣跨敤javascript璋冪敤鏈嶅姟鍣ㄧ鐨刯ava浠g爜銆?br />
dwr涓昏鍖呮嫭涓ら儴鍒嗭細(xì)
榪愯鍦ㄥ鎴風(fēng)鐨刯s浠g爜鍙戦佽姹傚埌鏈嶅姟鍣ㄧ錛?br />
鏈嶅姟鍣ㄧ鐨刣wr servlet澶勭悊璇鋒眰錛屽茍灝嗙粨鏋滃拰鏁版嵁榪斿洖鍒板鎴風(fēng)銆?br />
鏈変竴寮犲叧浜巇wr寰堢簿紜殑鍥撅細(xì)
DWR綆鍗曢厤緗細(xì)
1.棣栧厛dwr.jar鏄繀欏葷殑銆備笅杞藉悗鏀懼湪/WEB-INF/lib鐩綍涓嬨?br />
2.鍦?WEB-INF/鐩綍涓嬶紝澧炲姞涓涓猟wr.xml鏂囦歡銆傛牸寮忓涓嬶細(xì)
鏍硅妭鐐規(guī)槸dwr錛屾垜鍦ㄧ涓嬈¢厤緗繖涓猟wr.xml鐨勬椂鍊欙紝蹇界暐鎺変簡(jiǎn)錛屾牴緇撶偣鐩存帴灝辨槸allow錛岀劧鍚庡氨涓鐩存姤閿欙紝寰堣剳孌嬬殑閿欒銆傛墍浠ュ湪榪欓噷涔熺◢寰彁閱掍竴涓嬨?br />
create鐨刢reator灞炴у父鐢ㄧ殑涓簄ew鍜宻pring銆俷ew灝辨槸姣忔璋冪敤鐨勬椂鍊欙紝閮戒細(xì)瀹炰緥鍖栦竴涓柊鐨勫璞℃潵澶勭悊璇鋒眰錛泂pring灝辨槸浠嶴pring鐨勯厤緗枃浠朵腑鍙栧緱bean銆?br />
浠Date涓轟緥錛宩avascript灞炴ф槸DWR鍔ㄦ佷負(fù)鏈嶅姟鍣ㄧ鐨凞ate綾?java)鐢熸垚涓涓浉搴旂殑瀹㈡埛绔疛Date綾?Javascript)銆侸Date鍙互浣跨敤Date鐨勬墍鏈塸ublic鏂規(guī)硶銆?br />
3. 閰嶅ソ浜?jiǎn)dwr.xml錛屾帴涓嬫潵閰嶇疆/WEB-INF/web.xml銆傛垜浠渶瑕佸湪web.xml涓鍔犲涓?lt;servlet>鍜?lt;servlet-mapping>:
榪欎釜servlet灝辨槸鐢ㄦ潵澶勭悊dwr鍙戦佺殑璇鋒眰銆?/p>
4. dwr璁塊棶
榪欐椂鍊欙紝濡傛灉浣犲凡緇忓湪鏈湴鍚姩浜?jiǎn)浣犵殑搴旂?鍋囪鏄湪tomcat涓?錛屽彲浠ヨ闂涓婾RL錛?/p>
http://localhost:8080/[YOUR-APP-NAME]/dwr
浣犱細(xì)鐪嬪埌鍦╠wr.xml閰嶇疆鐨勪袱涓被.鐐瑰嚮JDate,鍙互鐪嬪埌鎵鏈夊彲浠ヨ皟鐢ㄧ殑鏂規(guī)硶,騫朵笖鍙互鐐瑰嚮,鍦ㄦ寜閽殑鍙寵竟鐪嬪埌鐐瑰嚮鐨勫弽棣?
鍦ㄨ繖涓〉闈㈢殑涓婃柟,浣犺繕浼?xì)鐪嬪埌濡備笅浠g?
褰撲綘鐨勯〉闈㈤渶瑕佷嬌鐢↗Date鏃訛紝灝卞繀欏繪妸涓婇潰鐨剆cript浠g爜鐗囨鏀懼埌浣犵殑欏甸潰涓?br />
鎴戜滑灝卞彲浠ヤ嬌鐢↗Date浜?
榪欓噷涓昏鏄負(fù)浜?jiǎn)浠嬀l嶄竴涓媎wr鏈鍩烘湰鐨勪嬌鐢?閭d箞dwr鐨勪竴浜涘叾浠栬兘鍔?姣斿瓚呮椂澶勭悊鍜岄敊璇鐞?灝變笉鍦ㄨ繖閲岃浜?
嬈㈣繋浣跨敤Induction錛両nduction鏄嬌鐢╦ava緙栫▼璇█榪涜web搴旂敤寮鍙戠殑鍋ュ.楂樻ц兘鐨勬鏋躲侷nduction灞炰簬鍩轟簬璇鋒眰鐨剋eb妗嗘灦錛屼綔涓轟竴涓猻ervlet閮ㄧ講鍦╯ervlet瀹瑰櫒涓侷nduction瀹f壃MVC鐨勬柟娉曡繘琛寃eb搴旂敤寮鍙戙侷nduction鐨勫嚑涓叧閿璁$洰鏍囨槸錛? 鍘熸枃鍦板潃錛?a >http://www.inductionframework.org/getting-started-tutorial.html 鍏堢炕璇戜竴閮ㄥ垎鏀句笂鏉ワ紝鍚庨潰鐨勪細(xì)灝藉揩璐村嚭銆?/p>
緲昏瘧鐨勪笉閫氱晠鐨勫湴鏂癸紝璇瘋璋厏
1.褰搈odles錛寁iews鍜宑ontrollers鍙戠敓鍙樺寲鏃訛紝娑堥櫎瀵箇eb搴旂敤紼嬪簭蹇呴』閲嶈澆鐨勯渶姹傦紙鎴戜滑鐩鎬俊涓嬈$畝鍗曠殑欏甸潰鍒鋒柊灝辮凍澶熶簡(jiǎn)錛?
2.modles錛寁iews錛宑ontrollers涔嬮棿鐨勭粦瀹氭槸澹版槑寮忕殑錛岃繖縐嶆柟寮忓彲浠ュ湪浠諱綍IDE涓兘鑳借瑙f瀽
3.浣垮緱鏁版嵁璺熻釜鍦ㄧ敤鎴風(fēng)晫闈㈡ā鏉夸腑鍙敤錛堝挨鍏舵槸HTML妯℃澘錛?
4.鏂囦歡涓婁紶澶勭悊搴旇綆鍗曞埌寰堝鉤鍑$殑鍦版
5.鍦℉TML琛ㄦ牸涓紝鏁扮粍錛坅rrays錛夊拰瀛楀吀綾誨瀷錛坉ictionary types 錛夌殑浣跨敤搴旇灝藉彲鑳界畝鍗?
6.鏄庢櫤鐨勪嬌鐢╔ML錛堝湪姣忎釜搴旂敤紼嬪簭涓紝Induction鍙渶瑕佷竴涓猉ML鏂囦歡錛?
7.鏄竴縐嶈兘澶熼傚簲澶氱pattern搴旂敤鐨勫彲鎵╁厖鐨勬灦鏋?
8.楂樻ц兘
9.浠嶫DK1.4鍒?.6閮藉吋瀹癸紙鍖呮嫭1.4鍜?.6錛?
About this tutorial
榪欎喚鎸囧崡鐨勭洰鐨勬槸璁╀綘鏇村揩鐨勪嬌鐢↖nduction銆侷nduction闇瑕佷竴涓猻ervlet瀹瑰櫒銆傚湪榪欎喚鎸囧崡涓紝鎴戜滑浣跨敤Apache鐨凾omcat錛屼笉榪囦綘鍙互閫夋嫨浣跨敤浠諱綍鏈嶄粠鏍囧噯鐨剆ervlet瀹瑰櫒銆?
Installing
鎴戜滑鍋囪浣犲凡緇忓湪c:/dev/Tomcat6瀹夎浜?jiǎn)Tomcat6銆侷nduction鏈韓涓嶉渶瑕佷換浣曠殑瀹夎姝ラ錛屽畠鐨刯ar鍖呭彲浠ュ緢瀹規(guī)槗鍦板紩鍏ュ埌浣犵殑web搴旂敤紼嬪簭涓?
Writing our first application - hello world
鍦ㄨ繖浠芥寚鍗椾腑錛屾垜浠細(xì)鍐欎竴涓畝鍗曠殑"hello world"搴旂敤錛屽湪榪欎釜搴旂敤閲屾垜浠細(xì)鍒椾婦鍑篒nduction鐨勮澶氶噸瑕佹蹇點(diǎn)?
Writing a controller
棣栧厛鎴戜滑鍐欎竴涓猚ontroller浣滀負(fù)鎴戜滑鎸囧崡鐨勫紑濮嬶紝鍥犱負(fù)controllers鏄痺eb搴旂敤紼嬪簭涓竴涓吀鍨嬬殑entry銆傚ソ錛岀幇鍦ㄨ鎴戜滑寮濮嬪啓涓涓猚ontroller錛岃瀹冨湪嫻忚鍣ㄤ腑鎵撳嵃涓涓插瓧絎︺?/p>
package demoapp.helloworld1_app;
import com.acciente.induction.controller.Controller;
import com.acciente.induction.controller.Response;
import java.io.IOException;
/**
* A very simple controller that does the customary "Hello World"
*/
public class HelloWorldController implements Controller
{
public void handler( Response oReponse ) throws IOException
{
oReponse.setContentType( "text/plain" );
oReponse.out().println( "Hello World, using a simple println()" );
}
}
鍦ㄦ垜浠繍琛岃繖涓猚ontroller涔嬪墠錛屽厛浠旂粏鐨勭湅涓涓嬨傞鍏堟垜浠敞鎰忓埌HelloWorldController綾誨疄鐜頒簡(jiǎn)Induction鐨凜ontroller錛孋ontroller鎺ュ彛鍙槸涓涓畝鍗曠殑鏍囪鎺ュ彛錛屾病鏈夊畾涔変換浣曟柟娉曠粰瀹冪殑瀹炵幇綾匯傚綋Induction鎺ユ敹鍒頒竴涓猺equest璇鋒眰鍚庯紝嬋媧諱竴涓狢ontroller瀹炵幇錛屾瘮濡侶elloWorldController綾伙紝Induction棣栧厛鏍稿疄榪欎釜綾繪槸鍚︽槸瀹炵幇Controller鎺ュ彛銆傚洜姝ょ洰鍓岰ontroller鎺ュ彛鐨勫瓨鍦ㄧ殑鍞竴鐞嗙敱鏄畨鍏紙涓昏鑰冭檻鍒癈ontroller鎺ュ彛鐨勫彲閰嶇疆鎬э級(jí)銆傚洜涓篊ontroller鍙槸涓涓爣璁版ф帴鍙o紝鎵浠andler鏂規(guī)硶騫朵笉鏄帴鍙e畾涔夌殑銆?
鎺ヤ笅鏉ワ紝鎴戜滑鍙互鐪嬪埌handler鏂規(guī)硶鏈変竴涓猂esponse鍙傛暟錛孯esponse綾繪槸緇ф壙javax.servlet.http.HttpServletResponse鎺ュ彛錛屽茍綆鍗曠殑瀵箂ervlet瀹瑰櫒鐨剅esponse瀵硅薄榪涜浜?jiǎn)灏佽銆侷nduction閫氳繃娉ㄥ叆鐨勬柟寮忥紝灝嗗弬鏁癛esponse鍊間紶緇檋andler鏂規(guī)硶銆備竴浜涜兘澶熶綔涓篽andler鍙傛暟鐨勫鹼紝涔熸槸閫氳繃鑷姩娉ㄥ叆鐨勬柟寮忥紝鍙瀹冧滑鏄伒寰互涓嬬被鍨嬶細(xì)
Type
Description
Request
facade to the servlet request, extends javax.servlet.http.HttpServletRequest
Response
facade to the servlet response, extends javax.servlet.http.HttpServletResponse
Form
provides access to the HTML form (if any) submitted with this request
ControllerResolver.Resolution
provides access to the controller resolution object (very useful for writing generic parameterized controllers)
model_class_name
instance of a user provided model class, the instance is managed to conform to a user specified lifecycle
涓婇潰鐨勭被鍚嶆槸涓嶅畬鏁寸殑錛孯equest, Response鍜孎orm綾葷殑鏇村淇℃伅錛屽湪package com.acciente.induction.controller涓煡鐪嬨?