锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产成人久久综合一,亚洲mv国产精品mv日本mv,亚洲精品无码MV在线观看http://www.tkk7.com/nikita/category/39788.htmlzh-cnThu, 09 Feb 2012 17:32:15 GMTThu, 09 Feb 2012 17:32:15 GMT60瑙e喅ServletUrlRenderer WARN璀﹀憡http://www.tkk7.com/nikita/archive/2012/02/09/369656.htmlpicture talkpicture talkThu, 09 Feb 2012 04:42:00 GMThttp://www.tkk7.com/nikita/archive/2012/02/09/369656.htmlhttp://www.tkk7.com/nikita/comments/369656.htmlhttp://www.tkk7.com/nikita/archive/2012/02/09/369656.html#Feedback1http://www.tkk7.com/nikita/comments/commentRss/369656.htmlhttp://www.tkk7.com/nikita/services/trackbacks/369656.html

]]>
Struts 2涓嶢JAX錛堢涓閮ㄥ垎錛?http://www.tkk7.com/nikita/archive/2011/08/07/355970.htmlpicture talkpicture talkSun, 07 Aug 2011 14:36:00 GMThttp://www.tkk7.com/nikita/archive/2011/08/07/355970.htmlhttp://www.tkk7.com/nikita/comments/355970.htmlhttp://www.tkk7.com/nikita/archive/2011/08/07/355970.html#Feedback0http://www.tkk7.com/nikita/comments/commentRss/355970.htmlhttp://www.tkk7.com/nikita/services/trackbacks/355970.htmlhttp://www.tkk7.com/max/archive/2007/06/12/123682.html

]]>
Struts 鐨凪VC鏋舵瀯鐨勫熀鏈師鐞?/title><link>http://www.tkk7.com/nikita/archive/2008/10/04/232275.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Fri, 03 Oct 2008 16:07:00 GMT</pubDate><guid>http://www.tkk7.com/nikita/archive/2008/10/04/232275.html</guid><wfw:comment>http://www.tkk7.com/nikita/comments/232275.html</wfw:comment><comments>http://www.tkk7.com/nikita/archive/2008/10/04/232275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/nikita/comments/commentRss/232275.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/nikita/services/trackbacks/232275.html</trackback:ping><description><![CDATA[ <p> <strong>1. 瑙嗗浘 VIEW<br /></strong> <br />聽聽聽HTML + Struts Tag lib璐熻矗欏甸潰鏍煎紡錛?姣斿瑕佽緭鍑轟竴涓姤琛紝鎶ヨ〃闇瑕佸垎鍑犲垪錛屾瘡鍒楁樉紺轟粈涔堥鑹層?br />聽聽聽<br />聽聽聽Form Bean 璐熻矗鍐呭銆?濡傛姤琛ㄦ瘡涓欏規暟鎹唴瀹廣?br /><br /><strong>2. 鎺у埗鍣?Controller)</strong><br /><br />聽聽聽涓昏鐢?ActionServlet + Action Bean 緇勬垚銆?br /><br />聽聽聽ActionServlet 鏄疭truts涓牳蹇冪殑閮ㄥ垎錛屽叾鍔熻兘濡備笅銆?br /><br />聽聽聽聽聽聽ActionServlet璐熻矗鎵鏈夐〉闈俊鎭敹闆嗗拰欏甸潰涔嬮棿鐨勮漿鎹€?br />聽聽聽聽聽聽緋葷粺閫氳繃web.xml鐨?<servlet>鏉ラ厤緗瓵ctionServlet<br />聽聽聽聽聽聽緋葷粺閫氳繃web.xml 鐨?lt;init-param>灝哠truts-config.xml 杞藉叆鍐呭瓨浠ュActionServlet璋冪敤<br />聽聽聽聽聽聽validation.xml浠?lt;plug-in>鏂規硶杞藉叆鍐呭瓨澶嘇ctionServlet璋冪敤銆?br />聽聽聽聽聽聽聽聽聽<br />聽聽聽ActionBean 鐨勬ц兘濡備笅錛?br />聽聽聽聽聽聽<br />聽聽聽聽聽聽ActionServlet閫氳繃Struts-config.xm 鐨勯厤緗潵璋冪敤鐩稿簲鐨凙ction Bean.<br />聽聽聽聽聽聽Action Bean 浠嶧orm Bean 鍙栧嚭鐩稿簲鐨勫箋?br />聽聽聽聽聽聽Action Bean 鎶婄浉搴旂殑鍊間粯緇橣orm Bean<br />聽聽聽聽聽聽Action Bean 璐熻矗璋冪敤鐩稿簲鐨凪odel,<br />聽聽聽聽聽聽Action Bean 璐熻矗灝嗛〉闈㈠悜鍓嶄紶閫掑埌鐩稿簲鐨勯〉闈€?br /><br /><strong>3. 妯″瀷 (Model)</strong><br /><br />聽聽聽聽聽聽妯″瀷Model 涓昏璐熻矗涓氬姟閫昏緫瀹炵幇錛屽寘鎷琖eb Service 銆丼ession Bean 鍜?Entity Bean. 浠庢暟鎹祦鐨勮搴︽潵鐪嬶紝榪欎竴榪囩▼涓昏鍖呮嫭浠ヤ笅涓や釜鏂歸潰錛?br /><br />聽聽聽聽聽聽聽 (1)灝嗗墠绔殑From Bean 鐨勬暟鎹紶鍒板悗绔紝榪涜鏁版嵁搴撶殑鎻掑叆錛屾洿鏂板拰鍒犻櫎銆?br /><br />聽聽聽聽聽聽聽聽(2)鏍規嵁鍓嶇鐨勮姹傦紝閫夋嫨鏁版嵁搴撴暟鎹紝灝嗘暟鎹紶鍒板墠绔殑Form Bean <br /><br /><br /><br />----------------------------------------------------------------------------------------------------------------------------------------------<br /><br /></p> <p> <font size="2">java.lang.Object<br />聽聽|<br />聽聽+--javax.servlet.GenericServlet<br />聽聽聽聽聽聽聽聽|<br />聽聽聽聽聽聽聽聽+--javax.servlet.http.HttpServlet<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽|<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽+--org.apache.struts.action.ActionServlet<br /><br />Struts鎻愪緵浜嗕竴涓己鐪佺増鏈殑ActionServlet綾伙紝浣犲彲浠ョ戶鎵胯繖涓被錛岃鐩栧叾涓殑涓浜涙柟娉曟潵杈懼埌浣犵殑鐗規畩澶勭悊鐨勯渶瑕併侫ctionServlet緇ф壙涓巎avax.servlet.http.HttpServlet錛屾墍浠ュ湪鏈川涓婂畠鍜屼竴涓櫘閫氱殑servlet娌℃湁鍖哄埆錛屼綘瀹屽叏鍙互鎶婂畠褰撳仛涓涓猻ervlet鏉ョ湅寰咃紝鍙槸鍦ㄥ叾涓畬鎴愮殑鍔熻兘涓嶅悓緗簡銆侫ctionServlet涓昏瀹屾垚濡備笅鍔熻兘錛?br /><br />灝嗕竴涓潵鑷鎴風鐨刄RI鏄犲皠鍒頒竴涓浉搴旂殑Action綾?br /></font> </p> <ul> <li> <font size="2">濡傛灉鏄繖涓狝ction綾繪槸絎竴嬈¤璋冪敤錛岄偅涔堝疄渚嬪寲涓涓茍鏀懼叆緙撳瓨<br /></font> </li> <li> <font size="2">濡傛灉鍦ㄩ厤緗枃浠?struts-config.xml)涓寚瀹氫簡鐩稿簲鐨凙ctionForm錛岄偅涔堜粠Request涓姄鍙栨暟鎹~鍏匜ormBean<br /></font> </li> <li> <font size="2">璋冪敤榪欎釜Action綾葷殑perform()鏂規硶錛屼紶鍏ctionMapping鐨勪竴涓紩鐢紝瀵瑰簲鐨凙ctionForm銆佷互鍙婄敱瀹瑰櫒浼犵粰ActionServlet鐨凥ttpServletRequest銆丠ttpServletResponse瀵硅薄銆?/font> </li> </ul> <p> <br /> <br /> <font size="2">紜渷鐗堟湰鐨凙ctionServlet浼氫粠閰嶇疆鏂囦歡web.xml涓鍙栧涓嬪垵濮嬪寲鍙傛暟錛?br /></font> </p> <ul> <li> <font size="2">application<br />搴旂敤浣跨敤鐨勮祫婧愬寘(resources聽bundle)鐨勫熀綾?br /></font> </li> <li> <font size="2">factory<br />鐢ㄤ簬鍒涘緩搴旂敤鐨凪essageResources瀵硅薄鐨凪essageResourcesFactory鐨勭被鍚嶃傜‘鐪佹槸org.apache.struts.util.PropertyMessageResourcesFactory銆?br /></font> </li> <li> <font size="2">config<br />Struts鐨勯厤緗枃浠訛紝紜渷鏄?WEB-INF/struts-config.xml銆傛敞鎰忚繖鍎挎槸涓庡簲鐢–ontext鍏寵仈鐨勭浉瀵硅礬寰勩?br /></font> </li> <li> <font size="2">content<br />瀹氫箟浜嗙‘鐪佺殑鍐呭綾誨瀷鍜岀紪鐮佹牸寮忥紝瀹冧細琚嚜鍔ㄥ湴琚緗埌姣忎釜response涓紝濡傛灉JSP/Servlet涓病鏈夋槑紜殑璁劇疆銆傜‘鐪佹槸text/html銆?br /></font> </li> <li> <font size="2">debug<br />璋冭瘯淇℃伅鐨勭駭鍒傞粯璁や負0錛屾瘮褰撳墠綰у埆楂樼殑璋冭瘯淇℃伅浼氳log鍒版棩蹇楁枃浠朵腑銆?br /></font> </li> <li> <font size="2">detail<br />涓巇ebug鐨勪綔鐢ㄧ被浼鹼紝鍙槸榪欎釜detail鏄痠nitMapping()鏃朵笓鐢ㄧ殑銆傝皟璇曚俊鎭細琚墦鍗板埌System.out錛岃屼笉鏄棩蹇楁枃浠躲?br /></font> </li> <li> <font size="2">formBean<br />ActionFormBean鐨勫疄鐜扮被錛岀‘鐪佷負org.apache.struts.action.ActionFormBean<br /></font> </li> <li> <font size="2">forward<br />搴旂敤涓嬌鐢ㄧ殑ActionForward綾伙紝紜渷鏄痮rg.apache.struts.action.ActionForward銆?br /></font> </li> <li> <font size="2">locale<br />鎸囧畾浜嗙‘鐪佷嬌鐢ㄧ殑Locale瀵硅薄銆傝涓簍rue錛屽綋寰楀埌涓涓猻ession鏃訛紝浼氳嚜鍔ㄥ湪session涓瓨鍌ㄤ竴涓互Action.LOCALE_KEY鏍囩ず鐨凩ocale瀵硅薄錛屽鏋渟ession涓繕娌℃湁涓嶢ction.LOCALE_KEY緇戝畾鐨凩ocale瀵硅薄銆?br /></font> </li> <li> <font size="2">mapping<br />搴旂敤涓嬌鐢ㄧ殑ActionMapping綾伙紝紜渷鏄痮rg.apache.struts.action.ActionMapping銆?br /></font> </li> <li> <font size="2">multipartClass<br />鏂囦歡涓婁紶浣跨敤鐨凪utipartRequestHandler鐨勫疄鐜扮被銆傜‘鐪佷負org.apache.struts.upload.DiskMultipartRequestHandler<br /></font> </li> <li> <font size="2">nocache<br />濡傛灉璁句負true錛岄偅涔圓ctionServlet浼氳嚜鍔ㄥ湪姣忎釜鍒板鎴風鐨勫搷搴斾腑娣誨姞nocache鐨凥TML澶達紝榪欐牱瀹㈡埛绔氨涓嶄細瀵瑰簲鐢ㄤ腑鐨勯〉闈㈣繘琛岀紦瀛樸傜‘鐪佷負false<br /></font> </li> <li> <font size="2">null<br />濡傛灉璁劇疆涓簍rue錛岄偅涔堝簲鐢ㄥ湪寰楀埌涓涓湭瀹氫箟鐨刴essage璧勬簮鏃訛紝浼氳繑鍥瀗ull錛岃屼笉鏄繑鍥炰竴涓敊璇俊鎭傜‘鐪佹槸true銆?br /></font> </li> <li> <font size="2">maxFileSize<br />鏂囦歡涓婁紶鐨勫ぇ灝忎笂闄愶紝紜渷涓?50M<br /></font> </li> <li> <font size="2">bufferSize<br />鏂囦歡涓婁紶鏃剁殑緙撳啿鍖虹殑澶у皬錛岀‘鐪佷負4M<br /></font> </li> <li> <font size="2">tempDir<br />璁劇疆鐢ㄤ簬涓婁紶鏃剁殑涓存椂鐩綍銆傚伐浣滅洰褰曚細浣滀負涓涓猄ervlet鐜錛圕ontext錛夌殑灞炴ф彁渚涖?br /></font> </li> <li> <font size="2">validate<br />Are聽we聽using聽the聽new聽configuration聽file聽format?紜渷涓簍rue銆?br /></font> </li> <li> <font size="2">validating</font> </li> </ul> <p> <br /> <font size="2">鍦ㄨВ鏋愰厤緗甔ML鏂囦歡鏄槸鍚﹁繘琛屾湁鏁堟х殑楠岃瘉銆傜‘鐪佷負true<br /><br />ActionServlet涓簲鐢ㄤ簡鍛戒護璁捐妯″紡銆?br /><br />涓涓猄ervlet鍦ㄧ敱瀹瑰櫒鐢熸垚鏃訛紝棣栧厛浼氳皟鐢╥nit()鏂規硶榪涜鍒濆鍖栵紝鍦ㄦ帴鍒頒竴涓狧TTP璇鋒眰鏃訛紝璋冪敤鐩稿簲鐨勬柟娉曡繘琛屽鐞嗭紱姣斿GET璇鋒眰璋冪敤doGet()鏂規硶錛孭OST璇鋒眰璋冪敤doPost()鏂規硶銆傛墍浠ラ鍏堢湅鐪婣ctionServlet鐨刬nit()鏂規硶錛屼綘灝變細寰堟竻妤氫負浠涔圓ctionServlet鍙互瀹屾垚榪欎簺鍔熻兘浜嗐?br /></font> </p> <h3> <font size="2">init()</font> </h3> <p> <br /> <font size="2">鍦ㄥ畠鐨刬nit()鏂規硶涓紝ActionServlet渚濇璋冪敤濡備笅protected鐨勬柟娉曞畬鎴愬垵濮嬪寲錛?br /></font> </p> <ul> <li> <font size="2">initActions()聽錛嵚犅犅犅犅犲ぇ瀹跺彲鑳借繕鏇炬湁榪欎釜鐤戦棶錛歋truts涓轟粈涔堝彲浠ユ壘鍒頒竴涓姹俇RI瀵瑰簲鐨刟ction綾誨憿錛熺瓟妗堝氨鍦ㄨ繖鍎匡紝ActionServlet鏈変竴涓猘ctions灞炴э紝綾誨瀷涓簅rg.apache.struts.util.FastHashMap錛岀敤浜庡瓨鍌ㄤ互綾葷殑鍏ㄥ悕涓簁ey鐨勫凡瀹炰緥鍖栫殑Action綾匯傚湪init()鏃墮鍏堣皟鐢ㄧ殑灝辨槸initActions()鏂規硶錛屽湪榪欎釜鏂規硶涓彧鏄畝鍗曠殑娓呴櫎map涓殑鎵鏈夌殑鍚嶅煎錛?br /></font> <div id="iepgumw" class="codeStyle"> <ol> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">synchronized</font></b>聽(actions)聽{ </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽actions.setFast(<b><font color="#0000ff">false</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽actions.clear(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽actions.setFast(<b><font color="#0000ff">true</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽} </font> </li> </ol> </div> <br /> <font size="2">棣栧厛鎶奱ctions璁句負slow妯″紡錛岃繖鏃跺FastHashMap鐨勮闂槸綰跨▼鍚屾鐨勶紝鐒跺悗娓呴櫎actions涓殑鎵鏈夌殑宸插瓨鍦ㄧ殑鍚?鍊煎錛屾渶鍚庡啀鎶奱ctions鐨勬ā寮忚涓篺ast銆傜敱浜嶧astHashMap鏄痵truts鍦╦ava.util.HashMap鐨勫熀紜涓婄殑涓涓墿灞曠被錛屾槸涓轟簡閫傚簲澶氱嚎紼嬨佸茍涓斿HashMap鐨勮闂ぇ閮ㄥ垎鏄彧璇葷殑鐗規畩鐜鐨勯渶瑕併傚ぇ瀹剁煡閬搄ava.util.HashMap鏄潪綰跨▼瀹夊叏鐨勶紝鎵浠ashMap涓鑸傜敤浜庡崟綰跨▼鐜涓嬨俹rg.apache.struts.FastHashMap灝辨槸緇ф壙浜巎ava.util.HashMap錛屽湪鍏朵腑娣誨姞澶氱嚎紼嬬殑鏀寔浜х敓鐨勩傚湪fast妯″紡涓嬬殑宸ヤ綔鏂瑰紡鏄繖鏍風殑錛氳鍙栨槸闈炵嚎紼嬪悓姝ョ殑錛涘啓鍏ユ椂棣栧厛鍏嬮殕褰撳墠map錛岀劧鍚庡湪榪欎釜鍏嬮殕涓婂仛鍐欏叆鎿嶅仛錛屽畬鎴愬悗鐢ㄨ繖涓慨鏀瑰悗鐨勫厠闅嗙増鏈浛鎹㈠師鏉ョ殑map銆傞偅涔堝湪浠涔堟椂鍊欎細鎶夾ctions綾繪坊鍔犲埌榪欎釜map涓憿錛熸垜浠凡緇忔彁鍒頒簡struts鏄姩鎬佺殑鐢熸垚Action綾葷殑瀹炰緥鐨勶紝鍦ㄦ瘡嬈ctionServlet鎺ユ敹鍒頒竴涓狦ET鎴朠OST鐨凥TTP璇鋒眰鏃訛紝浼氬湪榪欎釜map涓煡鎵懼搴旂殑Action綾葷殑瀹炰緥錛屽鏋滀笉瀛樺湪錛岄偅涔堝氨瀹炰緥鍖栦竴涓紝騫舵斁鍏ap涓傚彲瑙佽繖涓猘ctions灞炴ц搗鍒頒簡瀵笰ction綾誨疄渚嬬殑緙撳瓨鐨勪綔鐢ㄣ?br /></font> </li> <li> <font size="2">initInternal()聽錛嵚犅犅犅犅犲垵濮嬪寲ActionServlet鍐呴儴浣跨敤鐨勮祫婧愬寘MessageResources錛屼嬌鐢∕essageResources.getMessageResources(internalName)寰楀埌聽聽聽聽internalName涓?org.apache.struts.action.ActionResources"瀵瑰簲鐨凙ctionResources.properties鏂囦歡銆傝繖涓祫婧愬寘涓昏鐢ㄤ簬ActionServlet澶勭悊榪囩▼涓殑鐢ㄥ埌鐨勬彁紺轟俊鎭紝榪欏効涓嶅睍寮璁ㄨ銆?br /></font> </li> <li> <font size="2">initDebug()聽錛嵚犅犅犅犅犱粠web.xml涓鍙栨湰搴旂敤鐨刣ebug綰у埆鍙傛暟getServletConfig().getInitParameter("debug")錛岀劧鍚庤祴緇檇ebug灞炴с?br /></font> </li> <li> <font size="2">initApplication()錛嵚犅犅犅犲垵濮嬪寲搴旂敤璧勬簮鍖咃紝騫舵斁緗叆ServletContext涓?br /></font> <div id="ydtokcu" class="codeStyle"> <ol> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><a target="_blank"><font class="classLink" color="#002c99"><u>String</u></font></a></b>聽factory聽=getServletConfig().getInitParameter(鈥渇actory鈥?;聽聽聽聽 </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><a target="_blank"><font class="classLink" color="#002c99"><u>String</u></font></a></b>聽oldFacory聽=聽MessageResourcesFactory.getFactoryClass(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">if</font></b>聽(factory聽!=<b><font color="#0000ff">null</font></b>) </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽MessageResourcesFactory.setFactoryClass(factory); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><a target="_blank"><font class="classLink" color="#002c99"><u>String</u></font></a></b>聽value聽=聽getServletConfig().getInitParameter(<font color="#ff33ff">"application"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽MessageResourcesFactory聽factoryObject聽= </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽MessageResourcesFactory.createFactory(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽application聽=聽factoryObject.createResources(value); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽MessageResourcesFactory.setFactory(oldFactory);聽 </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽getServletContext().setAttribute(<font color="#ff0000">Action</font>.MESSAGES_KEY,聽application); </font> </li> </ol> </div> <br /> <font size="2">璇存槑錛氭枃涓紩鐢ㄧ殑浠g爜鐗囨柇鍙兘浼氱渷鐣ヤ簡涓浜涗緥澶栨鏌ョ瓑闈炰富綰跨殑鍐呭錛屾暚璇鋒敞鎰忋?br /><br />棣栧厛浠庨厤緗枃浠朵腑璇誨彇factory鍙傛暟錛屽鏋滆繖涓弬鏁頒笉涓虹┖錛岄偅涔堝氨鍦∕essageResourcesFactory涓嬌鐢ㄨ繖涓寚瀹氱殑Factory綾伙紱鍚﹀垯錛屼嬌鐢ㄩ粯璁ょ殑宸ュ巶綾籵rg.apche.struts.util.PropertyMessageResourceFactory銆傜劧鍚庤皟鐢∕essageResourcesFactory鐨勯潤鎬乧reateFactory()鏂規硶錛岀敓鎴愪竴涓叿浣撶殑MessageResourceFactory瀵硅薄錛堟敞鎰忥細MessageResourcesFactory鏄娊璞$被錛夈傝繖鏍峰氨鍙互璋冪敤榪欎釜鍏蜂綋鐨凪essageResourceFactory鐨刢reateResource()鏂規硶寰楀埌閰嶇疆鏂囦歡(web.xml)涓畾涔夌殑璧勬簮鏂囦歡浜嗐?br />涓婇潰鐨刟pplication瀵硅薄綾誨瀷涓篗essageResources銆傚湪web.xml涓湪閰嶇疆ActionServlet鏃跺彲浠ユ寚瀹氫竴涓壒瀹氱殑宸ュ巶綾匯備笉鑳界洿鎺essageResourcesFactory鐨刢reateResources()鏂規硶錛屽洜涓鴻繖涓柟娉曟槸abstract鐨勩傚垱寤篺actoryObject鐨勮繃紼嬪涓嬶細<br /></font> <div id="tszroit" class="codeStyle"> <ol> <li> <font size="2">聽聽聽聽 </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽MessageResourceFactory聽factoryObject= </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽MessageResourcesFactory.createFactory(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽application聽=聽factoryObject.createResources(value); </font> </li> </ol> </div> <br /> <font size="2"><li>initMapping()聽錛嵚犅犅犅犱負搴旂敤鍒濆鍖杕apping淇℃伅ActionServlet鏈変竴涓猵rotected鐨勫睘鎬э細mapping錛屽皝瑁呬簡涓涓狝ctionMapping鐨勫璞¢泦鍚堬紝浠ヤ究浜庣鐞嗐佹煡鎵続ctionMapping銆俶appings鏄痮rg.apache.struts.action.ActionMappings綾葷殑瀹炰緥銆備富瑕佹湁涓や釜鏂規硶錛歛ddMapping(ActionMapping聽mapping)鍜宖indMapping(String聽path)銆侫ctionMapping涔熸槸浣跨敤涓婇潰鎻愬埌鐨刼rg.apache.struts.util.FastHashMap綾繪潵瀛樺偍鎵鏈夌殑ActionMapping瀵硅薄銆?br /></font> <div id="qqromet" class="codeStyle"> <ol> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽mappings.setServlet(<b><font color="#0000ff">this</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽鈥︹?</font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<i><font color="#339900">//聽Initialize聽the聽name聽of聽our聽ActionFormBean聽implementation聽class</font></i></font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽value聽=聽getServletConfig().getInitParameter(<font color="#ff33ff">"formBean"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">if</font></b>聽(value聽!=聽<b><font color="#0000ff">null</font></b>) </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽formBeanClass聽=聽value; </font> </li> <li> <font size="2">聽聽聽聽 </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<i><font color="#339900">//聽Initialize聽the聽name聽of聽our聽ActionForward聽implementation聽class</font></i></font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽value聽=聽getServletConfig().getInitParameter(<font color="#ff33ff">"forward"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">if</font></b>聽(value聽!=聽<b><font color="#0000ff">null</font></b>) </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽forwardClass聽=聽value; </font> </li> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<i><font color="#339900">//聽Initialize聽the聽name聽of聽our聽ActionMapping聽implementation聽class</font></i></font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽value聽=聽getServletConfig().getInitParameter(<font color="#ff33ff">"mapping"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">if</font></b>聽(value聽!=聽<b><font color="#0000ff">null</font></b>) </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽mappingClass聽=聽value; </font> </li> </ol> </div> <br /> <font size="2">鍦╥nitMapping()涓紝棣栧厛閾炬帴mappings瀵硅薄鍒版湰servlet瀹炰緥銆傚叾瀹炶繖鍙ヨ瘽鐨勪綔鐢ㄥ緢綆鍗曪紝鍦ˋctionMappings涓細鏈変竴涓狝ctionServlet綾誨瀷鐨勫睘鎬э紝榪欎釜灞炴у氨鐣屽畾浜嗚繖涓狝ctionMappings瀵硅薄鎵灞炵殑ActionServlet銆係truts鐨勫疄鐜版瘮杈冪伒媧伙紝鍏朵腑鐨凙ctionFormBean銆丄ctionForward銆丄ctionMapping綾諱綘瀹屽叏鍙互浣跨敤鑷繁瀹炵幇鐨勫瓙綾伙紝鏉ュ畾鍒禨truts鐨勫伐浣滄柟寮忋備笂闈㈢殑浠g爜灝變粠閰嶇疆鏂囦歡錛坵eb.xml錛変腑璇誨彇formBean銆乫orward銆乵apping鍙傛暟錛岃繖浜涘弬鏁板氨鏄綘瀹氬埗鐨凙ctionFormBean銆丄ctionForward銆丄ctionMapping綾誨悕銆?br /></font> <div id="mibcotn" class="codeStyle"> <ol> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<i><font color="#339900">//聽Initialize聽the聽context-relative聽path聽to聽our聽configuration聽resources</font></i></font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽value聽=聽getServletConfig().getInitParameter(<font color="#ff33ff">"config"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">if</font></b>聽(value聽!=聽<b><font color="#0000ff">null</font></b>) </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽config聽=聽value; </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<i><font color="#339900">//聽Acquire聽an聽input聽stream聽to聽our聽configuration聽resource</font></i></font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<font color="#ff0000">InputStream</font>聽input聽=聽getServletContext().getResourceAsStream(config); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽Digester聽digester聽=聽<b><font color="#0000ff">null</font></b>; </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽digester聽=聽initDigester(detail); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<b><font color="#0000ff">try</font></b>聽{ </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽formBeans.setFast(<b><font color="#0000ff">false</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽forwards.setFast(<b><font color="#0000ff">false</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽mappings.setFast(<b><font color="#0000ff">false</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽digester.parse(input); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽mappings.setFast(<b><font color="#0000ff">true</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽forwards.setFast(<b><font color="#0000ff">true</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽formBeans.setFast(<b><font color="#0000ff">true</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽}聽<b><font color="#0000ff">catch</font></b>聽(<font color="#ff0000">SAXException</font>聽e)聽{ </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<b><font color="#0000ff">throw</font></b>聽<b><font color="#0000ff">new</font></b>聽ServletException </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽(internal.getMessage(<font color="#ff33ff">"configParse"</font>,聽config),聽e); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽}聽<b><font color="#0000ff">finally</font></b>聽{ </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽input.close(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽} </font> </li> </ol> </div> <br /> <font size="2">浠巜eb.xml璇誨彇Struts鐨勯厤緗枃浠剁殑浣嶇疆銆備嬌鐢╫rg.apache.struts.digester.Digester瑙f瀽config鍙傛暟鏍囩ず鐨勯厤緗枃浠訛紝閫氬父涓衡?WEB-INF/struts-config.xml鈥濓紝瑙f瀽鍑烘墍鏈夌殑data-source銆乫orm-bean銆乤ction-mapping銆乫orward銆備粠涓婇潰鐨勭▼搴忕墖鏂湅鍒幫紝Digester浠呬粎璋冪敤浜嗕竴涓猵arse()鏂規硶錛岄偅涔堬紝Digester鏄庢牱鎶婅В鏋恠truts-config.xml鏂囦歡騫舵妸瑙f瀽鐨勭粨鏋渇orm-bean絳変俊鎭瓨鍌ㄥ埌灞炴у彉閲廸ormBeans絳変腑鐨勫憿錛熶綘鍙互娉ㄦ剰鍒板湪璋冪敤digester.parse(InputStream)涔嬪墠錛岄鍏堣皟鐢ㄤ簡initDigester()鏂規硶錛?br /></font> <div id="ttquchm" class="codeStyle"> <ol> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽Digester聽digester聽=聽<b><font color="#0000ff">new</font></b>聽Digester(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.push(<b><font color="#0000ff">this</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addObjectCreate(<font color="#ff33ff">"struts-config/action-mappings/action"</font>, </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽mappingClass,聽<font color="#ff33ff">"className"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addSetProperties(<font color="#ff33ff">"struts-config/action-mappings/action"</font>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addSetNext(<font color="#ff33ff">"struts-config/action-mappings/action"</font>, </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<font color="#ff33ff">"addMapping"</font>, </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<font color="#ff33ff">"org.apache.struts.action.ActionMapping"</font>); </font> </li> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addSetProperty </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽(<font color="#ff33ff">"struts-config/action-mappings/action/set-property"</font>, </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽聽聽聽聽聽<font color="#ff33ff">"property"</font>,聽<font color="#ff33ff">"value"</font>); </font> </li> </ol> </div> <br /> <font size="2">鍦ㄨ繖涓柟娉曚腑棣栧厛鐢熸垚涓涓狣igester瀵硅薄錛岀劧鍚庤緗В鏋愮殑瑙勫垯鍜屽洖璋冿紝濡傛灉浣犲XML銆丼AX涓嶆槸寰堢啛錛岃繖鍎夸笉蹇呯籂緙犲お娣便傝娉ㄦ剰鐨勬槸addSetNext()鏂規硶錛岃緗簡姣忎竴涓瑙f瀽鍏冪礌鐨凷et聽Next鍥炶皟鏂規硶錛岃岃繖涓柟娉曞氨鏄敱digester瑙f瀽鍣ㄧ殑鐖舵彁渚涚殑銆備笂闈㈢殑鐗囨柇涓殑鈥渁ddMapping鈥濆氨鏄疉ctionServlet鏈韓瀹氫箟鐨勪竴涓柟娉曪紝灝嗙敱Digester鍥炶皟銆侱igester灝辨槸綾嶆鎶婅В鏋愬嚭鐨勬瘡涓涓狥ormBean銆丄ctionForward銆丄ctionMapping絳夊瓨鍌ㄥ埌灞炴у彉閲廸ormBeans銆乫orwards銆乵appings絳変腑鐨勩?br /></font> </li> <li> <font size="2">initUpload()聽錛嵚犅犅犅犲垵濮嬪寲鏈夊叧Upload鐨勪竴浜涘弬鏁幫紝姣斿錛歜ufferSize銆乼empDir銆?br /></font> </li> <li> <font size="2">initDataSource()聽錛嶅彇鍑哄湪initMapping()涓粠閰嶇疆鏂囦歡涓鍙栫殑姣忎竴涓狣ataSource錛岃緗甃ogWriter錛屽鏋滀負GenericDataSource鐨勫疄渚嬶紝鍒欐墦寮鏁版嵁婧愩傜劧鍚庯紝鎶婃瘡涓猟ataSource鏀懼叆Context涓?br />dataSource.setLogWriter(scw)錛?br />((GenericDataSource)dataSource).open();<br />getServletContext().setAttribute(key,dataSource);<br /></font> </li> <li> <font size="2">initOther()聽錛嵚犅犅犅犅犅犅犅犺緗叾瀹冨皻鏈垵濮嬪寲鐨勭殑鍙傛暟錛坈ontent銆乴ocale銆乶ocache錛夛紝騫跺彂甯僨ormBeans銆乫orwards銆乵appings鍒癈ontext錛?br />getServletContext().setAttribute(Action.FORM_BEANS_KEY,聽formBeans);<br />getServletContext().setAttribute(Action.FORWARDS_KEY,聽forwards);<br />getServletContext().setAttribute(Action.MAPPINGS_KEY,聽mappings);<br /></font> </li> <li> <font size="2">initServlet()聽錛嵚犅犅犅犲垵濮嬪寲Controller聽Servlet鐨凷ervlet聽Mapping銆傝繖鍎夸篃浣跨敤浜咲igester宸ュ叿錛屾壂鎻弚eb.xml鎵鏈夌殑<web-app/servlet-mapping>錛屽鎵緎ervlet-name涓庡綋鍓峉ervlet鐩稿悓鐨刴apping錛岀疆鍏ontext銆備唬鐮佸涓嬶紱<br /></font> <div id="dwebjdi" class="codeStyle"> <ol> <li> <font size="2"> </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽Digester聽digester聽=聽<b><font color="#0000ff">new</font></b>聽Digester(); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.push(<b><font color="#0000ff">this</font></b>); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.setDebug(debug); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.setValidating(validating); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addCallMethod(鈥渨eb-appservlet-mapping鈥?鈥渁ddServletMapping鈥?聽2); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addCallParm(鈥渨eb-appservlet-mappingservlet-name鈥?聽0); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.addCallParm(鈥渨eb-appservlet-mappingurl-pattern鈥?聽1); </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽<font color="#ff0000">InputStream</font>聽is聽=聽getServletContext().getResourceAsStream(鈥?WEB-INFweb.xml鈥?; </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽digester.parse(is);聽 </font> </li> <li> <font size="2">聽聽聽聽聽聽聽聽getServletContext().setAttribute(<font color="#ff0000">Action</font>.SERVLET_KEY,servletMapping); </font> </li> </ol> </div> <br /> </li> </ul> <img src ="http://www.tkk7.com/nikita/aggbug/232275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/nikita/" target="_blank">picture talk</a> 2008-10-04 00:07 <a href="http://www.tkk7.com/nikita/archive/2008/10/04/232275.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://daohang123456.com" target="_blank">无码精品一区二区三区免费视频 </a>| <a href="http://yanhx.com" target="_blank">精品视频在线免费观看</a>| <a href="http://0730jxpm.com" target="_blank">91在线视频免费播放</a>| <a href="http://saob19.com" target="_blank">国产亚洲3p无码一区二区</a>| <a href="http://zhaoxinwo.com" target="_blank">亚洲码欧美码一区二区三区</a>| <a href="http://zmnhssn.com" target="_blank">国产成人AV片无码免费</a>| <a href="http://zzo8.com" target="_blank">亚洲熟女少妇一区二区</a>| <a href="http://jte-sh.com" target="_blank">特级毛片在线大全免费播放</a>| <a href="http://3789re.com" target="_blank">亚洲免费网站观看视频</a>| <a href="http://df6618.com" target="_blank">曰韩无码AV片免费播放不卡</a>| <a href="http://jmdehong.com" target="_blank">久久99亚洲网美利坚合众国</a>| <a href="http://8xcb.com" target="_blank">中文字幕乱理片免费完整的</a>| <a href="http://023439.com" target="_blank">亚洲Av无码乱码在线znlu</a>| <a href="http://zp0533.com" target="_blank">亚洲国产无线乱码在线观看</a>| <a href="http://dazngt.com" target="_blank">四虎成人免费影院网址</a>| <a href="http://szzdjl.com" target="_blank">亚洲色欲色欲综合网站</a>| <a href="http://8884493.com" target="_blank">精品国产污污免费网站</a>| <a href="http://ninggelang.com" target="_blank">色窝窝亚洲AV网在线观看</a>| <a href="http://bjsymsdwl.com" target="_blank">午夜神器成在线人成在线人免费</a>| <a href="http://gzqhit.com" target="_blank">中文字幕免费观看全部电影</a>| <a href="http://yy6090qpgdy.com" target="_blank">欧洲 亚洲 国产图片综合</a>| <a href="http://yaojing123.com" target="_blank">免费99精品国产自在现线</a>| <a href="http://seosuanfa.com" target="_blank">亚洲无吗在线视频</a>| <a href="http://tccqdy.com" target="_blank">97人伦色伦成人免费视频</a>| <a href="http://240842.com" target="_blank">亚洲av永久无码</a>| <a href="http://gdporun.com" target="_blank">亚洲国产婷婷香蕉久久久久久</a>| <a href="http://bz600.com" target="_blank">九九免费久久这里有精品23</a>| <a href="http://ss8kk.com" target="_blank">国产亚洲av片在线观看18女人</a>| <a href="http://044242.com" target="_blank">国产福利免费视频 </a>| <a href="http://gkhnf.com" target="_blank">日本在线免费观看</a>| <a href="http://av56cc.com" target="_blank">日韩在线视频线视频免费网站</a>| <a href="http://k4h3.com" target="_blank">亚洲区视频在线观看</a>| <a href="http://lzlcp.com" target="_blank">色窝窝免费一区二区三区</a>| <a href="http://hezuoedu.com" target="_blank">igao激情在线视频免费</a>| <a href="http://www-840012.com" target="_blank">亚洲欧美日韩中文字幕在线一区</a>| <a href="http://hzsprfm.com" target="_blank">亚洲高清在线观看</a>| <a href="http://ssdtsz.com" target="_blank">妻子5免费完整高清电视</a>| <a href="http://pc521.com" target="_blank">久久综合九色综合97免费下载</a>| <a href="http://sijep.com" target="_blank">成年大片免费高清在线看黄</a>| <a href="http://fense1.com " target="_blank">亚洲日韩国产二区无码</a>| <a href="http://56v6.com" target="_blank">国产成人精品亚洲日本在线</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>