锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品亚洲视频在线观看,亚洲av无码偷拍在线观看,亚洲成人黄色在线观看http://m.tkk7.com/tij/archive/2008/05/06/198692.html紲炴湭蹇呰繖涔堝啓紲炴湭蹇呰繖涔堝啓Tue, 06 May 2008 06:11:00 GMThttp://m.tkk7.com/tij/archive/2008/05/06/198692.htmlhttp://m.tkk7.com/tij/comments/198692.htmlhttp://m.tkk7.com/tij/archive/2008/05/06/198692.html#Feedback1http://m.tkk7.com/tij/comments/commentRss/198692.htmlhttp://m.tkk7.com/tij/services/trackbacks/198692.html鏆傛椂鎯沖埌浜嗚繖涔堝錛?/p>

eclilpse錛堟棩铓, 鏈堣殌錛?涓?sun

hibernate錛堝啲鐪狅級 涓?spring

jakarta錛堥泤鍔犺揪錛変笌java

tomcat閲屽悇涓粍浠朵粠涓婂埌涓嬶細(xì)catalina錛堣繙紼嬭槳鐐告満錛塼omcat錛堥泟鐚槳鐐告満f14錛塨ootstap
(寮曞錛塭ngine(鍙戝姩鏈猴級host context



紲炴湭蹇呰繖涔堝啓 2008-05-06 14:11 鍙戣〃璇勮
]]>
checked exception鍜寀nchecked exception http://m.tkk7.com/tij/archive/2008/05/06/198612.html紲炴湭蹇呰繖涔堝啓紲炴湭蹇呰繖涔堝啓Mon, 05 May 2008 18:03:00 GMThttp://m.tkk7.com/tij/archive/2008/05/06/198612.htmlhttp://m.tkk7.com/tij/comments/198612.htmlhttp://m.tkk7.com/tij/archive/2008/05/06/198612.html#Feedback0http://m.tkk7.com/tij/comments/commentRss/198612.htmlhttp://m.tkk7.com/tij/services/trackbacks/198612.html unchecked exception涔熷氨鏄痳untime excerption 瀹冪殑鎶涘嚭閫氬父鏄洜涓烘垜浠▼搴忚嚜韜殑闂 涔熷氨鏄 鎴戜滑緙栫殑紼嬪簭闂湁闂 鎴戜滑涓嶇敤鎶涘嚭榪欑被寮傚父 緙栬瘧鍣ㄤ細(xì)甯垜浠姏鍑虹殑
鑰宑hecked exception灝辨槸鍍廔OException榪欐牱鐨勫紓甯?閫氬父鏄渶瑕佺▼搴忓憳鎶涘嚭鐨?涔熸槸閫氳繃try catch鎴栬卼hrow鏉ユ姏鍑虹殑


紲炴湭蹇呰繖涔堝啓 2008-05-06 02:03 鍙戣〃璇勮
]]>
MessageResourceshttp://m.tkk7.com/tij/archive/2008/05/04/198115.html紲炴湭蹇呰繖涔堝啓紲炴湭蹇呰繖涔堝啓Sun, 04 May 2008 07:35:00 GMThttp://m.tkk7.com/tij/archive/2008/05/04/198115.htmlhttp://m.tkk7.com/tij/comments/198115.htmlhttp://m.tkk7.com/tij/archive/2008/05/04/198115.html#Feedback0http://m.tkk7.com/tij/comments/commentRss/198115.htmlhttp://m.tkk7.com/tij/services/trackbacks/198115.html1.usage of MessageResources

import org.apache.struts.util.MessageResources;

MessageResources messages =MessageResources.getMessageResources("cn/edu/ouc/ky2/ApplicationResources");

messages.getMessage("experts.MAJOR_NAME")

2.鏅氱殑java綾?榪欐牱鏇翠負(fù)閫氱敤涓浜?/p>

MessageResources resources =(MessageResources) pageContext.getServletContext().getAttribute(Globals.MESSAGES_KEY);
out.println(resources.getMessage("experts.MAJOR_NAME"));

MessageResources messages = getResources(request);

鍦ˋction綾諱腑瀹氫箟浜唃etResources(HttpServletRequest request)鏂規(guī)硶錛岃鏂規(guī)硶榪斿洖褰撳墠榛樿鐨凪essageResources瀵硅薄錛屽畠?yōu)畞瑁呬簡Resource Bundle涓殑鏂囨湰鍐呭銆傛帴涓嬫潵Action綾誨氨鍙互閫氳繃MessageResources瀵硅薄鏉ヨ闂枃鏈唴瀹廣備緥濡傦紝濡傛灉瑕佽鍙栨秷鎭痥ey涓?#8220;hello.jsp.title”瀵瑰簲鐨勬枃鏈唴瀹癸紝鍙互璋冪敤MessageResources綾葷殑getMessage(String key)鏂規(guī)硶錛?br /> String title=messages.getMessage("hello.jsp.title");


紲炴湭蹇呰繖涔堝啓 2008-05-04 15:35 鍙戣〃璇勮
]]>
Log4j鏈綆鍏ラ棬http://m.tkk7.com/tij/archive/2008/05/04/198085.html紲炴湭蹇呰繖涔堝啓紲炴湭蹇呰繖涔堝啓Sun, 04 May 2008 07:05:00 GMThttp://m.tkk7.com/tij/archive/2008/05/04/198085.htmlhttp://m.tkk7.com/tij/comments/198085.htmlhttp://m.tkk7.com/tij/archive/2008/05/04/198085.html#Feedback1http://m.tkk7.com/tij/comments/commentRss/198085.htmlhttp://m.tkk7.com/tij/services/trackbacks/198085.htmlLog4j鏈綆鍏ラ棬

by zhlmmc

Log4j瀹炲湪鏄緢鐔熸?zhèn)夊Q屽嚑涔庢墍鏈夌殑Java欏圭洰閮界敤瀹冨晩銆備絾鏄垜紜竴鐩存病鏈夋悶鏄庣櫧銆傜粓浜庢湁涓澶╂垜鍙椾笉浜嗕簡錛屽畾涓嬪績鍘葷湅浜嗕竴鎶婃枃妗o紝鎵嶄袱涓皬鏃訛紝鎴戠粓浜庢悶鏄庣櫧浜嗐備竴鑸儏鍐典笅Log4j鎬繪槸鍜?/span>Apache Commons-logging涓璧風(fēng)敤鐨勶紝鎴戜篃灝變竴璧蜂粙緇嶅惂銆傚浜嗕釜涓滆タ涓嶆槸鏇撮夯鐑︼紝鑰屾槸鏇寸畝鍗曪紒

<!--[if !supportLists]-->涓銆?/span><!--[endif]-->Log4j鐨勭畝鍗曟濇兂

Log4j鐪熺殑寰堢畝鍗曪紝綆鍗曞埌浠や漢鍙戞寚鐨勫湴姝ャ備笉鏄璁板綍鏃ュ織鍚楋紵閭e氨緇欎綘涓涓?/span>Log錛岀劧鍚庝綘鐢?/span>Log鏉ュ啓涓滆タ灝辮浜嗭紝鍏堟潵涓涓畬鏁寸被紺轟緥錛?/span>

package test;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class Test {

        static Log log = LogFactory.getLog(Test.class);

        public void log(){

           log.debug("Debug info.");

           log.info("Info info");

           log.warn("Warn info");

           log.error("Error info");

           log.fatal("Fatal info");

        }

        /**

         * @param args

         */

        public static void main(String[] args) {

           Test test = new Test();

           test.log();

        }

}

鍒曪紝鐪嬪畬榪欑瘒鏂囩珷浣犲氨浼?xì)瑙夊緱寰埥巰鍗曚簡銆?/span>

        Log4j榛樿鎶婃棩蹇椾俊鎭垎涓轟簲涓瓑綰?/span>

        debug < info < warn < error < fatal

铏界劧鍙互鑷繁娣誨姞絳夌駭錛屼絾鏄垜瑙夊緱娌℃湁蹇呰錛屼簲涓鐢ㄤ簡鍚э紒浣犺鍐欏叆淇℃伅鐨勬椂鍊欏氨鎶婁俊鎭綊涓轟簲涓瓑綰т腑鐨勪竴涓紝鐒跺悗璋冪敤鐩稿簲鐨勫嚱鏁板嵆鍙?/span>

    鍒嗕簲涓瓑綰у埌搴曟湁浠涔堢敤鍛紵鏃ュ織淇℃伅鍒板簳鍐欏埌鍝噷鍘諱簡錛?/span>

    “LogFactory.getLog(Test.class)”鍙堟槸浠涔堟剰鎬濇崗錛熸帴鐫寰涓嬬湅鍚э紒

Log4j鐨勫叧閿箣澶勫湪浜庡畠鐨勭戶鎵挎濇兂銆備篃灝辨槸涓涓?/span>Log鍙互緇ф壙鍙﹀涓涓?/span>Log鐨勫睘鎬э紙杈撳嚭鍒板摢閲岋紝鏃ュ織絳夌駭錛屾棩蹇楁牸寮忕瓑絳夛級銆傛庝箞緇ф壙錛?/span>

Log4j鏄牴鎹?/span>Log鐨勫悕瀛楁潵鍒ゆ柇緇ф壙鍏崇郴鐨勶紝姣斿錛?/span>

鍚嶅瓧涓?#8220;com.zhlmmc.lib”鐨?/span>Log灝辨槸“com.zhlmmc.lib.log”鐨?/span>parent錛屾槑鐧戒簡鍚э紒Log4j榪樻湁涓涓?/span>rootLogger錛岀浉褰撲簬Java鐨?/span>Object銆?/span>

鍥炶繃澶存潵鐪?#8220;LogFactory.getLog(Test.class)”榪欓噷鐨?#8220;Test.class”浜嬪疄涓婁紶榪涘幓鐨勬槸Test榪欎釜綾葷殑瀹屾暣璺緞錛堝寘鍚?/span>+綾誨悕錛夛紝“test.Test”銆傝繖鏍峰鏋滃瓨鍦?#8220;test”榪欎釜Log閭d箞Test榪欎釜Log灝辯戶鎵垮畠錛屽惁鍒欏氨緇ф壙rootLogger銆?/span> 

    閭e叿浣撶殑Log灞炴ф槸鍦ㄥ摢閲屽畾涔夌殑鍛紵

<!--[if !supportLists]-->浜屻?/span><!--[endif]-->甯歌鐨勯厤緗枃浠?/span>

铏界劧鍙互鐢?/span>xml鎴栬呭湪榪愯鏃剁敤Java鏉ラ厤緗?/span>Log4j錛屼絾榪樻槸properties鏂囦歡濂界敤鍟婏紒

log4j.rootLogger=info, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

鍒嗘瀽涓涓嬶細(xì)

絎竴琛岋紝閰嶇疆log4j.rootLogger浣犳槑鐧藉惂銆傚簲涓哄畠鏄牴錛屾誨緱閰嶇疆涓涓嬶紝鍚﹀垯鍒殑Log緇ф壙浠涔堝晩銆傚叾浠栫殑Log鍙互閰嶇疆涔熷彲浠ヤ笉閰嶇疆銆傜瓑鍙峰悗闈㈢殑絎竴涓弬鏁拌〃紺烘棩蹇楃駭鍒紝鍙互濉簲涓駭鍒腑鐨勪竴縐嶏紝鍚庨潰鐨勫弬鏁伴兘鏄Log鐭ラ亾杈撳嚭鍒板摢閲岋紝濡傛灉浣犳兂璁╂棩蹇楄緭鍑哄埌涓や釜鍦版柟灝卞姞涓や釜杈撳嚭鍙傛暟錛屾瘮濡傦細(xì)

 

log4j.rootLogger=info, stdout, file

榪欓噷鐨?/span>info琛ㄧず錛岃Log鐨勬棩蹇楃駭鍒負(fù)info錛屾墍鏈夌駭鍒皬浜?/span>info鐨勬棩蹇楅兘涓嶄細(xì)琚褰曘傛瘮濡備嬌鐢ㄨ繖涓厤緗枃浠剁殑璇濓紝鎴戝垰寮濮嬩婦鐨勯偅涓被涓?/span>

 

log.debug("Debug info.");

榪欏彞璇濇槸涓嶈搗浣滅敤鐨勶紝鍥犱負(fù)debug鐨勭駭鍒皬浜?/span>info銆傝繖鏍峰氨寰堝鏄撴帶鍒朵粈涔堜俊鎭湪璋冭瘯鐨勬椂鍊欒鏄劇ず錛屼粈涔堜俊鎭湪鍙戝竷鐨勬椂鍊欒鍘繪帀銆傝繖浜涢兘涓嶇敤鏀逛唬鐮侊紝寰堟柟渚垮惂銆?/span>

浣嗭紝stdout鍜?/span>file鍙堟槸浠涔堝憿錛?/span>

鎺ョ潃寰涓嬬湅錛屽氨鏄厤緗?/span>stdout浜嗭紝榪欎釜鍚嶅瓧鏄殢渚垮彇鐨勶紝浣犲彲浠ュ彨瀹?/span>A錛?/span>

 

log4j.appender.A=org.apache.log4j.ConsoleAppender

閭d箞涓婇潰鐨?/span>rootLogger鐨勫弬鏁?/span>stdout涔熻鏀規(guī)垚A錛屽叾浠栫敤鍒扮殑鍦版柟褰撶劧涔熻鏀廣傝繖閲岀殑鍏抽敭涓嶆槸鍚嶅瓧錛岃屾槸appender綾誨瀷錛屾瘮濡傝繖閲岀殑“ConsoleAppender”錛岀湅鏄庣櫧浜嗗惂錛岃緭鍑哄埌Console銆傚悗闈袱琛岄兘鏄緗棩蹇楁牸寮忕殑錛屼竴鑸儏鍐典笅浣犲氨鐓ф妱鍚с傛棦鐒舵槸鏈綆鍏ラ棬鍏蟲敞浜庣悊瑙?/span>Log4j鐨勫伐浣滃師鐞嗭紝鎴戝氨涓嶄粙緇?/span>file綾誨瀷鐨?/span>appender浜嗭紝涓鎼滀竴澶ф妸銆?/span>

鍦ㄥ疄闄呯殑欏圭洰寮鍙戜腑錛屽緢鍙兘閬囧埌鎵寮曠敤鐨勫寘鐢?/span>Log4j鏉ヨ褰曟棩蹇楋紝姣斿Hibernate銆傞偅涔堝湪榪欓噷浣犲彲浠ュ緢瀹規(guī)槗鐨勬帶鍒惰繖涓寘濡備綍璁板綍鏃ュ織銆傛瘮濡傚湪涓婇潰鐨勯厤緗枃浠朵腑鍔犱竴琛岋細(xì)

 

log4j.logger.org.hibernate=fatal

    閭d箞鎵鏈?/span>org.hibernate鍖呬笅闈㈢殑綾誨氨鍙細(xì)鏄劇ず寰堝皯鐨勪俊鎭紝鍥犱負(fù)fatal鐨勭駭鍒渶楂樺晩銆?/span>

<!--[if !supportLists]-->涓夈?/span><!--[endif]-->閮ㄧ講

鍒曪紝榪欏彲涓嶆槸閮ㄧ講Tomcat銆傛妸log4j鐨勫寘鍜?/span>commons-logging鐨勫寘錛堝姞鍦ㄤ竴璧鋒墠涓や釜錛夋斁鍒?/span>classpath涓嬮潰銆傜劧鍚庢妸閰嶇疆鏂囦歡淇濆瓨涓?/span>log4j.properties錛屼篃鏀懼湪classpath涓嬮潰錛堝鏋滅敤Eclipse鐨勮瘽錛屾斁鍦?/span>src鐩綍涓嬪嵆鍙級銆傜劧鍚庝綘灝卞彲浠ヨ窇浜嗐?/span>



紲炴湭蹇呰繖涔堝啓 2008-05-04 15:05 鍙戣〃璇勮
]]>
actionMessages()錛宎ctionError()浠嬬粛http://m.tkk7.com/tij/archive/2008/05/04/198077.html紲炴湭蹇呰繖涔堝啓紲炴湭蹇呰繖涔堝啓Sun, 04 May 2008 07:00:00 GMThttp://m.tkk7.com/tij/archive/2008/05/04/198077.htmlhttp://m.tkk7.com/tij/comments/198077.htmlhttp://m.tkk7.com/tij/archive/2008/05/04/198077.html#Feedback2http://m.tkk7.com/tij/comments/commentRss/198077.htmlhttp://m.tkk7.com/tij/services/trackbacks/198077.html灝界Struts妗嗘灦鎻愪緵浜嗘湁鏁堢殑寮傚父澶勭悊鏈哄埗錛屼絾涓嶈兘淇濊瘉澶勭悊鎵鏈夌殑閿欒錛岃繖鏃禨truts妗嗘灦浼?xì)鎶婇敊璇姏缁橶eb瀹瑰櫒錛屽湪榛樿鎯呭喌涓媁eb瀹瑰櫒浼?xì)鍚戠敤鎴穻箯瑙堝櫒鐩存帴杩斿洖鍘熷淇℃伅銆傚鏋滄兂閬垮厤鐩存帴璁╃敤鎴風(fēng)湅鍒拌繖浜涘師濮嬩俊鎭紝鍙互鍦╳eb.xml涓厤緗?lt;error-page>鍏冪礌錛屼互涓嬩唬鐮佹紨紺轟簡濡備綍閬垮厤鐢ㄦ埛鐪嬪埌HTTP 404銆丠TTP 500閿欒鍜孍xception寮傚父銆?br />
web.xml:
  <error-page>
    <error-code>404</error-code>
    <location>/exception/error404.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/exception/error500.jsp</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/exception/default.jsp</location>
  </error-page>
褰揥EB瀹瑰櫒鎹曡幏鍒癳xception-type鎴杄rror-code鎸囧畾鐨勯敊璇椂灝嗚煩鍒扮敱location鎸囧畾鐨勯〉闈€?br />
飦?闂錛氬綋form bean 涓哄姩鎬乥ean鏃訛紝鍦╝ction涓棤娉曞form bean鏁版嵁榪涜楠岃瘉錛屽洜涓篺ormbean娌℃湁鍏蜂綋瀹炵幇綾匯俛ction涓棤娉曞紩鐢?br /> 飦?ActionError/ActionErrors/ActionMessage/ActionMessages:

鏈夋椂鍊欎綘闇瑕佸悜鐢ㄦ埛鎻愪緵鐩稿叧澶勭悊淇℃伅錛屽寘鎷〃鍗曢獙璇佹椂鍙戠幇閿欒絳夈?br /> 1. 鐩稿叧綾諱粙緇嶏細(xì)
ActionMessage錛氱敤浜庝繚瀛樹竴涓笌璧勬簮鏉熷搴旂殑鎻愮ず淇℃伅銆備富瑕佹瀯閫犲嚱鏁板錛?br /> ActionMessage(String message)錛?br /> ActionMessage(String message,paramater)銆?br />
ActionMessages:鐢ㄤ簬淇濆瓨澶氫釜ActionMessage銆傚茍鍦╤tml:errors 鍜宧tml:messages涓搗浣滅敤銆?br /> 涓昏鏋勯犲嚱鏁幫細(xì)
ActionMessages().
涓昏鏂規(guī)硶鏄痑dd(String property,ActionMessage message)
ActionMessages鏈変竴涓狧ashMap綾誨瀷messages淇濆瓨澶氫釜ActionMessage瀵硅薄錛屾瘡涓狝ctionMessage瀵硅薄閮芥湁鍞竴鐨勪竴涓猵roperty鏍囪瘑銆傝繖涓猵roperty鍙互鏄嚜瀹氫箟鐨勪換鎰忓瓧絎︿覆錛屼篃鍙互鐢眔rg.apache.struts.action.ActionMessages.GLOBAL_MESSAGE鎸囧畾
html:messages/html:errors浣跨敤property灞炴ц闂煇涓祫婧?br />
ActionErrors錛氱敤浜庝繚瀛樹竴涓笌璧勬簮鏉熷搴旂殑閿欒淇℃伅銆傜敤娉曡窡ActionMessages宸笉澶氥?br /> ActionError涓嶈禐鎴愪嬌鐢ㄣ?br />

2. 鐗堟湰錛?br /> struts1.1涓敤ActionErrors鎶ュ憡閿欒錛岀敤ActionMessages鎻愪緵淇℃伅銆?br /> 鍦╯truts1.2涓嬌鐢ˋctionMessages鎻愪緵淇℃伅鍜岄敊璇紝涓嶈禐鎴愪嬌鐢ˋctionError
struts1.3涓凡緇忔病鏈堿ctionError綾諱簡銆?br />
3錛?AtionErrors鍜孉ctionMessages鐨勫尯鍒?br />
1錛?ActionErrors鏄疉ctionMessages鐨勪竴涓瓙綾伙紝鍔熻兘鍑犱箮鐩稿悓錛屼笉鍚岀偣鍦ㄤ簬鏍囩<html:errors/>鍜?lt;html:messages>鐨勪嬌鐢ㄤ笂鐨勫尯鍒?br /> html:errors鎸囧畾浜唂ooter鍜宧eader灞炴с傞粯璁ゅ間負(fù)errors.header鍜宔rrors.footer,闇瑕佹椂鍙互鑷繁鎸囧畾銆傚鏋滆祫婧愬睘鎬ф枃浠墮厤緗簡 errors.header鍜宔rrors.footer錛屽垯浠諱綍鏃跺欎嬌鐢╤tml:errors鏃跺紑澶村拰緇撳熬閮芥槸榪欎袱涓睘鎬у搴旂殑璧勬簮淇℃伅銆?br /> 鑰宧tml:message榛樿鎯呭喌涓嬫病鏈塭rrors.header鍜宔rrors.footer鍊鹼紝褰撶劧鍙互鑷繁鎸囧畾銆?br />
2錛?html:errors鍙互鏍規(guī)嵁property灞炴ф寚瀹氭樉紺轟竴涓敊璇俊鎭俬tml:messages鏈変竴涓繀娣婚」id銆俬tml:messages涓嶈兘鐩存帴鏄劇ず淇℃伅錛屽畠?yōu)畣閫夊嚭鐨勪俊鎭斁鍏ヤ竴涓敤id鏍囪瘑鐨処terator瀵硅薄閲岋紝鐒跺悗鍦ㄧ敤ben:write鎴朖STL c:out鏍囩鏄劇ず姣忎釜淇℃伅.渚嬪錛?br /> <html:messages message="true" id="msg">
    <c:out value="${msg}"/><br />
</html:messages>

3. 鍏蜂綋鐨勪竴涓緥瀛愶細(xì)
鎺ュ彈杈撳叆欏甸潰input.jsp:

  <html:form action="/errormessage/input">
    phoneNumber : <html:text property="phoneNumber"/> <html:errors     property="<%=org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %>"/><br/>
  <html:submit/><html:cancel/>
  </html:form>

struts-config.xml:
  <form-beans >
    <form-bean name="inputForm" type="cn.rolia.struts.form.errorexception.InputForm" />
  </form-beans>
  <action-mappings >
    <action
      attribute="inputForm"
      input="/errormessage/input.jsp"
      name="inputForm"
      path="/errormessage/input"
      scope="request"
      type="com.yourcompany.struts.action.errormessage.InputAction"
      validate="false">
      <forward name="success" path="/errormessage/success.jsp" />
    </action>
  </action-mappings>

InputAction.java:

public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
  cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
  String phoneNumber = inputForm.getPhoneNumber();
  if(phoneNumber.length()<4){
  ActionErrors messages = new ActionErrors();
    messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
    this.saveErrors(request, messages);
    return mapping.getInputForward();
  }

  return mapping.findForward("success");
}
瑙h錛氱敤鎴瘋緭鍏ユ墜鏈哄彿鐮侊紝欏甸潰璺寵漿鍒癐nputAction鎺у埗灞傝繘琛屽鐞嗭紝鑻ヨ緭鍏ユ暟鎹皬浜?錛屽垯鍒涘緩涓涓狝ctionMessage綾誨瓨鍌ㄧ浉鍏抽敊璇俊鎭傜劧鍚庡啀鍒涘緩ActionErrors綾誨皢姝ctionMessage鏀懼叆ActionErrors銆傚啀璋冪敤Action鐨剆aveErrors鏂規(guī)硶灝嗘ActionErrors淇濆瓨鐨剅equest鑼冨洿閲岋紝鐒跺悗榪斿洖input.jsp欏甸潰瑕佹眰閲嶆柊杈撳叆騫剁敤html:errors鎻愮ず閿欒淇℃伅銆?br />
4. Action鍖呭惈saveErrors()鏂規(guī)硶鍜宻aveMessages()鏂規(guī)硶銆傚鏋滃垱寤虹殑ActionErrors鍒欏簲璇ヨ皟鐢╯aveErrors()錛岃嫢鍒涘緩鐨勬槸ActionMessages鍒欏簲璇ヨ皟鐢╯aveMessages()鏂規(guī)硶銆?br /> saveErrors()鎺ユ敹ActionMessages鑰屼笉鏄疉ctionErrors;鍚屾椂灝嗗叾淇濆瓨鍦╮equest涓茍鐢ㄤ竴涓敱org.apache.struts.Globals.ERROR_KEY鎸囧畾鐨勫父閲?#8221; org.apache.struts.Globals.ERROR_KEY”鏍囪瘑榪欎釜ActionMessages錛屼究浜巋tml:errors鏌ユ壘銆俿aveMessages()鏂規(guī)硶鎺ユ敹ActionMessages鍚屾椂灝嗗叾淇濆瓨鍦╮equest涓茍鐢ㄤ竴涓敱org.apache.struts.Globals.MESSAGE_KEY鎸囧畾鐨勫父閲?#8221; org.apache.struts.Globals.MESSAGE_KEY”鏍囪瘑榪欎釜ActionMessages錛岃繘鑰岃html:messages浠庡父閲廏lobals.ERROR_KEY涓亶鍘嗚幏鍙栦俊鎭傚彲浠ュ皢鍏跺睘鎬essage璁劇疆涓簍rue錛岄偅涔堝畠?yōu)畣浠庡笖R噺Globals.MESSAGE_KEY涓亶鍘嗚幏鍙栦俊鎭?br />
5. 榛樿鎯呭喌涓媓tml:messages浠?br /> 濡傛灉浣犳兂灝嗕俊鎭繚瀛樺湪session閲岃屼笉鏄痳equest錛宻truts1.2鎻愪緵浜?br /> struts1.1娌℃湁鐨剆aveMessages(HttpSession session, ActionMessages messages)鏂規(guī)硶鍜宻aveErrors(javax.servlet.http.HttpSession session, ActionMessages errors)鏂規(guī)硶銆?br /> InputAction.java:

public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
  String phoneNumber = inputForm.getPhoneNumber();
  if(phoneNumber.length()<4){
    ActionErrors messages = new ActionErrors();
    messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
    this.saveErrors(request.getSession(true), messages);
    return mapping.getInputForward();
  }

  return mapping.findForward("success");
}

 



紲炴湭蹇呰繖涔堝啓 2008-05-04 15:00 鍙戣〃璇勮
]]>
SPRING璁捐鎬濇兂涔嬪伐鍘傛ā寮?/title><link>http://m.tkk7.com/tij/archive/2007/11/11/159696.html</link><dc:creator>紲炴湭蹇呰繖涔堝啓</dc:creator><author>紲炴湭蹇呰繖涔堝啓</author><pubDate>Sun, 11 Nov 2007 04:23:00 GMT</pubDate><guid>http://m.tkk7.com/tij/archive/2007/11/11/159696.html</guid><wfw:comment>http://m.tkk7.com/tij/comments/159696.html</wfw:comment><comments>http://m.tkk7.com/tij/archive/2007/11/11/159696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/tij/comments/commentRss/159696.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/tij/services/trackbacks/159696.html</trackback:ping><description><![CDATA[<font style="background-color: #cce8cf">宸ュ巶妯″紡錛氭牴鎹皟鐢ㄦ暟鎹繑鍥炴煇涓被鐨勪竴涓疄渚嬶紝姝ょ被鍙互鏄涓被鐨勬煇涓涓被錛岄氬父錛岃繖浜涚被婊¤凍鍏卞悓鐨勮鍒欐垨鐖剁被銆傝皟鐢ㄨ呭彧鍏沖績錛氭槸鍚︽弧瓚蟲煇縐嶈鑼冨拰鏄惁鍙緵鑷繁姝e父璋冪敤銆?br /> 鍘傛ā寮忓畾涔?span lang="EN-US">:鎻愪緵鍒涘緩瀵硅薄鐨勬帴鍙?</span> <p><strong><em>涓轟綍浣跨敤<span lang="EN-US">?</span></em></strong><span lang="EN-US"><br /> 宸ュ巶妯″紡鏄垜浠渶甯哥敤鐨勬ā寮忎簡,钁楀悕鐨凧ive璁哄潧 ,灝卞ぇ閲忎嬌鐢ㄤ簡宸ュ巶妯″紡錛屽伐鍘傛ā寮忓湪Java紼嬪簭緋葷粺鍙互璇存槸闅忓鍙銆?/span></p> <p>涓轟粈涔堝伐鍘傛ā寮忔槸濡傛甯哥敤錛熷洜涓哄伐鍘傛ā寮忓氨鐩稿綋浜庡垱寤哄疄渚嬪璞$殑<span lang="EN-US">new錛屾垜浠粡甯歌鏍規(guī)嵁綾籆lass鐢熸垚瀹炰緥瀵硅薄錛屽A a=new A() 宸ュ巶妯″紡涔熸槸鐢ㄦ潵鍒涘緩瀹炰緥瀵硅薄鐨勶紝鎵浠ヤ互鍚巒ew鏃跺氨瑕佸涓績鐪鹼紝鏄惁鍙互鑰冭檻瀹炵敤宸ュ巶妯″紡錛岃櫧鐒惰繖鏍峰仛錛屽彲鑳藉鍋氫竴浜涘伐浣滐紝浣嗕細(xì)緇欎綘緋葷粺甯︽潵鏇村ぇ鐨勫彲鎵╁睍鎬у拰灝介噺灝戠殑淇敼閲忋?/span></p> <p>鎴戜滑浠ョ被<span lang="EN-US">Sample涓轟緥錛?濡傛灉鎴戜滑瑕佸垱寤篠ample鐨勫疄渚嬪璞?</span></p> <p><span lang="EN-US">Sample sample=new Sample();</span></p> <p>鍙槸錛屽疄闄呮儏鍐墊槸錛岄氬父鎴戜滑閮借鍦ㄥ垱寤?span lang="EN-US">sample瀹炰緥鏃跺仛鐐瑰垵濮嬪寲鐨勫伐浣?姣斿璧嬪?鏌ヨ鏁版嵁搴撶瓑銆?/span></p> <p>棣栧厛錛屾垜浠兂鍒扮殑鏄紝鍙互浣跨敤<span lang="EN-US">Sample鐨勬瀯閫犲嚱鏁幫紝榪欐牱鐢熸垚瀹炰緥灝卞啓鎴?</span></p> <p><span lang="EN-US">Sample sample=new Sample(鍙傛暟);</span></p> <p>浣嗘槸錛屽鏋滃垱寤?span lang="EN-US">sample瀹炰緥鏃舵墍鍋氱殑鍒濆鍖栧伐浣滀笉鏄薄璧嬪艱繖鏍風(fēng)畝鍗曠殑浜嬶紝鍙兘鏄緢闀夸竴孌典唬鐮侊紝濡傛灉涔熷啓鍏ユ瀯閫犲嚱鏁頒腑錛岄偅浣犵殑浠g爜寰堥毦鐪嬩簡錛堝氨闇瑕丷efactor閲嶆暣錛夈?/span></p> <p>涓轟粈涔堣浠g爜寰堥毦鐪嬶紝鍒濆鑰呭彲鑳芥病鏈夎繖縐嶆劅瑙夛紝鎴戜滑鍒嗘瀽濡備笅錛屽垵濮嬪寲宸ヤ綔濡傛灉鏄緢闀夸竴孌典唬鐮侊紝璇存槑瑕佸仛鐨勫伐浣滃緢澶氾紝灝嗗緢澶氬伐浣滆鍏ヤ竴涓柟娉曚腑錛岀浉褰撲簬灝嗗緢澶氶浮铔嬫斁鍦ㄤ竴涓瀛愰噷錛屾槸寰堝嵄闄╃殑錛岃繖涔熸槸鏈夎儗浜?span lang="EN-US">Java闈㈠悜瀵硅薄鐨勫師鍒欙紝闈㈠悜瀵硅薄鐨勫皝瑁?Encapsulation)鍜屽垎媧?Delegation)鍛婅瘔鎴戜滑錛屽敖閲忓皢闀跨殑浠g爜鍒嗘淳“鍒囧壊”鎴愭瘡孌碉紝灝嗘瘡孌靛啀“灝佽”璧鋒潵(鍑忓皯孌靛拰孌典箣闂村伓鍚堣仈緋繪?錛岃繖鏍鳳紝灝變細(xì)灝嗛闄╁垎鏁o紝浠ュ悗濡傛灉闇瑕佷慨鏀癸紝鍙鏇存敼姣忔錛屼笉浼?xì)鍐嶅彂鐢熺壍涓鍔ㄧ櫨鐨勪簨鎯呫?/span></p> <p>鍦ㄦ湰渚嬩腑錛岄鍏堬紝鎴戜滑闇瑕佸皢鍒涘緩瀹炰緥鐨勫伐浣滀笌浣跨敤瀹炰緥鐨勫伐浣滃垎寮<span lang="EN-US">, 涔熷氨鏄錛岃鍒涘緩瀹炰緥鎵闇瑕佺殑澶ч噺鍒濆鍖栧伐浣滀粠Sample鐨勬瀯閫犲嚱鏁頒腑鍒嗙鍑哄幓銆?/span></p> <p>榪欐椂鎴戜滑灝遍渶瑕?span lang="EN-US">Factory宸ュ巶妯″紡鏉ョ敓鎴愬璞′簡錛屼笉鑳藉啀鐢ㄤ笂闈㈢畝鍗昻ew Sample(鍙傛暟)銆?/span>榪樻湁<span lang="EN-US">,濡傛灉Sample鏈変釜緇ф壙濡侻ySample, 鎸夌収闈㈠悜鎺ュ彛緙栫▼,鎴戜滑闇瑕佸皢Sample鎶借薄鎴愪竴涓帴鍙?</span>鐜板湪<span lang="EN-US">Sample鏄帴鍙?鏈変袱涓瓙綾籑ySample 鍜孒isSample .鎴戜滑瑕佸疄渚嬪寲浠栦滑鏃?濡備笅:</span></p> <p><span lang="EN-US">Sample mysample=new MySample();<br /> Sample hissample=new HisSample();</span></p> <p>闅忕潃欏圭洰鐨勬繁鍏?span lang="EN-US">,Sample鍙兘榪樹細(xì)"鐢熷嚭寰堝鍎垮瓙鍑烘潵", 閭d箞鎴戜滑瑕佸榪欎簺鍎垮瓙涓涓釜瀹炰緥鍖?鏇寸碂緋曠殑鏄?鍙兘榪樿瀵逛互鍓嶇殑浠g爜榪涜淇敼:鍔犲叆鍚庢潵鐢熷嚭鍎垮瓙鐨勫疄渚?榪欏湪浼犵粺紼嬪簭涓槸鏃犳硶閬垮厤鐨?</span></p> <p>浣嗗鏋滀綘涓寮濮嬪氨鏈夋剰璇嗕嬌鐢ㄤ簡宸ュ巶妯″紡<span lang="EN-US">,榪欎簺楹葷儲灝辨病鏈変簡.</span></p> <p><strong>宸ュ巶鏂規(guī)硶<br /> </strong>浣犱細(xì)寤虹珛涓涓笓闂ㄧ敓浜?span lang="EN-US">Sample瀹炰緥鐨勫伐鍘?</span></p> <table style="width: 80%; mso-cellspacing: 2.2pt; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt" cellspacing="3" cellpadding="0" width="80%" border="0"> <tbody> <tr> <td style="padding-right: 2.25pt; padding-left: 2.25pt; background: #cccccc; padding-bottom: 2.25pt; padding-top: 2.25pt"> <p><span lang="EN-US">public class Factory{</span></p> <p>銆銆<span lang="EN-US">public static Sample creator(int which){</span></p> <p>銆銆//getClass <span lang="EN-US">浜х敓Sample 涓鑸彲浣跨敤鍔ㄦ佺被瑁呰澆瑁呭叆綾匯?br /> 銆銆if (which==1)<br /> 銆銆銆銆return new SampleA();<br /> 銆銆else if (which==2)<br /> 銆銆銆銆return new SampleB();</span></p> <p>銆銆<span lang="EN-US">}</span></p> <p><span lang="EN-US">}</span></p> </td> </tr> </tbody> </table> <p>閭d箞鍦ㄤ綘鐨勭▼搴忎腑<span lang="EN-US">,濡傛灉瑕佸疄渚嬪寲Sample鏃?灝變嬌鐢?/span></p> <p><span lang="EN-US">Sample sampleA=Factory.creator(1);</span></p> <p>榪欐牱<span lang="EN-US">,鍦ㄦ暣涓氨涓嶆秹鍙婂埌Sample鐨勫叿浣撳瓙綾?杈懼埌灝佽鏁堟灉,涔熷氨鍑忓皯閿欒淇敼鐨勬満浼?榪欎釜鍘熺悊鍙互鐢ㄥ緢閫氫織鐨勮瘽鏉ユ瘮鍠?灝辨槸鍏蜂綋浜嬫儏鍋氬緱瓚婂,瓚婂鏄撹寖閿欒.榪欐瘡涓仛榪囧叿浣撳伐浣滅殑浜洪兘娣辨湁浣撲細(xì),鐩稿弽,瀹樺仛寰楄秺楂?璇村嚭鐨勮瘽瓚婃娊璞¤秺絎肩粺,鑼冮敊璇彲鑳芥у氨瓚婂皯.濂借薄鎴戜滑浠庣紪紼嬪簭涓篃鑳芥?zhèn)熷囖Z漢鐢熼亾鐞?鍛靛懙.</span></p> <p>浣跨敤宸ュ巶鏂規(guī)硶 瑕佹敞鎰忓嚑涓鑹詫紝棣栧厛浣犺瀹氫箟浜у搧鎺ュ彛錛屽涓婇潰鐨凷ample,浜у搧鎺ュ彛涓嬫湁Sample鎺ュ彛鐨勫疄鐜扮被,濡係ampleA,鍏舵瑕佹湁涓涓猣actory綾伙紝鐢ㄦ潵鐢熸垚浜у搧Sample錛屽涓嬪浘錛屾渶鍙寵竟鏄敓浜х殑瀵硅薄Sample錛?/p> <p><img height="178" src="http://www.jdon.com/designpatterns/images/factory.jpg" width="526" alt="" /></p> <p>榪涗竴姝ョ◢寰鏉備竴鐐癸紝灝辨槸鍦ㄥ伐鍘傜被涓婅繘琛屾嫇灞曪紝宸ュ巶綾諱篃鏈夌戶鎵垮畠鐨勫疄鐜扮被concreteFactory浜?strong><em>銆?/em></strong></p> <p><span lang="EN-US"><strong>鎶借薄宸ュ巶</strong><br /> 宸ュ巶妯″紡涓湁: 宸ュ巶鏂規(guī)硶(Factory Method) 鎶借薄宸ュ巶(Abstract Factory).</span></p> <p style="margin-bottom: 12pt"><span lang="EN-US">榪欎袱涓ā寮忓尯鍒湪浜庨渶瑕佸垱寤哄璞$殑澶嶆潅紼嬪害涓娿傚鏋滄垜浠垱寤哄璞$殑鏂規(guī)硶鍙樺緱澶嶆潅浜?濡備笂闈㈠伐鍘傛柟娉曚腑鏄垱寤轟竴涓璞ample,濡傛灉鎴戜滑榪樻湁鏂扮殑浜у搧鎺ュ彛Sample2.</span></p> <p style="margin-bottom: 12pt">榪欓噷鍋囪錛歋ample鏈変袱涓猚oncrete綾籗ampleA鍜孲amleB錛岃孲ample2涔熸湁涓や釜concrete綾籗ample2A鍜孲ampleB2</p> <p style="margin-bottom: 12pt"><span lang="EN-US">閭d箞錛屾垜浠氨灝嗕笂渚嬩腑Factory鍙樻垚鎶借薄綾?灝嗗叡鍚岄儴鍒嗗皝瑁呭湪鎶借薄綾諱腑,涓嶅悓閮ㄥ垎浣跨敤瀛愮被瀹炵幇錛屼笅闈㈠氨鏄皢涓婁緥涓殑Factory鎷撳睍鎴愭娊璞″伐鍘?</span></p> <table style="width: 80%; mso-cellspacing: 2.2pt; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt" cellspacing="3" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td style="padding-right: 2.25pt; padding-left: 2.25pt; background: #cccccc; padding-bottom: 2.25pt; padding-top: 2.25pt"> <p><span lang="EN-US">public abstract class Factory{</span></p> <p>銆銆<span lang="EN-US">public abstract Sample creator();</span></p> <p>銆銆<span lang="EN-US">public abstract Sample2 creator(String name); </span></p> <p><span lang="EN-US">}</span></p> <p><span lang="EN-US">public class SimpleFactory extends Factory{</span></p> <p>銆銆<span lang="EN-US">public Sample creator(){<br /> 銆銆銆銆.........<br /> 銆銆銆銆return new SampleA</span><span lang="EN-US"><br /> 銆銆}</span></p> <p>銆銆<span lang="EN-US">public Sample2 creator(String name){<br /> 銆銆銆銆.........<br /> 銆銆銆銆return new Sample2A</span><span lang="EN-US"><br /> 銆銆}</span></p> <p><span lang="EN-US">}</span></p> <p><span lang="EN-US">public class BombFactory extends Factory{</span></p> <p>銆銆<span lang="EN-US">public Sample creator(){<br /> 銆銆銆銆......<br /> 銆銆銆銆return new SampleB</span><span lang="EN-US"> <br /> 銆銆}</span></p> <p>銆銆<span lang="EN-US">public Sample2 creator(String name){<br /> 銆銆銆銆......<br /> 銆銆銆銆return new Sample2B<br /> 銆銆}</span></p> <p><span lang="EN-US">}</span></p> <p><span lang="EN-US"> </span></p> </td> </tr> </tbody> </table> <p><span lang="EN-US">浠庝笂闈㈢湅鍒頒袱涓伐鍘傚悇鑷敓浜у嚭涓濂桽ample鍜孲ample2,涔熻浣犱細(xì)鐤戦棶錛屼負(fù)浠涔堟垜涓嶅彲浠ヤ嬌鐢ㄤ袱涓伐鍘傛柟娉曟潵鍒嗗埆鐢熶駭Sample鍜孲ample2? </span></p> <p><span lang="EN-US">鎶借薄宸ュ巶榪樻湁鍙﹀涓涓叧閿鐐癸紝鏄洜涓?SimpleFactory鍐咃紝鐢熶駭Sample鍜岀敓浜ample2鐨勬柟娉曚箣闂存湁涓瀹氳仈緋伙紝鎵浠ユ墠瑕佸皢榪欎袱涓柟娉曟崋緇戝湪涓涓被涓紝榪欎釜宸ュ巶綾繪湁鍏舵湰韜壒寰侊紝涔熻鍒墮犺繃紼嬫槸緇熶竴鐨勶紝姣斿錛氬埗閫犲伐鑹烘瘮杈冪畝鍗曪紝鎵浠ュ悕縐板彨SimpleFactory銆?/span><span lang="EN-US"><br /> </span></p> <p>鍦ㄥ疄闄呭簲鐢ㄤ腑錛屽伐鍘傛柟娉曠敤寰楁瘮杈冨涓浜涳紝鑰屼笖鏄拰鍔ㄦ佺被瑁呭叆鍣ㄧ粍鍚堝湪涓璧峰簲鐢紝</p> <p><span lang="EN-US"><strong>涓句緥</strong><O:P></O:P></span></p> <p>鎴戜滑浠?span lang="EN-US">Jive鐨凢orumFactory涓轟緥錛岃繖涓緥瀛愬湪鍓嶉潰鐨凷ingleton妯″紡涓垜浠璁鴻繃錛岀幇鍦ㄥ啀璁ㄨ鍏跺伐鍘傛ā寮?</span></p> <table style="width: 97%; mso-cellspacing: 2.2pt; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt" cellspacing="3" cellpadding="0" width="97%" border="0"> <tbody> <tr> <td style="padding-right: 2.25pt; padding-left: 2.25pt; background: #cccccc; padding-bottom: 2.25pt; padding-top: 2.25pt"> <p><span lang="EN-US">public abstract class ForumFactory {</span></p> <p>銆銆<span lang="EN-US">private static Object initLock = new Object();<br /> 銆銆private static String className = "com.jivesoftware.forum.database.DbForumFactory";<br /> 銆銆private static ForumFactory factory = null; </span></p> <p>銆銆<span lang="EN-US">public static ForumFactory getInstance(Authorization authorization) {<br /> 銆銆銆銆//If no valid authorization passed in, return null.<br /> 銆銆銆銆if (authorization == null) {<br /> 銆銆銆銆銆銆return null;<br /> 銆銆銆銆}<br /> 銆銆銆銆//浠ヤ笅浣跨敤浜哠ingleton 鍗曟佹ā寮?br /> 銆銆銆銆if (factory == null) {<br /> 銆銆銆銆銆銆synchronized(initLock) {<br /> 銆銆銆銆銆銆銆銆if (factory == null) {<br /> 銆銆銆銆銆銆銆銆銆銆銆銆...... </span></p> <p>銆銆銆銆銆銆銆銆銆銆<span lang="EN-US">try {<br /> 銆銆銆銆銆銆銆銆銆銆銆銆銆銆//鍔ㄦ佽漿杞界被<br /> 銆銆銆銆銆銆銆銆銆銆銆銆銆銆Class c = Class.forName(className);<br /> 銆銆銆銆銆銆銆銆銆銆銆銆銆銆factory = (ForumFactory)c.newInstance();<br /> 銆銆銆銆銆銆銆銆銆銆}<br /> 銆銆銆銆銆銆銆銆銆銆catch (Exception e) {<br /> 銆銆銆銆銆銆銆銆銆銆銆銆銆銆return null;<br /> 銆銆銆銆銆銆銆銆銆銆}<br /> 銆銆銆銆銆銆銆銆}<br /> 銆銆銆銆銆銆}<br /> 銆銆銆銆}</span></p> <p>銆銆銆銆<span lang="EN-US">//Now, 榪斿洖 proxy.鐢ㄦ潵闄愬埗鎺堟潈瀵筬orum鐨勮闂?br /> 銆銆銆銆return new ForumFactoryProxy(authorization, factory,<br /> 銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆factory.getPermissions(authorization));<br /> 銆銆}</span></p> <p>銆銆<span lang="EN-US">//鐪熸鍒涘緩forum鐨勬柟娉曠敱緇ф壙forumfactory鐨勫瓙綾誨幓瀹屾垚.<br /> 銆銆public abstract Forum createForum(String name, String description)<br /> 銆銆throws UnauthorizedException, ForumAlreadyExistsException;</span></p> <p>銆銆<span lang="EN-US">....</span></p> <p><span lang="EN-US">}</span></p> <p><span lang="EN-US"> </span></p> <p><span lang="EN-US"> </span></p> </td> </tr> </tbody> </table> <p>鍥犱負(fù)鐜板湪鐨?span lang="EN-US">Jive鏄氳繃鏁版嵁搴撶郴緇熷瓨鏀捐鍧涘笘瀛愮瓑鍐呭鏁版嵁,濡傛灉甯屾湜鏇存敼涓洪氳繃鏂囦歡緋葷粺瀹炵幇,榪欎釜宸ュ巶鏂規(guī)硶ForumFactory灝辨彁渚涗簡鎻愪緵鍔ㄦ佹帴鍙?</span></p> <p><span lang="EN-US">private static String className = "com.jivesoftware.forum.database.DbForumFactory";</span></p> <p>浣犲彲浠ヤ嬌鐢ㄨ嚜宸卞紑鍙戠殑鍒涘緩<span lang="EN-US">forum鐨勬柟娉曚唬鏇縞om.jivesoftware.forum.database.DbForumFactory灝卞彲浠?</span></p> <p>鍦ㄤ笂闈㈢殑涓孌典唬鐮佷腑涓鍏辯敤浜嗕笁縐嶆ā寮?span lang="EN-US">,闄や簡宸ュ巶妯″紡澶?榪樻湁Singleton鍗曟佹ā寮?浠ュ強proxy妯″紡,proxy妯″紡涓昏鐢ㄦ潵鎺堟潈鐢ㄦ埛瀵筬orum鐨勮闂?鍥犱負(fù)璁塊棶forum鏈変袱縐嶄漢:涓涓槸娉ㄥ唽鐢ㄦ埛 涓涓槸娓稿guest,閭d箞閭d箞鐩稿簲鐨勬潈闄愬氨涓嶄竴鏍?鑰屼笖榪欎釜鏉冮檺鏄瘡絀挎暣涓郴緇熺殑,鍥犳寤虹珛涓涓猵roxy,綾諱技緗戝叧鐨勬蹇?鍙互寰堝ソ鐨勮揪鍒拌繖涓晥鏋?  </span></p> <p>鐪嬬湅<span lang="EN-US">Java瀹犵墿搴椾腑鐨凜atalogDAOFactory:</span></p> <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#cccccc" border="0"> <tbody> <tr> <td>public class CatalogDAOFactory { <p> </p> <p>銆銆/**</p> <p>銆銆* 鏈柟娉曞埗瀹氫竴涓壒鍒殑瀛愮被鏉ュ疄鐜癉AO妯″紡銆?br /> 銆銆* 鍏蜂綋瀛愮被瀹氫箟鏄湪J2EE鐨勯儴緗叉弿榪板櫒涓?br /> 銆銆*/</p> <p>銆銆public static CatalogDAO getDAO() throws CatalogDAOSysException {</p> <p>銆銆銆銆CatalogDAO catDao = null;</p> <p>銆銆銆銆try {</p> <p>銆銆銆銆銆銆InitialContext ic = new InitialContext();<br /> 銆銆銆銆銆銆//鍔ㄦ佽鍏ATALOG_DAO_CLASS<br /> 銆銆銆銆銆銆//鍙互瀹氫箟鑷繁鐨凜ATALOG_DAO_CLASS錛屼粠鑰屽湪鏃犻渶鍙樻洿澶浠g爜<br /> 銆銆銆銆銆銆//鐨勫墠鎻愪笅錛屽畬鎴愮郴緇熺殑宸ㄥぇ鍙樻洿銆?/p> <p>銆銆銆銆銆銆String className =(String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);</p> <p>銆銆銆銆銆銆catDao = (CatalogDAO) Class.forName(className).newInstance();</p> <p>銆銆銆銆} catch (NamingException ne) {</p> <p>銆銆銆銆銆銆throw new CatalogDAOSysException("<br /> 銆銆銆銆銆銆銆銆CatalogDAOFactory.getDAO: NamingException while <br /> 銆銆銆銆銆銆銆銆銆銆getting DAO type : \n" + ne.getMessage());</p> <p>銆銆銆銆} catch (Exception se) {</p> <p>銆銆銆銆銆銆throw new CatalogDAOSysException("<br /> 銆銆銆銆銆銆銆銆CatalogDAOFactory.getDAO: Exception while getting <br /> 銆銆銆銆銆銆銆銆銆銆DAO type : \n" + se.getMessage());</p> <p>銆銆銆銆}</p> <p>銆銆銆銆return catDao;</p> <p>銆銆}</p> <p>}<br /> </p> </td> </tr> </tbody> </table> <p><br style="mso-ignore: vglayout" clear="all" /> </p> <p><span lang="EN-US">CatalogDAOFactory鏄吀鍨嬬殑宸ュ巶鏂規(guī)硶錛宑atDao鏄氳繃鍔ㄦ佺被瑁呭叆鍣╟lassName鑾峰緱CatalogDAOFactory鍏蜂綋瀹炵幇瀛愮被錛岃繖涓疄鐜板瓙綾誨湪Java瀹犵墿搴楁槸鐢ㄦ潵鎿嶄綔catalog鏁版嵁搴擄紝鐢ㄦ埛鍙互鏍規(guī)嵁鏁版嵁搴撶殑綾誨瀷涓嶅悓錛屽畾鍒惰嚜宸辯殑鍏蜂綋瀹炵幇瀛愮被錛屽皢鑷繁鐨勫瓙綾誨悕緇欎笌CATALOG_DAO_CLASS鍙橀噺灝卞彲浠ャ?/span></p> <p>鐢辨鍙錛屽伐鍘傛柟娉曠‘瀹炰負(fù)緋葷粺緇撴瀯鎻愪緵浜嗛潪甯哥伒媧誨己澶х殑鍔ㄦ佹墿灞曟満鍒訛紝鍙鎴戜滑鏇存崲涓涓嬪叿浣撶殑宸ュ巶鏂規(guī)硶錛岀郴緇熷叾浠栧湴鏂規(guī)棤闇涓鐐瑰彉鎹紝灝辨湁鍙兘灝嗙郴緇熷姛鑳借繘琛屾敼澶存崲闈㈢殑鍙樺寲銆?/p> <p>璁捐妯″紡濡備綍鍦ㄥ叿浣撻」鐩腑搴旂敤瑙?a target="_blank">銆奐ava瀹炵敤緋葷粺寮鍙戞寚鍗椼?/a></p> </font> <img src ="http://m.tkk7.com/tij/aggbug/159696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/tij/" target="_blank">紲炴湭蹇呰繖涔堝啓</a> 2007-11-11 12:23 <a href="http://m.tkk7.com/tij/archive/2007/11/11/159696.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍗冮噷涔嬭 濮嬩簬瓚充笅http://m.tkk7.com/tij/archive/2007/10/26/156229.html紲炴湭蹇呰繖涔堝啓紲炴湭蹇呰繖涔堝啓Fri, 26 Oct 2007 11:22:00 GMThttp://m.tkk7.com/tij/archive/2007/10/26/156229.htmlhttp://m.tkk7.com/tij/comments/156229.htmlhttp://m.tkk7.com/tij/archive/2007/10/26/156229.html#Feedback3http://m.tkk7.com/tij/comments/commentRss/156229.htmlhttp://m.tkk7.com/tij/services/trackbacks/156229.html涓瑙夐啋鏉ワ紝浣犱細(xì)涓嶄細(xì)鑼劧鏃犳帾錛熻寰楄嚜宸變竴鏃犳槸澶勶紵



紲炴湭蹇呰繖涔堝啓 2007-10-26 19:22 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 四虎永久成人免费| 久久亚洲国产成人精品无码区| 亚洲精品永久www忘忧草| 久久久久免费看黄a级试看| 亚洲国产av美女网站| 免费人妻av无码专区| 国产精品青草视频免费播放| 亚洲AV成人片色在线观看高潮| 四虎免费在线观看| 青青操免费在线视频| jlzzjlzz亚洲jzjzjz| 日韩在线免费播放| 久久99精品国产免费观看| 香蕉视频免费在线播放| 亚洲国产成人精品无码区在线网站| 国产精品亚洲视频| 8x8x华人永久免费视频| 一本久久A久久免费精品不卡| 国产亚洲欧洲精品| 国产成人免费福利网站| 国产一卡二卡3卡四卡免费| 美女视频黄视大全视频免费的| 亚洲avav天堂av在线不卡| 国产传媒在线观看视频免费观看 | 亚洲va中文字幕| 亚洲AV第一页国产精品| 国产午夜无码视频免费网站| 久久免费看黄a级毛片| 全黄大全大色全免费大片| 美女视频黄a视频全免费网站一区| 亚洲日本在线播放| 久久久久久亚洲精品中文字幕| 亚洲高清视频一视频二视频三| 女人被男人躁的女爽免费视频| 美女内射无套日韩免费播放| 国产免费人成视频尤勿视频| 毛片亚洲AV无码精品国产午夜| 亚洲一卡2卡3卡4卡国产网站| 99久久亚洲综合精品成人网| 国产亚洲A∨片在线观看| 亚洲国产小视频精品久久久三级|