锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产高清在线一区二区三区,亚洲偷自拍拍综合网,亚洲精品国产日韩无码AV永久免费网 http://www.tkk7.com/doulei/zh-cnMon, 12 May 2025 09:26:39 GMTMon, 12 May 2025 09:26:39 GMT60涓涓敤浜嶫2EE搴旂敤紼嬪簭鐨勫紓甯稿鐞嗘鏋?杞澆)http://www.tkk7.com/doulei/archive/2006/07/04/56495.htmlHello JavaHello JavaTue, 04 Jul 2006 03:15:00 GMThttp://www.tkk7.com/doulei/archive/2006/07/04/56495.htmlhttp://www.tkk7.com/doulei/comments/56495.htmlhttp://www.tkk7.com/doulei/archive/2006/07/04/56495.html#Feedback0http://www.tkk7.com/doulei/comments/commentRss/56495.htmlhttp://www.tkk7.com/doulei/services/trackbacks/56495.html 杞嚜錛歨ttp://dev2dev.bea.com.cn/techdoc/20060601803.html
涓涓敤浜嶫2EE搴旂敤紼嬪簭鐨勫紓甯稿鐞嗘鏋?/span>

鏃墮棿錛?006-06-01
浣滆咃細ShriKant Vashishtha
嫻忚嬈℃暟錛? 1184
鏈枃鍏抽敭瀛楋細J2EE,聽Struts,聽RuntimeException,聽design patterns,聽鏈浣沖疄璺?/a>,聽寮傚父澶勭悊,聽鍖呰,聽璁捐妯″紡,聽澶栬,聽妯℃澘鏂規硶
鏂囩珷宸ュ叿
鎺ㄨ崘緇欐湅鍙? align=鎺ㄨ崘緇欐湅鍙?/a>
鎵撳嵃鏂囩珷
鎵撳嵃鏂囩珷

銆銆鍦ㄥぇ澶氭暟Java欏圭洰涓紝澶ч儴鍒嗕唬鐮侀兘鏄牱鏉夸唬鐮併傚紓甯稿鐞嗗氨灞炰簬姝ょ被浠g爜銆傚嵆浣夸笟鍔¢昏緫鍙湁3鍒?琛屼唬鐮侊紝鐢ㄤ簬寮傚父澶勭悊鐨勪唬鐮佷篃瑕佸崰10鍒? 20琛屻傛湰鏂囧皢璁ㄨ濡備綍璁╁紓甯稿鐞嗕繚鎸佺畝鍗曞拰鐩磋錛屼嬌寮鍙戜漢鍛樺彲浠ヤ笓蹇冧簬寮鍙戜笟鍔¢昏緫錛岃屼笉鏄妸鏃墮棿嫻垂鍦ㄧ紪鍐欏紓甯稿鐞嗙殑鏍鋒澘浠g爜涓娿傛湰鏂囪繕灝嗚鏄庣敤浜庡湪 J2EE鐜涓垱寤哄拰澶勭悊寮傚父鐨勫熀紜鐭ヨ瘑鍜屾寚瀵煎師鍒欙紝騫舵彁鍑轟簡涓浜涘彲浠ヤ嬌鐢ㄥ紓甯歌В鍐崇殑涓氬姟闂銆傛湰鏂囧皢浣跨敤Struts妗嗘灦浣滀負琛ㄧず瀹炵幇錛屼絾璇ユ柟娉曢傜敤浜庝換浣曡〃紺哄疄鐜般?/p>

浣跨敤checked鍜寀nchecked寮傚父鐨勫満鏅?/h3>

銆銆鎮ㄦ槸鍚︽浘緇忔兂榪囷紝涓轟粈涔堣鍦ㄧ紪鍐欏ソ鐨勪唬鐮佸潡鍛ㄥ洿鏀劇疆涓涓猼ry-catch鍧楋紝鍗充究鏄庣煡閬撴棤娉曞榪欎簺寮傚父榪涜浠涔堝鐞嗭紝鑰屽彧婊¤凍浜庢妸瀹冧滑鏀懼湪 catch鍧椾腑錛熸偍鍙兘鎯崇煡閬擄紝涓轟粈涔堜笉鑳芥妸榪欓」宸ヤ綔鏀懼湪涓涓泦涓殑鍦版柟瀹屾垚錛熷湪澶у鏁版儏鍐典笅錛岃繖涓湴鏂瑰浜嶫2EE搴旂敤紼嬪簭鏉ヨ灝辨槸涓涓?a target="_blank">鍓嶇鎺у埗鍣?/a>銆? 鎹㈠彞璇濊錛屽紑鍙戜漢鍛樹笉浼氬洜涓哄畠浠屽彈鍒板共鎵幫紝鍥犱負鏍規湰涓嶅繀寰堝鍦拌繃闂畠浠備絾鏄紝濡傛灉涓涓柟娉曞悕縐板寘鍚竴涓猼hrows瀛愬彞錛屼細鍑虹幇浠涔堟儏鍐靛憿錛熷紑鍙戜漢鍛? 鎴栬呭繀欏繪崟鎹夎繖浜涘紓甯革紝鎴栬呮妸瀹冧滑鏀懼湪鑷繁鐨勬柟娉曠殑throws瀛愬彞涓傝繖灝辨槸鐥涜嫤鐨勬牴婧愶紒騫歌繍鐨勬槸錛孞ava API鏈変竴綾誨彨鍋歶nchecked exception鐨勫紓甯革紝瀹冧滑涓嶅繀鎹曟崏銆備絾鏄紝浠嶇劧瀛樺湪涓涓棶棰橈細鏍規嵁浠涔堟潵鍐沖畾鍝簺鏄痗hecked寮傚父錛屽摢浜涙槸unchecked寮傚父錛熶笅闈㈢粰鍑轟竴 浜涙寚瀵煎師鍒欙細

  • 緇堢鐢ㄦ埛鏃犳硶閲囧彇鏈夋晥鎿嶄綔鐨勫紓甯稿簲璇ヤ綔涓簎nchecked寮傚父銆備緥濡傦紝鑷村懡鐨勫拰涓嶅彲鎭㈠鐨勫紓甯稿氨搴旇 鏄痷nchecked銆傛妸XMLParseException錛堝湪瑙f瀽XML鏂囦歡鏃舵姏鍑猴級浣滀負checked寮傚父娌℃湁浠諱綍鎰忎箟錛屽洜涓烘儫涓鑳藉閲囧彇鐨勬帾鏂藉氨 鏄熀浜庡紓甯歌窡韙潵瑙e喅鏍規湰闂銆傞氳繃鎵╁睍java.lang.RuntimeException錛屽彲浠ュ垱寤鴻嚜瀹氫箟鐨剈nchecked寮傚父銆?/li>
  • 鍦? 搴旂敤紼嬪簭涓紝涓庣敤鎴鋒搷浣滅浉鍏崇殑寮傚父搴旇鏄痗hecked寮傚父銆俢hecked寮傚父瑕佹眰瀹㈡埛绔潵鎹曟崏瀹冧滑銆傛偍鍙兘浼氶棶錛屼負浠涔堜笉鎶婃墍鏈夊紓甯擱兘褰撲綔鏄? unchecked銆傝繖鏍峰仛鐨勯棶棰樺湪浜庯紝鍏朵腑涓浜涘紓甯告棤娉曞湪姝g‘鐨勪綅緗鎹曟崏鍒般傝繖浼氬甫鏉ユ洿澶х殑闂錛屽洜涓洪敊璇彧鏈夊湪榪愯鏃舵墠鑳借璇嗗埆銆俢hecked寮? 甯哥殑渚嬪瓙鏈変笟鍔$‘璁ゅ紓甯搞佸畨鍏ㄦу紓甯哥瓑絳夈?/li>

寮傚父鎶涘嚭絳栫暐

鍙崟鎹夊熀鏈簲鐢ㄧ▼搴忓紓甯革紙鍋囧畾涓築aseAppException錛夊茍鍦╰hrows瀛愬彞涓0鏄?/h4>

銆銆鍦ㄥぇ澶氭暟J2EE搴旂敤紼嬪簭涓紝鍏充簬閽堝鏌愪釜寮傚父搴旇鍦ㄥ摢涓鐣岄潰涓婃樉紺哄摢鏉¢敊璇秷鎭殑鍐崇瓥鍙兘鍦ㄨ〃紺哄眰涓仛鍑恒傝繖浼氬甫鏉ュ彟涓涓棶棰橈細涓轟粈涔堟垜浠笉鑳芥妸榪欑鍐崇瓥鏀懼湪涓涓叕鍏辯殑鍦版柟鍛紵鍦↗2EE搴旂敤紼嬪簭涓紝鍓嶇鎺у埗鍣?/a>灝辨槸涓涓繘琛屽父瑙佸鐞嗙殑闆嗕腑浣嶇疆銆?/p>

銆 銆姝ゅ錛屽繀欏繪湁涓縐嶇敤浜庝紶鎾紓甯哥殑閫氱敤鏈哄埗銆傚紓甯鎬篃闇瑕佷互涓縐嶆櫘閫傜殑鏂瑰紡寰楀埌澶勭悊銆備負姝わ紝鎴戜滑濮嬬粓闇瑕佸湪鎺у埗鍣ㄧ鎹曟崏鍩烘湰搴旂敤紼嬪簭寮傚父 BaseAppException銆傝繖鎰忓懗鐫鎴戜滑闇瑕佹妸BaseAppException寮傚父錛堝彧鏈夎繖涓紓甯革級鏀懼叆鍙互鎶涘嚭checked寮傚父鐨勬瘡涓柟娉? 鐨則hrows瀛愬彞涓傝繖閲岀殑姒傚康鏄嬌鐢ㄥ鎬佹潵闅愯棌寮傚父鐨勫疄闄呭疄鐜般傛垜浠湪鎺у埗鍣ㄤ腑鎹曟崏BaseAppException錛屼絾鏄墍鎶涘嚭鐨勭壒瀹氬紓甯稿疄渚嬪彲鑳? 鏄嚑涓淳鐢熷紓甯哥被涓殑浠繪剰涓涓傚熷姪浜庤繖縐嶆柟娉曪紝鍙互鑾峰緱璁稿寮傚父澶勭悊鏂歸潰鐨勭伒媧繪э細

  • 涓嶉渶瑕佸湪throws瀛愬彞涓斁鍏ュぇ閲忕殑checked寮傚父銆倀hrows瀛愬彞涓彧闇瑕佹湁涓涓紓甯搞?/li>
  • 涓嶉渶瑕佸啀瀵瑰簲鐢ㄧ▼搴忓紓甯鎬嬌鐢ㄦ販涔辯殑catch鍧椼傚鏋滈渶瑕佸鐞嗗畠浠紝涓涓猚atch鍧楋紙鐢ㄤ簬BaseAppException錛夊氨瓚沖浜嗐?/li>
  • 寮鍙戜漢鍛樹笉闇瑕佷翰鑷繘琛屽紓甯稿鐞嗭紙鏃ュ織璁板綍浠ュ強鑾峰彇閿欒浠g爜錛夈傝繖縐嶆娊璞℃槸鐢盓xceptionHandler瀹屾垚鐨勶紝紼嶅悗鏈枃浼氬氨姝ょ偣榪涜璁ㄨ銆?/li>
  • 鍗充嬌紼嶅悗鎶婃洿澶氬紓甯稿紩鍏ュ埌鏂規硶瀹炵幇涓紝鏂規硶鍚嶇О涔熶笉浼氭敼鍙橈紝鍥犳涔熶笉闇瑕佷慨鏀瑰鎴風浠g爜錛屽惁鍒欏氨浼氬紩璧瘋繛閿佸弽搴斻傜劧鑰岋紝鎶涘嚭鐨勫紓甯擱渶瑕佸湪鏂規硶鐨凧avadoc涓寚瀹氾紝浠ヤ究璁╁鎴風鍙互鐪嬪埌鏂規硶綰︽潫銆?/li>

銆銆涓嬮潰緇欏嚭鎶涘嚭checked寮傚父鐨勪竴涓緥瀛愶細

public void updateUser(UserDTO userDTO) 
throws BaseAppException{
UserDAO userDAO = new UserDAO();
UserDAO.updateUser(userDTO);
...
if(...)
throw new RegionNotActiveException(
"Selected region is not active");
}

Controller Method:
...
try{
User user = new User();
user.updateUser(userDTO);
}catch(BaseAppException ex){
//ExceptionHandler is used to handle
//all exceptions derived from BaseAppException
}
...

銆銆榪勪粖涓烘錛屾垜浠凡緇忚鏄庯紝瀵逛簬鎵鏈夊彲鑳芥姏鍑篶hecked寮傚父騫惰Controller璋冪敤鐨勬柟娉曪紝鍏秚hrows瀛愬彞涓簲璇ュ彧鍖呭惈 checked寮傚父銆傜劧鑰岋紝榪欏疄闄呬笂鏆楃ず鐫鎴戜滑鍦╰hrows瀛愬彞涓笉鑳藉寘鍚叾浠栦換浣曞簲鐢ㄧ▼搴忓紓甯搞備絾鏄紝濡傛灉闇瑕佸熀浜巆atch鍧椾腑鏌愮綾誨瀷鐨勫紓甯告潵鎵? 琛屼笟鍔¢昏緫錛岄偅鍙堣鎬庝箞鍔炲憿錛熻澶勭悊榪欑被鎯呭喌錛屾柟娉曡繕鍙互鎶涘嚭涓涓壒瀹氬紓甯搞傝浣忥紝榪欐槸涓縐嶇壒渚嬶紝寮鍙戜漢鍛樼粷瀵逛笉鑳借涓鴻繖鏄悊鎵褰撶劧鐨勩傚悓鏍鳳紝姝ゅ璁ㄨ鐨? 搴旂敤紼嬪簭寮傚父搴旇鎵╁睍BaseAppException綾匯備笅闈㈢粰鍑轟竴涓緥瀛愶細

CustomerDAO method:
//throws CustomerNotActiveException along with
//BaseAppException
public CustomerDTO getCustomer(InputDTO inputDTO)
throws BaseAppException,
CustomerNotActiveException {
. . .
//Make a DB call to fetch the customer
//details based on inputDTO
. . .
// if not details found
throw new CustomerNotActiveException(
"Customer is not active");
}

Client method:

//catch CustomerNotActiveException
//and continues its processing
public CustomerDTO getCustomerDetails(
UserDTO userDTO)
throws BaseAppException{
...
CustomerDTO custDTO = null;
try{
//Get customer details
//from local database
customerDAO.getCustomerFromLocalDB();
}catch(CustomerNotActiveException){
...
return customerDAO
.activateCustomerDetails();
}
}

鍦╳eb搴旂敤紼嬪簭灞傛涓婂鐞唘nchecked寮傚父

銆銆鎵鏈塽nchecked寮傚父閮藉簲璇ュ湪web搴旂敤紼嬪簭灞傛涓婅繘琛屽鐞嗐傚彲浠ュ湪web.xml鏂囦歡涓厤緗畐eb欏甸潰錛屼互渚垮綋搴旂敤紼嬪簭涓嚭鐜皍nchecked寮傚父鏃訛紝鍙互鎶婅繖涓獁eb欏甸潰鏄劇ず緇欑粓绔敤鎴楓?/p>

鎶婄涓夋柟寮傚父鍖呰鍒扮壒瀹氫簬搴旂敤紼嬪簭鐨勫紓甯鎬腑

銆銆褰撲竴涓紓甯歌搗婧愪簬鍙︿竴涓閮ㄦ帴鍙o紙緇勪歡錛夋椂錛屽簲璇ユ妸瀹冨寘瑁呭埌涓涓壒瀹氫簬搴旂敤紼嬪簭鐨勫紓甯鎬腑錛屽茍榪涜鐩稿簲澶勭悊銆?/p>

銆銆渚嬪瓙錛?/p>

try {
BeanUtils.copyProperties(areaDTO, areaForm);
} catch (Exception se) {
throw new CopyPropertiesException(
"Exception occurred while using
copy properties", se);
}

銆銆榪欓噷錛孋opyPropertiesException鎵╁睍浜唈ava.lang.RuntimeException錛屾垜浠皢浼氳褰曞畠銆傛垜浠崟 鎹夌殑鏄疎xception錛岃屼笉鏄痗opyProperties鏂規硶鍙互鎶涘嚭鐨勭壒瀹歝hecked寮傚父錛屽洜涓哄浜庢墍鏈夎繖浜涘紓甯告潵璇達紝鎴戜滑閮戒細鎶涘嚭鍚屼竴涓? unchecked CopyPropertiesException寮傚父銆?/p>

榪囧寮傚父

銆銆鎮ㄥ彲鑳芥兂鐭ラ亾錛屽鏋滄垜浠負姣忔潯閿欒娑堟伅鍒涘緩涓涓紓甯革紝寮傚父綾昏嚜韜槸鍚︿細婧㈠嚭鍛紵渚嬪錛屽鏋溾淥rder not found鈥濇槸OrderNotFoundException鐨勪竴鏉¢敊璇秷鎭紝鎮ㄨ偗瀹氫笉浼氳CustomerNotFoundException鐨勯敊璇秷 鎭負鈥淐ustomer not found鈥濓紝鐞嗙敱寰堟槑鏄撅細榪欎袱涓紓甯鎬唬琛ㄥ悓鏍風殑鎰忎箟錛屾儫涓鐨勫尯鍒湪浜庝嬌鐢ㄥ畠浠殑涓婁笅鏂囦笉鍚屻傛墍浠ワ紝濡傛灉鍙互鍦ㄥ鐞嗗紓甯告椂鎸囧畾涓婁笅鏂囷紝鎴戜滑鏃犵枒鍙互鎶婅繖浜? 寮傚父鍚堝茍涓轟竴涓猂ecordNotFoundException銆備笅闈㈢粰鍑轟竴涓緥瀛愶細

try{
...
}catch(BaseAppException ex){
IExceptionHandler eh =ExceptionHandlerFactory
.getInstance().create();
ExceptionDTO exDto = eh.handleException(
"employee.addEmployee", userId, ex);
}

銆銆鍦ㄨ繖閲岋紝employee.addEmployee涓婁笅鏂囧皢琚檮鍔犵粰涓涓笂涓嬫枃鏁忔劅鐨勫紓甯哥殑閿欒浠g爜錛屼粠鑰屼駭鐢熸儫涓鐨勯敊璇唬鐮併備緥濡傦紝濡傛灉 RecordNotFoundException鐨勯敊璇唬鐮佹槸errorcode.recordnotfound錛岄偅涔堣繖涓笂涓嬫枃鐨勬渶緇堥敊璇唬鐮佸皢鍙樹負 errorcode.recordnotfound.employee.addEmployee錛屽畠瀵逛簬榪欎釜涓婁笅鏂囨槸鎯熶竴鐨勯敊璇唬鐮併?/p>

銆銆 鐒惰岋紝鎴戜滑瑕佺粰鍑轟竴涓鍛婏細濡傛灉鎮ㄥ噯澶囧湪鍚屼竴涓鎴風鏂規硶涓嬌鐢ㄥ涓帴鍙o紝鑰屼笖榪欎簺鎺ュ彛閮藉彲浠ユ姏鍑篟ecordNotFoundException寮傚父錛? 閭d箞鎯寵鐭ラ亾鏄摢涓疄浣撳紩鍙戜簡榪欎釜寮傚父灝卞彉寰楀崄鍒嗗洶闅俱傚鏋滀笟鍔℃帴鍙f槸鍏叡鐨勶紝鑰屼笖鍙互琚悇縐嶅閮ㄥ鎴風浣跨敤錛岄偅涔堝緩璁彧浣跨敤鐗瑰畾鐨勫紓甯革紝鑰屼笉浣跨敤鍍? RecordNotFoundException榪欐牱鐨勪竴鑸у紓甯搞傜壒瀹氫簬涓婁笅鏂囩殑寮傚父瀵逛簬鍩轟簬鏁版嵁搴撶殑鍙仮澶嶅紓甯告潵璇撮潪甯告湁鐢紝鍥犱負鍦ㄨ繖縐嶆儏鍐典笅錛屽紓甯? 綾誨緇堟槸鐩稿悓鐨勶紝涓嶅悓鐨勫彧鏈夊畠浠嚭鐜扮殑涓婁笅鏂囥?/p>

J2EE搴旂敤紼嬪簭鐨勫紓甯稿眰嬈$粨鏋?/h3>

銆銆姝e鍓嶉潰璁ㄨ鐨勯偅鏍鳳紝鎴戜滑闇瑕佸畾涔変竴涓紓甯稿熀綾伙紝鍙仛BaseAppException錛屽畠鍖呭惈浜嗘墍鏈夊簲鐢ㄧ▼搴忓紓甯哥殑榛樿琛屼負銆傛垜浠皢鎶婅繖涓熀 綾繪斁鍒版墍鏈夊彲鑳芥姏鍑篶hecked寮傚父鐨勬柟娉曠殑throws瀛愬彞涓傚簲鐢ㄧ▼搴忕殑鎵鏈塩hecked寮傚父閮藉簲璇ユ槸榪欎釜鍩虹被鐨勫瓙綾匯傛湁澶氱瀹氫箟閿欒澶勭悊鎶借薄鐨? 鏂瑰紡銆傜劧鑰岋紝鍏朵腑鐨勫尯鍒洿澶氬湴鏄笌涓氬姟綾昏屼笉鏄笌鎶鏈湁鍏熾傚閿欒澶勭悊鐨勬娊璞″彲鍒嗕負浠ヤ笅鍑犵被銆傛墍鏈夎繖浜涘紓甯哥被閮芥槸浠嶣aseAppException媧劇敓 鑰屾潵銆?/p>

checked寮傚父

  • 涓氬姟寮傚父錛氭墽琛屼笟鍔¢昏緫鏃跺嚭鐜扮殑寮傚父銆侭aseBusinessException鏄繖綾誨紓甯哥殑鍩虹被銆?/li>
  • 鏁版嵁搴撳紓甯?/strong>錛氫笌鎸佷箙鍖栨満鍒惰繘琛屼氦浜掓椂鎶涘嚭鐨勫紓甯搞侭aseDBException鏄繖綾誨紓甯哥殑鍩虹被銆?/li>
  • 瀹夊叏鎬у紓甯?/strong>錛氭墽琛屽畨鍏ㄦф搷浣滄椂鍑虹幇鐨勫紓甯搞傝繖綾誨紓甯哥殑鍩虹被鏄疊aseSecurityException銆?/li>
  • 紜寮傚父錛氬湪浠庣粓绔敤鎴峰鑾峰緱紜浠ユ墽琛屾煇涓壒瀹氫換鍔℃椂浣跨敤銆傝繖綾誨紓甯哥殑鍩虹被鏄疊aseConfirmationException銆?/li>

unchecked寮傚父

  • 緋葷粺寮傚父錛氭湁鏃跺欐垜浠笇鏈涗嬌鐢╱nchecked寮傚父銆備緥濡備笅闈㈢殑 鎯呭喌錛氫笉鎯充翰鑷鐞嗘潵鑷涓夋柟搴揂PI鐨勫紓甯革紝鑰屾槸甯屾湜鎶婂畠浠寘瑁呭湪unchecked寮傚父涓紝鐒跺悗鎶涘嚭緇欐帶鍒跺櫒銆傛湁鏃朵細鍑虹幇閰嶇疆闂錛岃繖浜涢棶棰樹篃涓嶈兘鐢? 瀹㈡埛绔繘琛屽鐞嗭紝鑰屽簲璇ヨ褰撲綔unchecked寮傚父銆傛墍鏈夎嚜瀹氫箟鐨剈nchecked寮傚父閮藉簲璇ユ墿灞曡嚜 java.lang.RuntimeException綾匯?/li>

琛ㄧず灞備笂鐨勫紓甯稿鐞?/h3>

銆銆琛ㄧず灞傜嫭鑷礋璐e喅瀹氬涓涓紓甯擱噰鍙栦粈涔堟搷浣溿傝繖縐嶅喅絳栨秹鍙婂埌璇嗗埆鎶涘嚭寮傚父鐨勯敊璇唬鐮併傛澶栵紝鎴戜滑榪橀渶瑕佺煡閬撳湪澶勭悊閿欒涔嬪悗搴旇鎶婇敊璇秷鎭噸瀹氬悜鍒板摢涓鐣岄潰銆?/p>

銆銆鎴戜滑闇瑕佸鍩轟簬寮傚父綾誨瀷鑾峰緱閿欒浠g爜榪欎釜榪囩▼榪涜鎶借薄銆傚繀瑕佹椂榪樺簲璇ユ墽琛屾棩蹇楄褰曘傛垜浠妸榪欑鎶借薄縐頒箣涓篍xceptionHandler銆傚畠鍩轟簬鈥滃洓浜哄府鈥?Gang of Four錛孏OF) 澶栬妯″紡錛堛?a target="_blank">Design Patterns銆? 涓涔︿腑璇達紝璇ユā寮忔槸鐢ㄤ簬鈥滀負瀛愮郴緇熶腑鐨勪竴緇勬帴鍙f彁渚涗竴涓粺涓鎺ュ彛銆傚瑙傚畾涔変簡涓涓洿楂樼駭鍒殑鎺ュ彛錛屼嬌瀛愮郴緇熷彉寰楁洿鍔犳槗浜庝嬌鐢ㄣ傗濓級錛屾槸鐢ㄤ簬澶勭悊鎵鏈夋淳鐢熻嚜 BaseAppException鐨勫紓甯哥殑鏁翠釜寮傚父澶勭悊緋葷粺鐨勫瑙傘備笅闈㈢粰鍑轟竴涓湪Struts Action鏂規硶涓繘琛屽紓甯稿鐞嗙殑渚嬪瓙錛?/p>

try{ 
...
DivisionDTO storeDTO = divisionBusinessDelegate
.getDivisionByNum(fromDivisionNum);
}catch(BaseAppException ex){
IExceptionHandler eh = ExceptionHandlerFactory
.getInstance().create();
String expContext = "divisionAction.searchDivision";
ExceptionDTO exDto = eh.handleException(
expContext , userId, ex);
ActionErrors errors = new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR
,new ActionError(
exDto.getMessageCode()));
saveErrors(request, errors);
return actionMapping.findForward(
"SearchAdjustmentPage");
}

銆銆濡傛灉鏇翠粩緇嗗湴瑙傚療鎴戜滑鍒氬垰緙栧啓鐨勫紓甯稿鐞嗕唬鐮侊紝鎮ㄥ彲鑳戒細鎰忚瘑鍒幫紝涓烘瘡涓猄truts鏂規硶緙栧啓鐨勪唬鐮佹槸鍗佸垎鐩鎬技鐨勶紝榪欎篃鏄竴涓棶棰樸傛垜浠殑鐩爣鏄敖鍙兘鍦板幓鎺夋牱鏉夸唬鐮併傛垜浠渶瑕佸啀嬈″瀹冭繘琛屾娊璞°?/p>

銆銆瑙e喅鏂規鏄嬌鐢?a target="_blank">妯℃澘鏂規硶錛圱emplate Method錛夎璁℃ā寮忥紙寮曡嚜GOF錛氣滃畠鐢ㄤ簬瀹炵幇涓涓畻娉曠殑涓嶅彉閮ㄥ垎錛屽茍鎶婂彲鍙樼殑綆楁硶閮ㄥ垎鐣欑粰瀛愮被鏉ュ疄鐜般傗濓級銆傛垜浠渶瑕佷竴涓寘鍚ā鏉挎柟娉曞艦寮忕畻娉曠殑鍩? 綾匯傝綆楁硶灝嗗寘鍚敤浜嶣aseAppException鐨則ry-catch鍧楀拰瀵筪ispatchMethod鏂規硶鐨勮皟鐢紝鏂規硶瀹炵幇錛堝鎵樼粰媧劇敓綾伙級濡? 涓嬮潰鐨勫熀浜嶴truts鐨凙ction涓墍紺猴細

public abstract class BaseAppDispatchAction 
extends DispatchAction{
...
protected static ThreadLocal
expDisplayDetails = new ThreadLocal();

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
...
try{
String actionMethod = request
.getParameter(mapping.getParameter());
finalDestination =dispatchMethod(mapping,
form, request, response,actionMethod);
}catch (BaseAppException Ex) {
ExceptionDisplayDTO expDTO =
(ExceptionDisplayDTO)expDisplayDetails
.get();
IExceptionHandler expHandler =
ExceptionHandlerFactory
.getInstance().create();
ExceptionDTO exDto = expHandler
.handleException(
expDTO.getContext(), userId, Ex);
ActionErrors errors = new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError(exDto
.getMessageCode()));
saveErrors(request, errors);
return mapping.findForward(expDTO
.getActionForwardName());
} catch(Throwable ex){
//log the throwable
//throw ex;
} finally {
expDisplayDetails.set(null);
}

銆銆鍦⊿truts涓紝DispatchAction::dispatchMethod鏂規硶鐢ㄤ簬鎶婅姹傝漿鍙戠粰姝g‘鐨凙ction鏂規硶錛屽彨鍋歛ctionMethod銆?/p>

銆 銆鎴戜滑鍋囧畾浠庝竴涓狧TTP璇鋒眰鑾峰緱searchDivision浣滀負actionMethod錛歞ispatchMethod灝嗗湪 BaseAppDispatchAction鐨勬淳鐢烝ction綾諱腑鎶婅姹傚垎媧劇粰searchDivision鏂規硶銆傚湪榪欓噷錛屾偍鍙互鐪嬪埌錛屽紓甯稿鐞嗕粎鍦ㄥ熀 綾諱腑瀹屾垚錛岃屾淳鐢熺被鍒欏彧瀹炵幇Action鏂規硶銆傝繖閲囩敤浜嗘ā鏉挎柟娉曡璁℃ā寮忥紝鍦ㄨ妯″紡涓紝寮傚父澶勭悊閮ㄥ垎鏄繚鎸佷笉鍙樼殑錛岃宒ispatchMethod鏂規硶鐨? 瀹為檯瀹炵幇錛堝彲鍙橀儴鍒嗭級鍒欎氦鐢辨淳鐢熺被瀹屾垚銆?/p>

銆銆淇敼鍚庣殑Struts Action鏂規硶濡備笅鎵紺猴細

... 
String exceptionActionForward =
"SearchAdjustmentPage";
String exceptionContext =
"divisionAction.searchDivision";

ExceptionDisplayDTO expDTO =
new ExceptionDisplayDTO(expActionForward,
exceptionContext);
expDisplayDetails.set(expDTO);
...
DivisionDTO divisionDTO =divisionBusinessDelegate
.getDivisionByNum(fromDivisionNum);
...

銆銆鐜板湪瀹冪湅璧鋒潵鐩稿綋娓呮櫚銆傚洜涓哄紓甯稿鐞嗘槸鍦ㄤ竴涓泦涓殑浣嶇疆涓?BaseAppDispatchAction)瀹屾垚鐨勶紝鎵嬪姩閿欒鍙兘閫犳垚鐨勫獎鍝嶄篃闄嶈嚦鏈浣庛?/p>

銆銆鐒惰岋紝鎴戜滑闇瑕佽緗紓甯鎬笂涓嬫枃鍜孉ctionForward鏂規硶鐨勫悕縐幫紝濡傛灉鏈夊紓甯稿嚭鐜幫紝璇鋒眰灝變細琚漿鍙戝埌璇ユ柟娉曘傛垜浠皢鍦═hreadLocal鍙橀噺expDisplayDetails涓緗繖浜涘唴瀹廣?/p>

銆 銆浣嗘槸錛屼負浠涔堣浣跨敤java.lang.ThreadLocal鍙橀噺鍛紵expDisplayDetails鏄? BaseAppDispatchActiion綾諱腑鐨勪竴涓彈淇濇姢鏁版嵁鎴愬憳錛岃繖涔熸槸瀹冮渶瑕佹槸綰跨▼瀹夊叏鐨勫師鍥犮俲ava.lang.ThreadLocal瀵? 璞″湪榪欓噷渚垮彲媧句笂鐢ㄥ満銆?/p>

寮傚父澶勭悊紼嬪簭

銆銆鍦ㄤ笂涓閮ㄥ垎涓紝鎴戜滑璁ㄨ浜嗗浣曞寮傚父澶勭悊榪涜鎶借薄銆備笅闈㈢粰鍑轟竴浜涘簲璇ユ弧瓚崇殑綰︽潫錛?/p>

  • 璇嗗埆寮傚父綾誨瀷騫惰幏寰楃浉搴旂殑閿欒浠g爜錛岃閿欒浠g爜鍙敤浜庢樉紺轟竴鏉℃秷鎭粰緇堢鐢ㄦ埛銆?/li>
  • 璁板綍寮傚父銆傚簳灞傜殑鏃ュ織璁板綍鏈哄埗琚殣钘忥紝鍙互鍩轟簬涓浜涚幆澧冨睘鎬у鍏惰繘琛岄厤緗?/li>

銆銆鎮ㄥ彲鑳藉凡緇忔敞鎰忓埌浜嗭紝鎴戜滑鍦ㄨ〃紺哄眰涓崟鎹夌殑鎯熶竴寮傚父灝辨槸BaseAppException銆傜敱浜庢墍鏈塩hecked寮傚父閮芥槸 BaseAppException鐨勫瓙綾伙紝榪欐剰鍛崇潃鎴戜滑瑕佹崟鎹塀aseAppException鐨勬墍鏈夋淳鐢熺被銆傚熀浜庣被鍚嶇О鏉ヨ瘑鍒敊璇唬鐮佸啀瀹規槗涓嶈繃浜嗐?/p>

//exp is an object of BaseAppException
String className = exp.getClass().getName();

銆銆鍙互鍩轟簬寮傚父綾葷殑鍚嶇О鍦ㄤ竴涓猉ML鏂囦歡錛坋xceptioninfo.xml錛変腑瀵歸敊璇唬鐮佽繘琛岄厤緗備笅闈㈢粰鍑哄紓甯擱厤緗殑涓涓緥瀛愶細

<exception name="EmployeeConfirmationException">
<messagecode>messagecode.laborconfirmation</messagecode>
<confirmationind>true</confirmationind>
<loggingtype>nologging</loggingtype>
</exception>

銆銆姝e鎮ㄧ湅鍒扮殑閭f牱錛屾垜浠妸榪欎釜寮傚父鍙樹負鏄懼紡錛岃浣跨敤鐨勬秷鎭唬鐮佹槸messagecode.employeeconfirmation銆傜劧鍚庯紝涓轟簡瀹炵幇鍥介檯鍖栫殑鐩殑錛屽彲浠ヤ粠ResourceBundle鎻愬彇瀹為檯鐨勬秷鎭傛垜浠緢娓呮錛屼笉闇瑕佸榪欑被寮傚父鎵ц鏃ュ織璁板綍錛屽洜涓哄畠鍙槸涓鏉$‘璁ゆ秷鎭紝鑰屼笉鏄竴涓簲鐢ㄧ▼搴忛敊璇?/p>

銆銆璁╂垜浠湅涓鐪嬩笂涓嬫枃鏁忔劅寮傚父鐨勪竴涓緥瀛愶細

<exception name="RecordNotFoundException">
<messagecode>messagecode.recordnotfound</messagecode>
<confirmationind>false</confirmationind>
<contextind>true</contextind>
<loggingtype>error</loggingtype>
</exception>

銆銆鍦ㄨ繖閲岋紝榪欎釜琛ㄨ揪寮忕殑contextind涓簍rue銆傚湪handleException鏂規硶涓紶閫掔殑涓婁笅鏂囧彲鐢ㄤ簬鍒涘緩鎯熶竴鐨勯敊璇唬鐮併備緥濡傦紝 濡傛灉鎴戜滑鎶妎rder.getOrder褰撲綔涓涓笂涓嬫枃榪涜浼犻掞紝緇撴灉寰楀埌鐨勬秷鎭唬鐮佸氨鏄紓甯哥殑娑堟伅浠g爜鍜屾墍浼犻掔殑涓婁笅鏂囩殑涓茶仈銆傚洜姝わ紝鎴戜滑鑾峰緱浜嗕竴涓儚 messagecode.recordnotfound.order.getOrder榪欐牱鐨勬儫涓娑堟伅浠g爜銆?/p>

銆銆瀵逛簬姣忎釜寮傚父鏉ヨ錛屽彲浠ユ妸 exceptioninfo.xml 涓殑鏁版嵁灝佽鍒頒竴涓彨鍋欵xceptionInfoDTO鐨勬暟鎹紶杈撳璞★紙data transfer object錛孌TO錛夈傜幇鍦紝鎴戜滑榪橀渶瑕佷竴涓崰浣嶇錛岀敤浜庣紦瀛樿繖浜涘璞★紝鍥犱負鎴戜滑涓嶆兂鍦ㄥ紓甯稿嚭鐜版椂鍙嶅瑙f瀽XML鏂囦歡鍜屽垱寤哄璞°傝繖欏瑰伐浣滃彲浠ュ鎵樼粰涓 涓彨鍋欵xceptionInfoCache鐨勭被鏉ュ畬鎴愶紝榪欎釜綾誨皢浼氬湪浠巈xceptioninfo.xml鏂囦歡璇誨彇ExceptionInfoDTO瀵? 璞′俊鎭箣鍚庣紦瀛樻墍鏈夎繖浜涘璞°?/p>

銆銆鐜板湪鎮ㄦ槸鍚﹀紕娓呮浜嗚繖鏁翠釜榪囩▼錛熻繖縐嶆柟娉曠殑鏍稿績閮ㄥ垎鏄疎xceptionHandler瀹炵幇錛岃瀹炵幇灝嗕嬌 鐢ㄥ皝瑁呭湪ExceptionInfoDTO涓殑鏁版嵁鏉ヨ幏鍙栨秷鎭唬鐮侊紝鍒涘緩ExceptionDTO瀵硅薄錛岀劧鍚庡熀浜庡湪緇欏畾寮傚父鐨? ExceptionInfoDTO涓寚瀹氱殑鏃ュ織璁板綍綾誨瀷鏉ヨ褰曞畠銆?/p>

銆銆涓嬮潰鏄疎xceptionHandler瀹炵幇鐨刪andleException鏂規硶錛?/p>

public ExceptionDTO handleException(String userId,
BaseAppException exp) {
ExceptionDTO exDTO = new ExceptionDTO();
ExceptionInfoCache ecache =
ExceptionInfoCache.getInstance();
ExceptionInfo exInfo = ecache
.getExceptionInfo(
ExceptionHelper.getClassName(exp));
String loggingType = null;
if (exInfo != null) {
loggingType = exInfo.getLoggingType();
exDTO.setConfirmation(exInfo
.isConfirmation());
exDTO.setMessageCode(exInfo
.getMessageCode());
}

FileLogger logger = new FileLoggerFactory()
.create();
logger.logException(exp, loggingType);

銆銆鏍規嵁涓嶅悓鐨勪笟鍔¢渶姹傦紝ExceptionHandler鎺ュ彛鍙互鏈夊縐嶅疄鐜般傚喅瀹氫嬌鐢ㄤ綍縐嶅疄鐜扮殑浠誨姟鍙氦鐢盕actory鏉ュ畬鎴愶紝鐗瑰埆鏄疎xceptionHandlerFactory綾匯?/p>

緇撴潫璇?/h3>

銆銆濡傛灉緙轟箯鍏ㄩ潰鐨勫紓甯稿鐞嗙瓥鐣ワ紝涓浜涚壒孌婄殑寮傚父澶勭悊鍧椾究鍙兘瀵艱嚧鍑虹幇闈炴爣鍑嗙殑閿欒澶勭悊鍜屼笉鍙淮鎶ょ殑浠g爜銆傞氳繃浣跨敤涓婇潰鐨勬柟娉曪紝渚垮彲綆鍖朖2EE搴旂敤紼嬪簭涓殑寮傚父澶勭悊榪囩▼銆?/p>

鍙傝冭祫鏂?/h3>
  • 鏈枃鐨?a target="_blank">紺轟緥浠g爜銆?/li>
  • 璁捐妯″紡錛氬瑙傚拰妯℃澘鏂規硶妯″紡鐨勬簮浠g爜銆?/li>

鍘熸枃鍑哄錛?/strong> http://www.onjava.com/pub/a/onjava/2006/01/11/exception-handling-framework-for-j2ee.html

浣滆呯畝浠?/span>

ShriKant Vashishtha 褰撳墠鏄嵃搴ata Consultancy Services Limited (TCS)鍏徃鐨勮В鍐蟲柟妗堟灦鏋勫笀銆?/td>


]]>Servlet 2.4瑙勮寖闃呰絎旇(2-3绔?http://www.tkk7.com/doulei/archive/2006/06/14/52866.htmlHello JavaHello JavaWed, 14 Jun 2006 15:43:00 GMThttp://www.tkk7.com/doulei/archive/2006/06/14/52866.htmlhttp://www.tkk7.com/doulei/comments/52866.htmlhttp://www.tkk7.com/doulei/archive/2006/06/14/52866.html#Feedback1http://www.tkk7.com/doulei/comments/commentRss/52866.htmlhttp://www.tkk7.com/doulei/services/trackbacks/52866.html 絎?绔?The servlet Interface
鎵鏈塖ervlet瀹炵幇鍚屼竴鎺ュ彛錛歋ervlet,瀹冩湁涓や釜鐩存帴鐨勫瓙綾伙細GenericServlet鍜孒ttpServlet.
2.1 Request Handle method
鍩烘湰鐨凷ervlet浣跨敤service()鏂規硶澶勭悊璇鋒眰,鍥犱負鍙兘鏈夊涓鎴風殑璇鋒眰鍦╯ervice()涓伐浣滐紝鎵浠ュ紑鍙戣呭繀欏昏鑰冭檻鍒板茍鍙戠殑鎯呭喌銆?span style="font-weight: bold;">
SRV.2.1.1 HTTP Specific Request Handling Methods
HttpServlet瀹氫箟浜嗕互涓?涓柟娉曪細

  • doGet for handling HTTP GET requests
  • doPost for handling HTTP POST requests
  • doPut for handling HTTP PUT requests
  • doDelete for handling HTTP DELETE requests
  • doHead for handling HTTP HEAD requests
  • doOptions for handling HTTP OPTIONS requests
  • doTrace for handling HTTP TRACE requests
SRV.2.1.2 Additional Methods
聽聽聽
鍏充簬Http鐨勫嚑涓檮鍔犲懡浠EAD,DELETE,PUT,OPTIONS,TRACE銆?br />SRV.2.1.3 Conditional GET Support
榪欎釜鈥滳onditional GET鈥滄寚鐨勬槸榪欐牱鐨勮姹傦細鍙湁鎵璇鋒眰鐨勮祫婧愬湪涓涓壒瀹氭椂闂翠箣鍚庤淇敼榪囷紝鎵嶈鍙戦佺粰瀹㈡埛绔?br /> HttpServlet閲岀殑getLastModified()鏂規硶鎻愪緵浜嗚繖鏂歸潰鐨勬敮鎸併?span style="font-weight: bold;">
SRV.2.2 Number of Instances
聽聽聽 鍦?.4涔嬪墠鐨勭増鏈腑錛孲ervlet鏈変袱縐嶆柟寮忥細
聽聽聽 絎竴縐嶆柟寮忔槸瀵逛簬涓涓猄ervlet錛屽彧鏈変竴涓疄渚嬶紝榪欎釜瀹炰緥鍙互鍚屾椂鏈嶅姟澶氫釜鐢ㄦ埛錛岃繖鏄粯璁ょ殑銆?br /> 聽聽聽 鍙︿竴縐嶆柟寮忔槸涓涓猄ervlet鐨勫疄渚嬪彧鑳芥湇鍔′竴涓鎴鳳紝榪欐牱灝遍渶瑕佷竴涓猄ervlet鐨凱ool錛屽綋澶氫釜鐢ㄦ埛榪炴帴鏃訛紝闇瑕佸緩绔嬪涓猄ervlet瀹炰緥銆傝繖縐嶆柟寮忛渶瑕丼ervlet瀹炵幇SingleThreadModel鎺ュ彛銆?br /> 聽聽聽 浠ヤ笂涓ょ鏂瑰紡鐨勬瘮杈冿細絎竴縐嶆柟寮忛渶瑕佽冭檻鍚屾闂錛堝洜涓轟竴涓猄ervlet鐨勫疄渚嬫湇鍔″涓敤鎴鳳紝Servlet涓殑鏁版嵁鎴愬憳闇瑕佸悓姝?,絎簩縐嶆柟寮忎笉闇瑕佽冭檻鍚屾闂銆?br /> 聽聽聽
SRV.2.3 Servlet Life Cycle
聽聽 1.杞藉叆錛毬犅犅?/span>
聽聽聽 搴旂敤鏈嶅姟鍣ㄥ彲鑳藉湪鍚姩鏃惰澆鍏ervlet鎴栬呭湪絎竴涓姹傚埌鏉ユ椂寤惰繜鍔犺澆,杞藉叆鐨勬柟寮忎篃鏄嬌鐢ㄧ被瑁呰澆鍣紝鍜屾櫘閫氱殑Java Object娌℃湁浠涔堝尯鍒?br /> 聽聽聽 2.鍒濆鍖栵細
聽聽聽 鍒濆鍖栨椂鍙兘閬囧埌閿欒錛岃繖鏃朵細鎶涘嚭ServletException鎴栬匲naviliableException寮傚父
聽聽聽 3.澶氱嚎紼嬶細
聽聽聽 闇瑕佹敞鎰忕殑涓鐐規槸錛屾渶濂戒笉瑕佸service()鏂規硶榪涜synchronize淇グ銆傝繖鏍風殑璇濆氨涓嶈兘浣跨敤綰跨▼姹狅紝鑰屽繀欏誨request搴忓垪鍖?br /> 聽聽聽 4.澶勭悊璇鋒眰鏃剁殑閿欒澶勭悊錛?/span>
聽聽聽 濡傛灉鍦ㄨ繖鏃跺彂鐢熷紓甯革紝鍙互鍙戦乁navailableException鎴栬匰ervletException,濡傛灉鍙戦佷簡 ServletException,鏈嶅姟鍣ㄥ繀欏昏鎯沖姙娉曟竻闄equest銆傚鏋滃彂閫佷簡UnavailableException,鏈変袱縐嶉夋嫨錛屽鏋滄槸姘? 涔呯殑鐨勬棤鏁堬紝闇瑕佽皟鐢╠estroy()錛屽茍鎽ф瘉Servlet錛屽鏋滆繖鏃跺鎴風璁塊棶姝ervlet錛屽畠灝嗕細鏀跺埌404閿欒銆傚鏋滄槸涓存椂鐨勬棤鏁堬紝瀹瑰櫒闇 瑕佹嫆緇濅換浣曞埌姝ervlet鐨勮姹傦紝騫朵笖榪斿洖503閿欒
聽聽 5.綰跨▼瀹夊叏鐨勮瘽棰?/span>
聽聽聽 request鍜宺esponse榪欎袱涓璞′笉鏄嚎紼嬪畨鍏ㄧ殑錛屾墍浠ヤ笉瑕佸湪service()鏂規硶澶栭潰浣跨敤瀹冧滑錛屽畠浠殑寮曠敤涓嶅簲璇ヤ紶緇欏彟涓涓嚎紼嬩腑鐨勫璞★紝濡傛灉涓瀹氳璁塊棶瀹冧滑錛屽繀欏誨浣跨敤榪欎袱涓璞$殑浠g爜榪涜鍚屾銆?br style="font-weight: bold; text-decoration: underline;" />聽聽聽 6.鏈嶅姟鐨勭粨鏉?/span>
聽聽 Servlet瀹瑰櫒騫朵笉闇瑕佷竴鐩翠繚鎸佷竴涓猄ervlet澶勪簬榪愯鐘舵侊紝鍦ㄩ噴鏀句竴涓猻ervlet鏃訛紝浼氳皟鐢╠estroy鏂規硶錛屽綋璋冪敤destroy鏂規硶涔嬪墠錛屽鍣ㄤ細涓鐩寸瓑鍒版墍鏈夌殑綰跨▼閮藉畬鎴愪簡鍦╯ervice()鏂規硶涓殑宸ヤ綔銆?br />
絎?绔?Servlet Context
SRV.3.1 Introduction to the ServletContext Interface
Servlet Context錛屼粠Servlet鐨勮搴︽潵鐪嬶紝鍙互鐞嗚В涓哄畠鎵灞濿eb搴旂敤紼嬪簭錛孲ervletContext鏄竴涓帴鍙o紝Servlet瀹瑰櫒鐨勬彁渚涘晢蹇呴』瑕佸疄鐜拌繖涓帴鍙c?br /> ServletContext鑳藉仛浠涔堝憿錛熷畠鍙互鎶婁簨浠惰褰曞埌鏃ュ織涓紝鑾峰緱璧勬簮鐨刄RL錛岃繕鍙互鍒╃敤ServletContext瀛樻斁涓浜涙墍鏈塖ervlet閮借兘鍏變韓鐨勬暟鎹?br /> ServletContext鏈変竴涓礬寰勶紝渚嬪http://www.mycorp.com/catalog錛岃繖閲岀殑cataqlog灝辨槸ServletContext鐨勮礬寰勶紝鎵鏈夌殑瀵筩atalog鐨勮姹傞兘浼氬叧鑱斿埌榪欎釜ServletContext.
SRV.3.2 Scope of a ServletContext Interface

鍦⊿ervlet瀹瑰櫒涓紝姣忎釜ServletContext閫氬父鍙湁涓涓疄渚嬨傚綋Web瀹瑰櫒鏄垎甯冨紡鐨勯儴緗插湪澶氬彴鏈哄櫒涓婃椂錛岄偅涓涓猄ervletContext鍦ㄦ瘡涓狫VM涓婇兘鏈変竴涓疄渚嬨?br /> 鍦⊿ervlet瀹瑰櫒涓紝浣嗘病鏈夐儴緗茬殑Servlet涔熸槸鍏佽鐨勶紝榪欑Servlet灞炰簬涓涓己鐪佺殑ServletContext錛岃繖縐嶇己鐪佺殑ServletContext涓嶈兘琚垎甯冨埌澶氫釜JVM涓娿?br />SRV.3.3 Initialization Parameters
鍦⊿ervletContext鎺ュ彛涓紝鏈変袱涓柟娉曞彲浠ョ敤鏉ヨ幏寰楀垵濮嬪寲鍙傛暟錛?span style="font-weight: bold;">
鈥?getInitParameter
鈥?getInitParameterNames
SRV.3.4 Context Attributes
鍦⊿ervletContext涓紝鏈?涓柟娉曞彲浠ョ敤鏉ヨ緗拰綆$悊ServletContext鐨勫睘鎬э細
鈥?setAttribute
鈥?getAttribute
鈥?getAttributeNames
鈥?removeAttribute
SRV.3.4.1 Context Attributes in a Distributed Container
ServletContext涓殑灞炴у彧鍦ㄦ湰鍦扮殑JVM涓湁鏁堬紝涓嶈兘琚垎甯冨紡鐜涓繍琛屼簬鍏跺畠JVM涓殑Servlet璁塊棶錛屽鏋滈渶瑕佸湪鍒嗗竷寮忕幆澧冧腑鍏變韓鏁版嵁錛屽彲浠ユ妸鏁版嵁瀛樻斁鍦⊿ession錛屾暟鎹簱鎴朎JB涓?br />SRV.3.5 Resources
璧勬簮鎸囩殑鏄湪Web搴旂敤紼嬪簭涓殑涓浜涢潤鎬佺殑鍐呭錛屽闈欐丠TML欏甸潰錛屽浘鐗囩瓑絳夈係ervletContext鎻愪緵浜嗕袱涓柟娉曟潵璁塊棶榪欎簺璧勬簮錛?br /> 鈥?getResource
鈥?getResourceAsStream
榪欎袱涓柟娉曢兘鎺ュ彈涓涓猄tring鍨嬪弬鏁幫紝瀹冩寚瀹氫簡涓涓互"/"寮澶寸殑鐩稿浜庤繖涓猄ervletContext鐨勮祫婧愯礬寰勩傝祫婧愬彲浠ユ斁鍦ㄥ悓涓鏈嶅姟鍣ㄤ笂錛屾垨鑰呬笉鍚屾湇鍔″櫒涓婏紝鎴栬呭湪涓涓猈eb搴旂敤紼嬪簭鐨刉AR鍖呬腑銆?br /> 闇瑕佹敞鎰忕殑鏄紝榪欎袱涓柟娉曚笉鑳界敤鏉ヨ幏鍙栧姩鎬佸唴瀹癸紝濡傛灉鎴戜滑鐢ㄨ繖涓や釜鏂規硶鍘誨彇涓涓狫SP欏甸潰錛岃繑鍥炵殑灝嗘槸JSP欏甸潰鐨勬簮浠g爜銆?br /> getResourcePaths(String path)鏂規硶鍙互鐢ㄦ潵鑾峰彇涓涓祫婧愬垪琛ㄣ?br />SRV.3.6 Multiple Hosts and Servlet Contexts
Web鏈嶅姟鍣ㄥ彲鑳芥敮鎸佸涓煙鍚嶅垎浜竴涓狪P鍦板潃錛岃繖縐嶉厤緗彨鍋氣滆櫄鎷熶富鏈衡濄傚湪榪欑鎯呭喌涓嬶紝姣忎釜铏氭嫙涓繪満蹇呴』瑕佹湁鑷繁鐨凷ervletContext錛岃屼笉鑳藉叡浜竴涓猄ervletContext銆?br />SRV.3.7 Reloading Considerations
鎵鏈夌殑Servlet鍜屽畠浠紩鐢ㄧ殑綾誨繀欏婚兘澶勪簬涓涓被瑁呰澆鍣ㄨ寖鍥村唴銆?br />SRV.3.7.1 Temporary Working Directories
姣忎竴涓猄ervletContext閮介渶瑕佷竴涓復鏃剁洰褰曪紝騫朵笖閫氳繃 javax.servlet.context.tempdir灞炴ф寚瀹氥係ervlet瀹瑰櫒涓嶉渶瑕佺鐞嗚繖涓復鏃惰礬寰勭殑鍐呭錛屼絾鏄紜繚涓涓? ServletContext鐨勪復鏃剁洰褰曞鍏朵粬鐨凷ervletContext鏄笉鍙鐨勩?br />


]]>
鍔ㄦ佷唬鐞嗗拰AOP鐨勪竴鐐瑰涔犲績寰?/title><link>http://www.tkk7.com/doulei/archive/2006/06/14/52841.html</link><dc:creator>Hello Java</dc:creator><author>Hello Java</author><pubDate>Wed, 14 Jun 2006 12:38:00 GMT</pubDate><guid>http://www.tkk7.com/doulei/archive/2006/06/14/52841.html</guid><wfw:comment>http://www.tkk7.com/doulei/comments/52841.html</wfw:comment><comments>http://www.tkk7.com/doulei/archive/2006/06/14/52841.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/doulei/comments/commentRss/52841.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/doulei/services/trackbacks/52841.html</trackback:ping><description><![CDATA[     鎽樿: 涓銆佹渶鍒濈殑璁捐 鏈変竴涓粡钀ヤ竴瀹跺湪綰垮晢搴楃殑瀹㈡埛錛屽湪榪欎釜鍟嗗簵緋葷粺涓紝鏈変竴涓緵綆$悊鍛樹嬌鐢ㄧ殑綆$悊瀹氬崟鐨勭被錛屼唬鐮佸涓嬶細 1 銆佹帴鍙? Interface OrderService{ 聽 聽 聽聽聽聽聽聽聽 public boolean showOrders();// 瀵熺湅瀹氬崟 } 錛掋佸疄...  <a href='http://www.tkk7.com/doulei/archive/2006/06/14/52841.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/doulei/aggbug/52841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/doulei/" target="_blank">Hello Java</a> 2006-06-14 20:38 <a href="http://www.tkk7.com/doulei/archive/2006/06/14/52841.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://doubaye.com" target="_blank">亚洲AV日韩综合一区</a>| <a href="http://18yinren.com" target="_blank">亚洲国产精品无码久久SM</a>| <a href="http://52099jy.com" target="_blank">激情综合亚洲色婷婷五月</a>| <a href="http://ziguang1688.com" target="_blank">99免费在线观看视频</a>| <a href="http://kssijia.com" target="_blank">中文字幕亚洲精品资源网</a>| <a href="http://1897tao.com" target="_blank">三年片在线观看免费大全电影 </a>| <a href="http://740740740.com" target="_blank">波多野结衣久久高清免费 </a>| <a href="http://26cgw.com" target="_blank">国产精品亚洲а∨无码播放不卡</a>| <a href="http://eldadhagar.com" target="_blank">免费高清资源黄网站在线观看</a>| <a href="http://goodwaysi.com" target="_blank">亚洲av色香蕉一区二区三区蜜桃</a>| <a href="http://senimei9.com" target="_blank">免费看的一级毛片</a>| <a href="http://www-7607.com" target="_blank">无码天堂亚洲国产AV</a>| <a href="http://kaixininvestment.com" target="_blank">国产一级一片免费播放i</a>| <a href="http://cijishiye.com" target="_blank">深夜a级毛片免费无码</a>| <a href="http://yinyinai155.com" target="_blank">gogo全球高清大胆亚洲</a>| <a href="http://kfdingrui.com" target="_blank">一个人晚上在线观看的免费视频</a>| <a href="http://cqshangshu.com" target="_blank">国产精品亚洲综合专区片高清久久久 </a>| <a href="http://ytsp88.com" target="_blank">99久久国产热无码精品免费 </a>| <a href="http://kingrel.com" target="_blank">四虎国产精品成人免费久久</a>| <a href="http://dsfv1.com" target="_blank">亚洲AV伊人久久青青草原</a>| <a href="http://szzdjl.com" target="_blank">一个人看的免费观看日本视频www</a>| <a href="http://sdhuamo.com" target="_blank">国产亚洲人成网站观看</a>| <a href="http://mtripmall.com" target="_blank">24小时日本韩国高清免费</a>| <a href="http://fuhui123.com" target="_blank">亚洲国产成人精品无码一区二区</a>| <a href="http://hgbookvip.com" target="_blank">国内自产少妇自拍区免费</a>| <a href="http://www-993789.com" target="_blank">污污视频网站免费观看</a>| <a href="http://2828228.com" target="_blank">亚洲精品无码久久久久</a>| <a href="http://alankell.com" target="_blank">国产精品1024永久免费视频</a>| <a href="http://jlzjjy.com" target="_blank">亚洲av无码专区在线电影天堂</a>| <a href="http://udlmw.com" target="_blank">国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 </a>| <a href="http://0827fang.com" target="_blank">毛片a级毛片免费观看免下载</a>| <a href="http://zz198.com" target="_blank">色视频在线观看免费</a>| <a href="http://cjsyw123.com" target="_blank">亚洲免费在线播放</a>| <a href="http://1212777.com" target="_blank">性感美女视频在线观看免费精品</a>| <a href="http://wangdei.com" target="_blank">伊人久久国产免费观看视频</a>| <a href="http://zfjhw.com" target="_blank">亚洲资源在线视频</a>| <a href="http://23usxx.com" target="_blank">免费v片视频在线观看视频</a>| <a href="http://7778kk.com" target="_blank">欧洲人免费视频网站在线</a>| <a href="http://cqyouyongpx.com" target="_blank">亚洲午夜成人精品无码色欲</a>| <a href="http://uiui6.com" target="_blank">亚洲精品午夜无码专区</a>| <a href="http://xww678.com" target="_blank">色婷婷7777免费视频在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>