锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 榪欐牱鎴戜滑灝辯煡閬撲簡錛屽疄闄呬笂Demo.java綾葷殑sayHello鏂規硶宸茬粡琚В閲婂埌Demo.js涓簡錛屽彧涓嶈繃鍚庨潰鐨勮皟鐢ㄨ繕涓嶆槸寰堟竻妤氳屽凡銆?br />
緇х畫錛?br />
public String sayHello(String name) { 鑷蟲錛宒wr鐨勬牳蹇冨師鐞嗭紝鍩烘湰娓呮櫚
1錛屽湪index.html閲岄潰鎴戜滑宓屽叆
<script type='text/javascript' src='../dwr/engine.js'> </script>
<script type='text/javascript' src='../dwr/util.js'> </script>
<script type='text/javascript' src='../dwr/interface/Demo.js'> </script>
鍓嶉潰涓や釜閮芥槸DWR緋葷粺榛樿闇瑕佸姞杞界殑錛孌emo.js鏄疍emo.java鎵瀵瑰簲鐨勩傛寜鐞嗚錛屽彧瑕佸湪web.xml鍜宒wr.xml閰嶇疆濂斤紝閭d箞鎴戜滑灝卞彲浠ュ湪瀹㈡埛绔搷浣淒emo.js錛岀被浼間簬鎿嶄綔鏈嶅姟鍣ㄧ鐨凞emo.js銆?br />
HTML source:
<p>
Name:
<input type="text" id="demoName"/>
<input value="Send" type="button" onclick="update()"/>
<br/>
Reply: <span id="demoReply"></span>
</p>
Javascript source:
function update() {
var name = dwr.util.getValue("demoName");
Demo.sayHello(name, function(data) {
dwr.util.setValue("demoReply", data);
});
}
Java source:
package org.getahead.dwrdemo.simpletext;
public class Demo {
public String sayHello(String name) {
return "Hello, " + name;
}
}
dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="Demo">
<param name="class" value="org.getahead.dwrdemo.simpletext.Demo"/>
</create>
</allow>
</dwr>
鍦ㄦ祻瑙堝櫒絎竴嬈″姞杞芥湰欏甸潰鏃訛紝嫻忚鍣ㄧ涓姝ュ彂鐜?lt;script type='text/javascript' src='../dwr/engine.js'> </script>錛屾牴鎹畐eb.xml鍏充簬dwr鐨勯厤緗紝緋葷粺浼氭縺鍙慡ervlet鐨凱OST鏂規硶,鍚戝鎴風杈撳嚭engine.js鏂囦歡嫻侊紝榪欎釜鏂囦歡浣犲彲浠ュ湪IE鐨勭紦瀛橀噷闈㈠彂鐜?褰撶劧,紼嬪簭浼氬湪鏈鍚庤緭鍑轟竴鍒繪瘮杈冨鎴風鏄惁宸茬粡瀛樺湪璇ユ枃浠訛紝濡傛灉瑕佽緭鍑虹殑鏂囦歡嫻佸ぇ灝忓拰鍜岃鏂囦歡澶у皬涓鑷達紝灝變笉杈撳嚭浜嗭紝鍚屾牱util.js銆丏emo.js涔熸槸榪欎箞杈撳嚭鐨勩傞偅涔堢湅鐪婦emo.js鏂囦歡閲岄潰鐨勫唴瀹瑰涓嬶細
if (typeof this['Person'] != 'function') {
function Person() {
this.address = null;
this.phoneNumber = null;
this.name = null;
this.id = 0;
this.salary = 0;
}
}
// Provide a default path to dwr.engine
if (typeof this['dwr'] == 'undefined') this.dwr = {};
if (typeof dwr['engine'] == 'undefined') dwr.engine = {};
if (typeof this['Demo'] == 'undefined') this.Demo = {};
Demo._path = '/dwr/dwr';
Demo.sayHello = function(p0, callback) {
return dwr.engine._execute(Demo._path, 'Demo', 'sayHello', p0, callback);
};
Demo.getInclude = function(callback) {
return dwr.engine._execute(Demo._path, 'Demo', 'getInclude', callback);
};
return "Hello, " + name;
}
緲昏瘧鎴?br />
Demo._path = '/dwr/dwr';
Demo.sayHello = function(p0, callback) {
return dwr.engine._execute(Demo._path, 'Demo', 'sayHello', p0, callback);
};
鍦ㄨ皟鐢╡ngine.execute()鏂規硶鏃訛紝鏈緇堥噰鐢ㄦ棤鍒鋒柊璁塊棶鏈嶅姟鍣ㄦ妧鏈?br />
閲囩敤璇ユ妧鏈殑鍏抽敭闂鏄袱涓弬鏁幫紝涓涓槸url錛屽線浠涔堝湴鏂瑰彂閫侊紱涓涓槸doc錛屽彂閫佷粈涔堝唴瀹?br />
閫氳繃璺熻釜engine.js鎴戜滑鐭ラ亾
url=/dwr/dwr/call/plaincall/Demo.sayHello.dwr
鍙戦佸唴瀹瑰涓嬶細
callCount=1
windowName=DWR-442B435
899
c0-scriptName=Demo
c0-methodName=sayHello
c0-id=0
c0-param0=string:Joe
batchId=1
page=/dwr/simpletext/index.html
httpSessionId=
scriptSessionId=1CC3A
.0A3
瀹為檯涓妘rl=/dwr/dwr/call/plaincall/Demo.sayHello.dwr錛岃漿鍚戠殑鏄疍wrServlet錛孌wrServlet瀹為檯涓婅幏鍙栦簡涓ら儴鍒嗕俊鎭紝涓閮ㄥ垎鏄痷rl錛屾牴鎹繖涓兘澶熻В鏋愬埌鎴戜滑鐨勭洰鏍噅ava綾匯佹柟娉曪紝鍙﹀涓閮ㄥ垎鏄彂閫佷俊鎭寘錛屽疄闄呬笂榪欏氨鏄疭ayHello鎵闇瑕佺殑鍙傛暟杈撳叆淇℃伅錛屾渶鍚庯紝榪斿洖鏁版嵁錛岃繖浜涙暟鎹牸寮忛氳繃response榪斿洖錛屽湪engine.js涓搴斾簬return batch.reply;閫氳繃瑙f瀽榪斿洖瀵硅薄錛岄噰鐢╦avascirpt灝嗘暟鎹姩鎬佸埛鏂板埌欏甸潰銆?/p>
]]>
User: 浣犵殑娉ㄥ唽鐢ㄦ埛鍚嶇О
Password: 浣犵殑娉ㄥ唽鐢ㄦ埛瀵嗙爜
Host: cvs.dev.java.net
Repository path: /cvs
Use default port
鎵撳紑cvs鍚庯紝浣犱細鍙戠幇濂藉濂藉寮婧愬伐紼嬶紝鎵懼埌DWR宸ョ▼,鐩墠DWR鐗堟湰鏄?.0錛宑heck out錛屽湪鎶婅繍琛岀幆澧冮厤澶囧ソ錛屾垜鐢ㄧ殑鏄疶omcat5.5錛宩ava铏氭嫙鏈?.5鐗堟湰錛岃繖涓変釜姝eソ閰嶅銆?br />
灝唀clipse鍜孴omcat5.5璋冭瘯濂藉悗錛屾垜浠氨鍙互灝嗗伐紼嬪彂甯冨埌Tomcat涓幓浜嗭紝榪欓噷娉ㄦ剰錛岀敱浜嶥WR宸ョ▼緇勭粐鏂瑰紡鏄寜ant涔犳儻鏂瑰紡緇勭粐鐨勶紝鎵浠ヤ綘涓嶈兘鎸塭clipse榛樿鏂瑰紡鍘誨彂甯冧綘鐨凞WR宸ョ▼錛屼綘闇瑕佹墽琛宐uild.xml鏋勫緩dwr.war鍖咃紝璇ュ寘浼氱敓鎴愭斁鍒板伐紼嬬殑\target\ant\鐩綍涓嬶紝鍦ㄦ垜鏈哄櫒涓婃槸D:\dwr_workspace\dwr\target\ant\dwr.war錛岀劧鍚庝綘闇瑕佸皢dwr.war鎷瘋礉鍒癉:\Tomcat 5.5\webapps鐩綍錛岃繍琛孴omcat錛岀郴緇熶細鑷姩灝哾wr.war瑙e寘錛屽艦鎴恉wr鐩綍錛屾瘮濡傚湪鎴戞満鍣ㄤ笂浼氬艦鎴愭枃浠跺すD:\Tomcat 5.5\webapps\dwr銆?br />
鍦ㄦ垜鏈哄櫒涓婅闂?a href="http://localhost:5050/dwr">http://localhost:5050/dwr錛屽氨鍙鍒伴闈簡錛屼絾鏄笅鍗婇儴鍒嗘姤閿欙紝鐪嬬湅tomcat鍚庡彴涔熸姤閿欙紝鏌ヤ簡鏌ユ槸鎵句笉鍒扮被鐨勭紭鏁咃紝鍐嶆煡鍙戠幇緙哄皯js.jar鍖咃紝涓婄綉鎵炬壘錛屼笅杞戒簡涓涓猨s.jar鍖咃紝鍐嶅皢js.jar鍖呮坊鍔犲埌鐩綍D:\dwr_workspace\dwr\web\WEB-INF\lib\js.jar錛岀劧鍚庨噸鏂板彂甯僿ar鍖呭氨娌¢棶棰樺暒銆?br />
1. 瀹夎 DWR JAR 鍖?/strong> 2. 緙栬緫 config 鏂囦歡 灝嗕笅闈㈢殑浠g爜娣誨姞鍒?WEB-INF/web.xml 鏂囦歡涓紝<servlet>闇瑕佹斁鍦ㄥ彟澶栫殑<servlet>涔嬪悗錛?lt;servlet-mapping>涔熸槸濡傛銆?/p>
<servlet> <servlet-mapping> 鎺ヤ笅鏉ュ垱寤?dwr.xml 鏂囦歡騫跺皢姝ゆ斁鍦?web.xml 鎵鍦ㄧ殑 WEB-INF 鐩綍涓嬨傛枃浠朵腑綾諱技涓嬮潰鐨勫唴瀹癸細 <!DOCTYPE dwr PUBLIC <dwr> DWR 閰嶇疆鏂囦歡瀹氫箟浜嗙敱 DWR 鍒涘緩鍜岃 Javascript 榪滅▼浣跨敤鐨勭被銆傚湪涓婇潰鐨勪緥瀛愪腑鎴戜滑鍦ㄨ繙紼嬪垱寤轟簡2涓被錛屽茍涓旂粰鍑轟簡鍦?Javascript 涓殑綾誨悕銆?/p>
涓婇潰浣跨敤鐨?new creator 浣跨敤浜嗘墍鏈夌殑 JavaBeans 蹇呴』鍚湁鐨勫叕鏈夛紙public錛夋棤鍙傦紙no-args錛夌殑鏋勯犲嚱鏁般傚煎緱涓鎻愮殑鏄紝 DWR 榪樻湁涓浜涢檺鍒訛細 3. 璁塊棶涓嬮潰鐨勫湴鍧 浣犲簲璇ヤ細鐪嬪埌涓涓〉闈紝涓婇潰鏄劇ず浜嗗垰鎵嶄綘鍦ㄧ浜屾鎵鍒涘緩鐨勭被銆傝繘鍏ヤ竴涓摼鎺ヤ箣鍚庝綘浼氱湅鍒版墍鏈夌瓑寰呰皟鐢ㄦ柟娉曠殑鍒楄〃銆傝繖浜涘姩鎬佷駭鐢熺殑渚嬪瓙浣犱篃鑳介氳繃 DWR 鏉ュ疄鐜般?/p>
浜茶嚜灝濊瘯鍜屼綋浼氫笅鍚с?/p>
鎬庢牱搴旂敤鍒頒綘鐨?Web 紼嬪簭涓紵 鍦ㄤ晶杈規爮鏈夊緢澶氫緥瀛愭紨紺轟簡鎬庢牱鏀瑰彉緗戦〉涓殑鏂囨湰銆佹洿鏂板垪琛ㄣ佹搷浣滆〃鍗曞拰鍔ㄦ佷慨鏀硅〃鏍箋傛瘡涓涓緥瀛愰兘鏈夎緇嗙殑璇存槑銆?/p>
鍙﹀涓涓紑濮嬫柟娉曞氨鏄粠欏甸潰涓煡鐪嬫簮浠g爜錛岃繖浜涢〉闈綘鍒氬垰嫻忚榪囷細 <script src=’/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js’></script> 浣犲彲浠ユ牴鎹疄闄呮儏鍐典慨鏀?/[YOUR-WEBAPP]/ 閮ㄥ垎銆?/p>
鍏充簬鎬庢牱涔﹀啓 DWR 鎺у埗鐨?Javascript 浠g爜璇鋒煡鐪?鑴氭湰綆浠?/a>銆?/p>
涓嬭澆 dwr.jar 鏂囦歡錛岀劧鍚庡皢瀹冩斁鍦?web 紼嬪簭鐨?WEB-INF/lib 鐩綍涓嬮潰錛屽緢鍙兘鍦ㄨ繖涓洰褰曚笅宸茬粡鏈変竴浜?jar 鏂囦歡浜嗐?/p>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
”-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN”
”http://www.getahead.ltd.uk/dwr/dwr10.dtd”>
<allow>
<create creator=”new” javascript=”JDate”>
<param name=”class” value=”java.util.Date”/>
</create>
<create creator=”new” javascript=”Demo”>
<param name=”class” value=”your.java.Bean”/>
</create>
</allow>
</dwr>
http://localhost:8080/[YOUR-WEBAPP]/dwr/
<script src=’/[YOUR-WEBAPP]/dwr/engine.js’></script>
]]>
姣忎釜convert閮藉寘鍚袱涓柟娉昪onvertInbound錛宑onvertOutbound,榪欎袱涓柟娉曠浉鍙?br />
convertInbound 榪涚珯杞崲 灝嗗瓧絎︿覆杞崲涓簀ava鍙瘑鍒殑瀵硅薄 閽堝璋冪敤鏂規硶鐨勮緭鍏ュ弬鏁?br />
convertOutbound 鍑虹珯杞崲 灝唈ava瀵硅薄杞崲涓簀avascript鍙瘑鍒殑json鏍煎紡鐨勫瓧絎︿覆 閽堝璋冪敤鏂規硶鐨勮繑鍥炲?/p>
涓嬮潰榪欎簺鍙互瀹炵幇鍩轟簬web鐨勫疄鏃朵簨浠墮氱煡鐨勬柟娉曪細
1.HTTP嫻侊細榪欑鏂規硶鐢卞瓨鍦ㄤ簬涓嶉棿鏂殑HTTP榪炴帴鍝嶅簲涓垨鏌愪釜XMLHttpRequest榪炴帴涓殑鏈嶅姟鍣ㄦ暟鎹祦鎵緇勬垚銆?/p>
銆銆2.HTTP鎷夊彇鏂瑰紡錛氬湪榪欑浼犵粺鐨勬柟娉曚腑錛屽鎴風浠ョ敤鎴峰彲瀹氫箟鐨勬椂闂撮棿闅斿幓媯鏌ユ湇鍔″櫒涓婄殑鏈鏂版暟鎹傝繖縐嶆媺鍙栨柟寮忕殑棰戠巼瑕佽凍澶熼珮鎵嶈兘淇濊瘉寰堥珮鐨勬暟鎹簿紜害錛?br /> 浣嗛珮棰戠巼鍙兘浼氬鑷村浣欑殑媯鏌ワ紝浠庤屽鑷磋緝楂樼殑緗戠粶嫻侀噺銆傝屽彟涓鏂歸潰錛屼綆棰戠巼鍒欎細瀵艱嚧閿欒繃鏇存柊鐨勬暟鎹傜悊鎯沖湴錛屾媺鍙栫殑鏃墮棿闂撮殧搴旇絳変簬鏈嶅姟鍣ㄧ姸鎬佹敼鍙樼殑閫熷害銆?/p>
銆銆3.鍙嶈漿AJAX錛氭湇鍔℃祦搴旂敤鍒癆JAX錛屽氨鏄墍璋撶殑鍙嶈漿AJAX 鎴栬匔OMET 銆傚畠浣垮緱鏈嶅姟鍣ㄥ湪鏌愪簨浠跺彂鐢熸椂鍙互鍙戦佹秷鎭粰瀹㈡埛绔紝鑰屼笉闇瑕佸鎴風鏄懼紡鐨勮姹傘?br />
鐩爣鍦ㄤ簬杈懼埌鐘舵佸彉鍖栫殑瀹炴椂鏇存柊銆侰OMET浣跨敤浜咹TTP/1.1涓殑鎸佺畫榪炴帴鐨勭壒鎬с傞氳繃HTTP/1.1錛岄櫎闈炲彟浣滆鏄庯紝鏈嶅姟鍣ㄥ拰嫻忚鍣ㄤ箣闂寸殑TCP榪炴帴浼氫竴鐩翠繚鎸佽繛鎺ョ姸鎬侊紝
鐩村埌鍏朵腑涓鏂瑰彂閫佷簡涓鏉℃槑鏄劇殑“鍏抽棴榪炴帴”鐨勬秷鎭紝鎴栬呮湁瓚呮椂浠ュ強緗戠粶閿欒鍙戠敓銆?/p>
銆銆4.闀挎椂闂磋疆璇細涔熷氨鏄墍璋撶殑寮傛杞錛岃繖縐嶆柟寮忔槸綰湇鍔″櫒绔帹閫佹柟寮忓拰瀹㈡埛绔媺鍙栨柟寮忕殑娣峰悎銆傚畠鏄熀浜嶣AYEUX鍗忚鐨勩傝繖涓崗璁伒寰熀浜庝富棰樼殑鍙戝竷鈥斺旇闃呮満鍒躲?br />
鍦ㄨ闃呬簡鏌愪釜棰戦亾鍚庯紝瀹㈡埛绔拰鏈嶅姟鍣ㄩ棿鐨勮繛鎺ヤ細淇濇寔鎵撳紑鐘舵侊紝騫朵繚鎸佷竴孌典簨鍏堝畾涔夊ソ鐨勬椂闂淬傚鏋滄湇鍔″櫒绔病鏈変簨浠跺彂鐢燂紝鑰屽彂鐢熶簡瓚呮椂錛?br />
鏈嶅姟鍣ㄧ灝變細璇鋒眰瀹㈡埛绔繘琛屽紓姝ラ噸鏂拌繛鎺ャ傚鏋滄湁浜嬩歡鍙戠敓錛屾湇鍔″櫒绔細鍙戦佹暟鎹埌瀹㈡埛绔紝鐒跺悗瀹㈡埛绔噸鏂拌繛鎺?br />
娉細Comet錛?a >鍩轟簬 HTTP 闀胯繛鎺ョ殑“鏈嶅姟鍣ㄦ帹”鎶鏈?/a>
銆?br />
Bayeux鏄疍ojo鍩洪噾浼氬畾涔夌殑涓涓崗璁俤wr鍦ㄥ幓騫寸殑鏃跺欏氨寮濮嬫敮鎸佽鍗忚錛岄殢鐫dwr欏圭洰2008騫村垵鍔犲叆鍒癉ojo鍩洪噾浼氾紝ajax鎶鏈?dwr)鍜宑omet(cometd)鎶鏈皢浼氳瀺鍚堢殑鏇村姞绱у瘑(璇存槑錛歞wr,cometd鐜板湪閮藉睘浜巇ojo鍩洪噾浼氫笅闈㈢殑欏圭洰)錛屾湰鍖呭皢鏉ヤ及璁′細浣滃緢澶х殑鍙樺寲銆俛jax鎶鏈拰comet鎶鏈殑铻嶅悎錛屽弬鐪?a >浣跨敤 Jetty 鍜?Direct Web Remoting 緙栧啓鍙墿灞曠殑 Comet 搴旂敤紼嬪簭錛?br />
榪欎釜鍖呮槸dwr澶栭儴鏀寔鍖咃紝騫舵湭琚叾浠栧寘寮曠敤銆?br />
org.directwebremoting.bayeux.BayeuxClient Bayeux鍗忚瀹㈡埛绔?br />
org.directwebremoting.bayeux.BayeuxScriptConduit Bayeux鍗忚Script綆¢亾
org.directwebremoting.bayeux.BayeuxServletContextAttributeListener 璇ョ洃鍚櫒鐢眞eb.xml娉ㄥ唽錛屽鏋滆浣跨敤鎺ㄧ殑鎶鏈紝閭d箞浣犲氨蹇呴』娉ㄥ唽錛孊ayeuxServletContextAttributeListener錛屼細璋冪敤BayeuxClient錛屾寜comet鍘熺悊灝唖cript鎺ㄩ佺殑瀹㈡埛绔傚叿浣撶粏鑺傛湭浣滅爺絀躲?br />
hub
闆嗙嚎鍣紝鎻愪緵澶氫釜ajax浜掔浉鎿嶄綔鎺ュ彛錛屼嬌寰椾竴涓晫闈腑澶氫釜ajax鍙互浜掔浉璋冪敤錛屽弬鑰僶penajax鑱旂洘鍒跺畾鐨勮鍒欙紝dwr宸茬粡鏄仈鐩熺殑浼氬憳涔嬩竴
org.directwebremoting.export鍖呬細鐢ㄥ埌錛屽叿浣撶粏鑺備笉娓呮
ScriptBuffer
閲囩敤list鍌ㄥ瓨script錛屽姛鑳界被浼間簬StringBuffer
ServerContext
鏈嶅姟鍣ㄧ涓婁笅鏂?br />
WebContext
嫻忚鍣ㄤ笂涓嬫枃錛?span style="color: red">濂藉儚鏄瘡涓鎴蜂竴涓紙綰㈣壊琛ㄧず娌′粩緇嗙湅錛?br />
auth.js
AuthHandler璐熻矗璇誨彇榪欎釜js鏂囦歡
緇嗚妭鐢盋achingFileHandler璇誨彇
readResource()灝嗗瓧鑺傜杞崲涓哄瓧絎︿覆
緇ф壙JavaScriptHandler鎺ュ彛錛屼笓闂ㄥ鐞嗚鍙杍s鏂囦歡
JavaScriptHandler extends TemplateHandler implements CachingFileHandler implements Handler
CachingFileHandler
璇誨彇鏁版嵁鏂囦歡錛屾牴鎹畆eq鐨勬姤澶村睘鎬у垽鏂紝濡傛灉淇敼榪囷紝閭d箞閲嶆柊涓嬭澆錛屽惁鍒欎笉鐢?nbsp;
涓嬭澆璇誨彇璧勬簮鏂囦歡錛岀敱涓嶅悓鐨刪andle澶勭悊錛岃繖浜沨andle閮界戶鎵夸簬JavaScriptHandler
濡傦細AuthHandler extends JavaScriptHandler
瀹為檯涓婂鎴風浼氬皢js鏂囦歡涓嬭澆鍒扮紦瀛樺尯錛岃繖縐嶆満鍒跺彲浠ヤ嬌寰楁祻瑙堢殑鏃跺欐鏌ユ槸鍚s鏂囦歡鍐呭鍙戠敓鍙樺寲銆備粠鑰岄噸鏂頒笅杞姐?/p>
dwr20.dtd
org.directwebremoting.impl.DTDEntityResolve澶勭悊
dwr20.xsd
瀹為檯涓婃病鐢ㄥ埌
涓ょxml妗嗘灦綾誨瀷鏂囦歡錛屽彲浠ヨparse璇嗗埆銆?/p>
engine.js
寮曟搸js,鍦ㄦ祻瑙堝櫒緙撳瓨涓細鍙戠幇榪欎釜鏂囦歡宸茬粡涓嬭澆鍒版湰鍦般侲ngineHandler澶勭悊,
messages.properties
璇█璧勬簮鏂囦歡
鐢眔rg.directwebremoting.util.Messages璇誨彇
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("org.directwebremoting.messages");
姣旇緝緇嗚嚧鐨勭幆鑺傦細
init()璋冪敤
createAndSetupDefaultContainer()
璋冪敤
setupDefaultContainer(defaultContainer, servletConfig)
璋冪敤濡備笅姝ラ
1)setupDefaults(container);
鍖呮嫭錛?br />
瀹瑰櫒鐩稿叧綆$悊宸ュ叿閰嶇疆闆嗭紝涔熷氨鏄瀹炵幇鐨勪竴浜涙帴鍙c傝繖縐嶆柟寮忚洰濂斤紝褰撳鍣ㄩ渶瑕佸叿澶囧緢澶氭帴鍙e姛鑳芥椂錛屾妸榪欎簺鎺ュ彛鍏ㄩ儴鍋氭垚闅愬皠錛屽茍璁劇疆鎴愬彲閰嶇疆鐨勫疄鐜?br />
container.addImplementation(AccessControl.class, DefaultAccessControl.class);
// Mapping handlers to URLs錛岃礬寰勯厤緗?br />
createUrlMapping(container, "/index.html", IndexHandler.class, "indexHandlerUrl");
//璇誨彇servlet閰嶇疆灞炴?br />
2)setupFromServletConfig(container, servletConfig);
棰濆澶勭悊1)涓閫夌被鍨?br />
3)resolveMultipleImplementations(container, servletConfig);
閲岄潰浣跨敤浜嗛氱敤yui鍨嬪帇緙╁櫒
銆愪嬌鐢?YUI Compressor 鍘嬬緝 Javascript 鍜?CSS
宸ュ叿涓嬭澆錛?http://www.julienlecomte.net/yuicompressor/
鑻辨枃浠嬬粛錛?http://com3.devnet.re3.yahoo.com/yui/compressor/
YUI Compressor鏄嬌鐢↗ava緙栧啓鐨勫伐鍏鳳紝闇瑕丣ava鐗堟湰澶т簬絳変簬1.4銆?
宸ヤ綔鍘熺悊綆浠嬶細
涓昏鏄幓鎺夊啑浣欑殑絀虹櫧錛屼富瑕佸寘鎷┖鏍鹼紝鎹㈣絎︺佸埗琛ㄧ銆?nbsp;
瀵逛簬 Javascript錛岃繕閲囩敤緙╃煭鍙橀噺鍚嶇殑鏂規硶鍘嬬緝鏂囦歡錛屽氨鏄湪淇濊瘉浠g爜姝g‘鎬х殑鎯呭喌涓嬪皢鍙橀噺鍚嶇敤鍙湁1涓瓧絎︾殑瀛楃涓蹭唬鏇匡紝鎴栬?涓?涓瓧絎︼紝鎬諱箣灝介噺鐭?nbsp;
瀵逛簬 CSS錛岃繕鏈夐噰鐢ㄤ紭鍖?鍊煎睘鎬у肩殑琛ㄧず錛屼紭鍖栭鑹插肩殑鏂規硶鍘嬬緝鏂囦歡銆?nbsp;
CSS鐨勪紭鍖栨瘮 CSSTidy 鍔熻兘寮便侰SSTidy榪樿兘鏀寔涓浜涚浉鍏沖睘鎬х殑鍚堝茍銆傘?br />
//宸ュ叿閰嶇疆闆?鍔犺澆錛屾樉鐜幫紝媯鏌?br />
4)container.setupFinished();
瀹瑰櫒鍐呭bean鍒濆鍖?,鍖呮嫭緋葷粺榛樿錛燂紵錛?br />
initContainerBeans