锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品久久久久,亚洲春色在线视频,久久精品国产亚洲av水果派http://m.tkk7.com/zlsunnan/category/5657.html涓栫晫鎬繪槸鍙嶅弽瑕嗚閿欓敊钀借惤鍦伴鍘?鏉ヤ笉鍙婂徆鎭?鐢熸椿涓嶆槸騫沖鉤娣℃貳浠庝粠瀹瑰鐨勪笢瑗?涓嶈兘鏀懼純zh-cnTue, 05 Jun 2007 06:28:24 GMTTue, 05 Jun 2007 06:28:24 GMT60[struts]甯歌寮傚父淇℃伅鍜岃В鍐蟲柟娉?/title><link>http://m.tkk7.com/zlsunnan/archive/2007/06/04/121776.html</link><dc:creator>鈽嗚摑鑹叉ⅵ鎯斥槅</dc:creator><author>鈽嗚摑鑹叉ⅵ鎯斥槅</author><pubDate>Mon, 04 Jun 2007 02:58:00 GMT</pubDate><guid>http://m.tkk7.com/zlsunnan/archive/2007/06/04/121776.html</guid><wfw:comment>http://m.tkk7.com/zlsunnan/comments/121776.html</wfw:comment><comments>http://m.tkk7.com/zlsunnan/archive/2007/06/04/121776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zlsunnan/comments/commentRss/121776.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zlsunnan/services/trackbacks/121776.html</trackback:ping><description><![CDATA[<div id="hrpnzrb" class="postText"> <p>浠ヤ笅鎵璇寸殑struts-config.xml鍜孉pplicationResources.properties絳夋枃浠跺悕鏄己鐪佹椂浣跨敤鐨勶紝濡傛灉浣犱嬌鐢ㄤ簡澶氭ā鍧楋紝鎴栨寚瀹氫簡涓嶅悓鐨勮祫婧愭枃浠跺悕縐幫紝榪欎簺鍚嶅瓧瑕佸仛鐩稿簲鐨勪慨鏀廣?/p> <p><strong>1銆?#8220;No bean found under attribute key XXX”<br></strong>鍦╯truts-config.xml閲屽畾涔変簡涓涓狝ctionForm錛屼絾type灞炴ф寚瀹氱殑綾諱笉瀛樺湪錛宼ype灞炴х殑鍊煎簲璇ユ槸Form綾葷殑鍏ㄥ悕銆傛垨鑰呮槸錛屽湪Action鐨勫畾涔変腑錛宯ame鎴朼ttribute灞炴ф寚瀹氱殑ActionForm涓嶅瓨鍦ㄣ?br></p> <p><strong>2銆?#8220;Cannot find bean XXX in any scope”</strong><br>鍦ˋction 閲屼竴鑸細request.setAttribute()涓浜涘璞★紝鐒跺悗鍦ㄨ漿鍚戠殑jsp鏂囦歡閲岋紙鐢╰ag鎴杛equest.getAttribute()鏂? 娉曪級寰楀埌榪欎簺瀵硅薄騫舵樉紺哄嚭鏉ャ傝繖涓紓甯告槸璇磈sp瑕佸緱鍒頒竴涓璞★紝浣嗗墠闈㈢殑Action閲屽茍娌℃湁灝嗗璞¤緗埌request錛堜篃鍙互鏄痵ession銆? servletContext錛夐噷銆?br>鍙兘鏄悕瀛楅敊浜嗭紝璇鋒鏌sp閲岀殑tag鐨勪竴鑸槸name灞炴э紝鎴杇etAttribute()鏂規硶鐨勫弬鏁板鹼紱鎴栬呮槸Action閫昏緫鏈夐棶棰樻病鏈夋墽琛宻etAttribute()鏂規硶灝卞厛杞悜浜嗐?br>榪? 鏈夊彟澶栦竴涓彲鑳斤紝綰補鏄痡sp鏂囦歡鐨勯棶棰橈紝渚嬪<logic:iterate>浼氭寚瀹氫竴涓猧d鍊鹼紝鐒跺悗鍦ㄥ驚鐜噷<bean: write>浣跨敤榪欎釜鍊間綔涓簄ame鐨勫鹼紝濡傛灉榪欎袱涓間笉鍚岋紝涔熶細鍑虹幇姝ゅ紓甯搞傦紙閮芥槸涓涓亾鐞嗭紝request閲屾病鏈夊搴旂殑瀵硅薄銆傦級<br></p> <p><strong>3銆?#8220;Missing message for key "XXX"”</strong><br>緙哄皯鎵闇鐨勮祫婧愶紝媯鏌pplicationResources.properties鏂囦歡閲屾槸鍚︽湁jsp鏂囦歡閲岄渶瑕佺殑璧勬簮錛屼緥濡傦細</p> <div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 98%;"> <div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;"><</span><span style="color: #000000;">bean:message key</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">msg.name.prompt</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span></div> </div> <p>榪? 琛屼唬鐮佷細鎵緈sg.name.prompt璧勬簮錛屽鏋淎ppliationResources.properties閲屾病鏈夎繖涓祫婧愬氨浼氬嚭鐜版湰寮傚父銆傚湪浣? 鐢ㄥ妯″潡鏃訛紝瑕佹敞鎰忓湪妯″潡鐨剆truts-config-xxx.xml閲屾寚瀹氳浣跨敤鐨勮祫婧愭枃浠跺悕縐幫紝鍚﹀垯褰撶劧浠涔堣祫婧愪篃鎵句笉鍒幫紝榪欎篃鏄竴涓緢瀹規槗鐘殑閿? 璇?/p> <p><strong>4銆?#8220;No getter method for property XXX of bean teacher”</strong><br>榪欐潯寮傚父淇℃伅璇村緱寰堟槑鐧斤紝jsp閲岃鍙栦竴涓猙ean鐨勫睘鎬у嚭鏉ワ紝浣嗚繖涓猙ean騫舵病鏈夎繖涓睘鎬с備綘搴旇媯鏌sp涓煇涓爣絳劇殑property灞炴х殑鍊箋備緥濡備笅闈唬鐮佷腑鐨刢ade搴旇鏀逛負code鎵嶅錛?/p> <div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 98%;"> <div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;"><</span><span style="color: #000000;">bean:write name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">teacher</span><span style="color: #000000;">"</span><span style="color: #000000;"> property</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">cade</span><span style="color: #000000;">"</span><span style="color: #000000;"> filter</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span></div> </div> <br> <p><strong>5銆?#8220;Cannot find ActionMappings or ActionFormBeans collection”<br></strong>涓鑸槸鍥犱負struts-config.xml閲岄潰鐨?lt;action鍐欓敊浜嗐倄ml鐢ㄦ墜宸ュ啓寰堝鏄撳嚭閿?#8230;… <br><strong>6銆?#8220;Cannot retrieve mapping for action XXX”<br></strong>鍦?jsp鐨?lt;form>鏍囩閲屾寚瀹歛ction='/XXX'錛屼絾榪欎釜Action騫舵湭鍦╯truts-config.xml閲岃緗繃銆?/p> <p><strong>7銆丠TTP Status 404 - /xxx/xxx.jsp<br></strong>Forward鐨刾ath灞炴ф寚鍚戠殑jsp欏甸潰涓嶅瓨鍦紝璇鋒鏌ヨ礬寰勫拰妯″潡錛屽浜庡悓涓妯″潡涓殑Action杞悜錛宲ath涓笉搴斿寘鍚ā鍧楀悕錛涙ā鍧楅棿杞悜錛岃浣忎嬌鐢╟ontextRelative="true"銆?/p> <p><strong>8銆佹病鏈変換浣曞紓甯鎬俊鎭紝鏄劇ず絀虹櫧欏甸潰</strong><br>鍙兘鏄疉ction閲屼嬌鐢ㄧ殑forward涓巗truts-config.xml閲屽畾涔夌殑forward鍚嶇О涓嶅尮閰嶃?br></p> <p><strong>9銆?#8220;The element type "XXX" must be terminated by the matching end-tag "XXX".”<br></strong>榪欎釜鏄痵truts-config.xml鏂囦歡鐨勬牸寮忛敊璇紝浠旂粏媯鏌ュ畠鏄惁鏄壇鏋勭殑xml鏂囦歡錛屽叧浜巟ml鏂囦歡鐨勬牸寮忚繖閲屽氨涓嶈禈榪頒簡銆?/p> <p><strong>10銆?#8220;Servlet.init() for servlet action threw exception”</strong><br>涓鑸嚭鐜拌繖縐嶅紓甯稿湪鍚庨潰浼氭樉紺轟竴涓叧浜嶢ctionServlet鐨勫紓甯稿爢鏍堜俊鎭紝鍏朵腑鎸囧嚭浜嗗紓甯稿叿浣撳嚭鐜板湪浠g爜鐨勫摢涓琛屻傛垜鏇劇粡閬囧埌鐨勪竴嬈℃彁紺哄涓嬶細</p> <div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 98%;"> <div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">java.lang.NullPointerException<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">    at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:</span><span style="color: #000000;">1003</span><span style="color: #000000;">)<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">    at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:</span><span style="color: #000000;">955</span><span style="color: #000000;">)<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><img src="http://www.cnblogs.com/Images/dot.gif"></span></div> </div> <p><br>涓鴻В鍐抽棶棰橈紝鍏堜笅杞絪truts鐨勬簮鐮佸寘錛岀劧鍚庡湪ActionServlet.java鐨勭1003琛屾彃鍏ユ柇鐐癸紝騫跺鍚勫彉閲忚繘琛岀洃瑙嗐傚緢涓漢錛屾垜绔熺劧鎶妔truts-config.xml鏂囦歡寮勪涪浜嗭紝鍥犳鍑虹幇浜嗕笂闈㈢殑寮傚父錛屽簲璇ユ槸鍜孋VS鍚屾鏃朵笉灝忓績鍒犻櫎鐨勩?/p> <p><strong>11銆?#8220;Resources not defined for Validator”</strong><br>榪欎釜鏄埄鐢╒alidator鎻掍歡鍋氶獙璇佹椂鍙兘鍑虹幇鐨勫紓甯革紝榪欐椂浣犺媯鏌alidation.xml鏂囦歡錛岀湅閲岄潰浣跨敤鐨勮祫婧愭槸鍚︾‘瀹炴湁瀹氫箟錛宖orm鐨勫悕縐版槸鍚︽紜紝絳夌瓑銆?/p> <p>涓婇潰榪欎簺鏄垜鍦ㄧ敤Struts鍋氶」鐩椂閬囧埌榪囩殑闂錛屽叾涓竴浜涙浘鍥扮粫鎴戜笉灝戞椂闂達紝鍏跺疄澶ч儴鍒嗛兘鏄嚜宸變笉緇嗗績閫犳垚鐨勩傚笇鏈涜繖綃囨枃绔犺兘瀵逛綘鐨勫紑鍙戞湁鎵甯姪錛屽茍嬈㈣繋緇х畫琛ュ厖銆?/p> </div><img src ="http://m.tkk7.com/zlsunnan/aggbug/121776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zlsunnan/" target="_blank">鈽嗚摑鑹叉ⅵ鎯斥槅</a> 2007-06-04 10:58 <a href="http://m.tkk7.com/zlsunnan/archive/2007/06/04/121776.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Struts 2.0緋誨垪http://m.tkk7.com/zlsunnan/archive/2007/03/04/101694.html鈽嗚摑鑹叉ⅵ鎯斥槅鈽嗚摑鑹叉ⅵ鎯斥槅Sat, 03 Mar 2007 17:03:00 GMThttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101694.htmlhttp://m.tkk7.com/zlsunnan/comments/101694.htmlhttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101694.html#Feedback0http://m.tkk7.com/zlsunnan/comments/commentRss/101694.htmlhttp://m.tkk7.com/zlsunnan/services/trackbacks/101694.htmlStruts 2.0緋誨垪

鈽嗚摑鑹叉ⅵ鎯斥槅 2007-03-04 01:03 鍙戣〃璇勮
]]>
Struts 搴旂敤杞Щ鍒?Struts 2 ( 浜?) http://m.tkk7.com/zlsunnan/archive/2007/03/04/101693.html鈽嗚摑鑹叉ⅵ鎯斥槅鈽嗚摑鑹叉ⅵ鎯斥槅Sat, 03 Mar 2007 17:01:00 GMThttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101693.htmlhttp://m.tkk7.com/zlsunnan/comments/101693.htmlhttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101693.html#Feedback0http://m.tkk7.com/zlsunnan/comments/commentRss/101693.htmlhttp://m.tkk7.com/zlsunnan/services/trackbacks/101693.html闃呰鍏ㄦ枃

鈽嗚摑鑹叉ⅵ鎯斥槅 2007-03-04 01:01 鍙戣〃璇勮
]]>
Struts 搴旂敤杞Щ鍒?Struts 2 (涓)http://m.tkk7.com/zlsunnan/archive/2007/03/04/101690.html鈽嗚摑鑹叉ⅵ鎯斥槅鈽嗚摑鑹叉ⅵ鎯斥槅Sat, 03 Mar 2007 16:51:00 GMThttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101690.htmlhttp://m.tkk7.com/zlsunnan/comments/101690.htmlhttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101690.html#Feedback0http://m.tkk7.com/zlsunnan/comments/commentRss/101690.htmlhttp://m.tkk7.com/zlsunnan/services/trackbacks/101690.htmlSpringSide鍥㈤槦聽 聽杞澆璇鋒敞鏄庡嚭澶勩?br />
聽 聽聽聽鏈夊緢澶氫漢閮藉緢鐔熸倝 Struts, 鏃犺鏄粠欏圭洰涓洿鎺ヨ幏寰楃殑瀹炴垬緇忛獙榪樻槸浠庝功涓簡瑙e埌鐨勩傛垜浠繖涓緋誨垪鏂囩珷錛屽皢閫氳繃涓涓敱 Stuts 杞Щ鍒?Struts2 綆鍗曠殑渚嬪瓙鍚戝ぇ瀹跺睍鐜癝truts2鐨勬墍鏈夌壒寰併?br />聽 聽 鍦ㄦ垜浠紑濮嬭繖涓緥瀛愪箣鍓嶏紝浣犻渶瑕佸幓鐭ラ亾涓鐐?Struts2鐨勮儗鏅煡璇嗐?鍦ㄧ涓閮ㄥ垎鐨勬枃绔犱腑錛屾垜浠皢浠嬬粛Struts2涓嶴truts鐨勬牳蹇冩鏋剁殑涓嶅悓鐐癸紝浠ュ姪浜庢洿濂藉湴浜嗚В鍏朵粬鏂歸潰鐨勬暣鍚堛傜浜岄儴鍒嗕腑錛屾垜浠皢娣卞叆鎺㈣ actions 鐨勫樊鍒? action鐩稿叧鐨勬鏋剁壒寰侊紝鍜宎ction閰嶇疆銆傚湪鏈鍚庝竴閮ㄥ垎涓紝鎴戜滑灝嗕細璁茶堪 user interface錛屾垜浠篃浼氳鍒板叾鏋舵瀯錛孶I鏋勪歡錛宼hemes 鍜屾爣絳俱?榪樻湁濡備綍涓轟綘鐨勫簲鐢ㄥ姞涓婃柊鐨勫瑙傘?br />聽 聽 鎴戜滑騫朵笉鎵撶畻璋堝強榪佺Щ榪囩▼鐨勬墍鏈夌粏鑺傛柟闈紝鎴戜滑鍙槸浠庡嚭鍙戠偣寮濮嬩粙緇峉truts2 鐨勬蹇靛拰鐜板湪鍙敤鐨勬墍鏈夌壒寰併備絾鎷ユ湁榪欎簺鐭ヨ瘑錛屼綘灝嗗湪浠ュ悗Struts2鐨勫簲鐢ㄤ腑鏃犲線鑰屼笉鍒┿?br />聽 聽
Struts鐨勫巻鍙?/font>
聽 聽 Struts鐨勭涓涓増鏈?鏄湪 2001騫?鏈堜喚鍙戝竷銆傚畠鎻愪緵浜嗕竴涓猈eb搴旂敤鐨勮В鍐蟲柟妗堬紝濡備綍璁?JSPs 鍜?servlets 鍏卞瓨鍘繪彁渚涙竻鏅扮殑鍒嗙瑙嗗浘鍜屼笟鍔″拰搴旂敤閫昏緫鐨勬灦鏋勩傚湪Struts涔嬪墠錛屾渶閫氬父鐨勫仛娉曟槸鍦↗SP涓姞鍏ヤ笟鍔″拰搴旂敤閫昏緫錛屾垨鑰呭湪servlets涓敓鎴愯鍥俱?br />聽 聽 鑷粠絎竴涓増鏈殑鍙戝竷錛?Struts 瀹為檯涓婂凡鎴愪負涓氱晫鍏鐨刉eb搴旂敤鏍囧噯銆備絾闅忕潃鏃墮棿鐨勬帹縐伙紝Web搴旂敤妗嗘灦緇忓父鍙樺寲鐨勯渶姹傦紝浜х敓浜嗗嚑涓笅涓浠?Struts鐨勮В鍐蟲柟妗堛傚叾涓袱涓彲閫夋柟妗堟槸Shale 鍜?Struts Ti銆?Shale 鏄竴涓熀浜庢瀯寤虹殑妗嗘灦錛屽茍鍦ㄦ渶榪戞垚涓?Apache 涓殑閲嶈欏圭洰銆傝?Struts Ti 鍒欐槸緇х畫鍧氭寔 MVC妯″紡鐨勫熀紜涓婃敼榪涳紝緇х畫Struts鐨勬垚鍔熺粡楠屻?br />聽 聽 WebWork欏圭洰鏄湪2002騫?鏈堝彂甯冪殑錛屽畠瀵筍truts寮忔鏋惰繘琛屼簡闈╁懡鎬ф敼榪涳紝寮曡繘浜嗕笉灝戞柊鐨勬濇兂錛屾蹇靛拰鍔熻兘錛屼絾鍜屽師Struts浠g爜騫朵笉鍏煎銆俉ebWork鏄竴涓垚鐔熺殑妗嗘灦錛岀粡榪囦簡濂藉嚑嬈¢噸澶х殑鏀硅繘涓庡彂甯冦傚湪2005騫?2鏈堬紝WebWork涓嶴truts Ti鍐沖畾鍚堟嫾錛?鍐嶆鍚屾椂錛?Struts Ti 鏀瑰悕涓?Struts Action Framework 2.0,鎴愪負Struts鐪熸鐨勪笅涓浠c?br />
璇鋒眰濡備綍榪愪綔
聽 聽 鍦ㄦ垜浠紑濮嬭緇嗘帰璁ㄥ浣曡漿縐籗truts鍒癝truts2涔嬪墠錛岃鎴戜滑鏉ョ湅鐪嬫暣涓姹傛祦紼嬪湪鏂版灦鏋勪腑鏄浣曡繍浣滅殑銆備綘浼氭敞鎰忓埌鍦ㄦ暣涓姹傜殑鐢熷懡鍛ㄦ湡錛屼粛鏄互controller浣滀富浣擄紝鑰屼笖鎵鏈夌殑姒傚康榪橀兘鏄綘浠ュ墠鎵鐔熸倝鐨勶紝 灝卞錛?br />
  • 閫氳繃URL璇鋒眰鐨勫弬鏁版潵璋冪敤Actions鏉ユ妸鏁版嵁浼犵粰server.
  • 鎵鏈夌殑Servlet objects (request, response, session,涔嬬被.) 浠嶇劧鍙互鍦ˋction涓幏鍙?/li>
    涓嬪浘灞曠ず浜嗘暣涓姹傜殑姒傝榪囩▼:


    鏁翠釜璇鋒眰榪囩▼鍙互鍒嗕負鍏楠?
    1. 涓涓姹備駭鐢熷茍緇忕敱妗嗘灦澶勭悊 - 妗嗘灦鏍規嵁璇鋒眰鍖歸厤鐩稿簲鐨勯厤緗紝濡備嬌鐢ㄥ摢浜涙嫤鎴櫒錛宎ction 綾誨拰緇撴灉銆?
    2. 璇鋒眰閫氳繃涓緋誨垪鐨勬嫤鎴櫒 - 鎷︽埅鍣紝鍜屾嫤鎴櫒緇勭粡閰嶇疆鍚庯紝鑳藉鐞嗕笉鍚岀瓑綰х殑璇鋒眰錛屽畠浠負璇鋒眰鎻愪緵浜嗗悇縐嶉澶勭悊錛屽垏闈㈠鐞嗐傝繖鍜孲truts鐨勪嬌鐢?Jakarta Commons Chain 鏋勪歡鐨?RequestProcessor綾誨緢鐩鎬技銆?
    3. 璋冪敤 Action - 浜х敓涓涓柊鐨刟ction瀵硅薄瀹炰緥錛屽茍鎻愪緵璇鋒眰鎵璋冪敤鐨勫鐞嗛昏緫鐨勬柟娉曘係truts2 鍙互鍦ㄩ厤緗產ction鏃朵負璇鋒眰鍒嗛厤鍏舵寚瀹氱殑鏂規硶銆傛垜浠湪絎簩閮ㄦ枃绔犱腑灝嗗榪欐楠よ繘琛岃繘涓姝ヨ璁?
    4. 璋冪敤浜х敓鐨勭粨鏋?- 鑾峰彇閫氳繃action鐨勬柟娉曞鐞嗗悗榪斿洖鏉ョ殑緇撴灉錛屽尮閰嶅叾result class騫惰皟鐢ㄤ駭鐢熺殑瀹炰緥銆傛湁縐嶆儏鍐墊槸鍦║I妯℃澘鍘葷敓鎴怘TML鏃舵墠鍘誨鐞嗚繖浜涚粨鏋溿傚鏋滃湪榪欑鎯呭喌涓嬶紝鍦⊿truts2 妯℃澘涓殑tags鑳界洿鎺ヨ繑鍥炲埌 action 涓紝鍙栫粨鏋滄潵鍛堢幇鐣岄潰銆傘
    5. 璇鋒眰鍐嶆緇忚繃涓緋誨垪鐨勬嫤鎴櫒澶勭悊鍚庤繑鍥?/b> - 璇鋒眰鍙嶉『搴忛氳繃涓庡師鏉ヨ繘鍏ユ椂鐨勬嫤鎴櫒閾? 褰撶劧錛屼綘涔熷彲浠ラ厤緗湪榪欎釜榪囩▼涓噺灝戞垨澧炲姞鎷︽埅鍣ㄥ鐞嗭紟
    6. 璇鋒眰榪斿洖鍒扮敤鎴?- 鏈鍚庝竴姝ユ槸鐢?control 榪斿洖鍒皊ervlet銆傞氬父鏄敓鎴怘TML榪斿洖鍒皍ser, 浣嗕綘涔熷彲浠ユ寚瀹氳繑鍥炵殑HTTP澶存垨HTTP閲嶅畾鍚戙?
      浣犲簲璇ュ凡娉ㄦ剰鍒幫紝Struts2涓嶴truts鐨勫樊鍒傛渶鏄庢樉鐨勫氨鏄疭truts2鏄痯ull-MVC 鏋舵瀯錛屽氨鏄彲浠ョ洿鎺ヤ粠Action涓幏鍙栨墍闇瑕佺殑鏁版嵁錛岃屼笉鏄儚Struts閭f牱蹇呴』鎶?beans 瀛樺埌page, request,鎴栬卻ession涓墠鑳借幏鍙栥傝繖涓垜浠皢鍦ㄤ笅涓绔犱腑璇︾粏鎻愬強銆?br />
      閰嶇疆妗嗘灦
      棣栧厛鏈閲嶈鐨勬槸錛岃妗嗘灦鑳介氳繃web.xml鍦╯ervlet containers閲岃繍琛屻?br />涓嬮潰榪欎釜灝辨槸澶у閮界啛鎮夌殑 Struts鍦?web.xml閲岀殑閰嶇疆鏂規硶

      聽 聽
      <servlet>
      聽 聽聽 聽聽聽<servlet-name>action</servlet-name>
      聽 聽聽 聽聽聽<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      聽 聽聽 聽聽聽<init-param>
      聽 聽聽 聽聽 聽聽 聽<param-name>config</param-name>
      聽 聽聽 聽聽 聽聽 聽<param-value>/WEB-INF/struts-config.xml</param-value>
      聽 聽聽 聽聽聽</init-param>
      聽 聽聽 聽聽聽<load-on-startup>2</load-on-startup>
      聽 聽 </servlet>

      聽 聽 <servlet-mapping>
      聽 聽聽 聽聽聽<servlet-name>action</servlet-name>
      聽 聽聽 聽聽聽<url-pattern>*.do</url-pattern>
      聽 聽 </servlet-mapping>

      鍦?Struts2 涓紝榪欎釜鏈夊皯璁告敼鍙橈紝鏈鏄庢樉鐨勬槸dispatcher 鐢眘ervlet杞負servlet filter, 鍏墮厤緗拰servlet涓鏍風畝鍗曪紝濡備笅錛?br />
      聽 聽
      銆<filter>
      聽 聽聽 聽聽聽銆<filter-name>webwork</filter-name>
      聽 聽聽 聽聽聽銆銆銆<filter-class>
      聽 聽聽 聽聽 聽聽 聽org.apache.struts.action2.dispatcher.FilterDispatcher
      銆銆銆</filter-class>
      聽 聽 </filter>

      聽 聽 <filter-mapping>
      銆銆銆<filter-name>webwork</filter-name>
      銆銆銆<url-pattern>/*</url-pattern>
      聽 聽 </filter-mapping>

      鍜宻ervlet閰嶇疆涓鏍鳳紝filter閰嶇疆瀹氫箟浜嗗悕縐?渚涘叧鑱?鍜宖ilter鐨勭被銆俧ilter mapping璁︰RI鍖歸厤鎴愬姛鐨勭殑璇鋒眰璋冪敤璇ilter銆傞粯璁ゆ儏鍐典笅錛屾墿灞曞悕涓?.action"銆?br />榪欎釜鏄湪default.properties鏂囦歡閲岀殑"struts.action.extension" 灞炴у畾涔夌殑銆?br />
      宸ュ叿綆?/b>:聽聽"default.properties"鏄厤緗夐」瀹氫箟鏂囦歡銆傞氳繃鍦╟lasspath涓寘鍚竴涓彨"struts.properties"鐨勬枃浠訛紝騫惰緗笉鍚岀殑灞炴у鹼紝浣犲彲浠ヨ鐩栬繖涓粯璁ょ殑閰嶇疆錛屽疄鐜拌嚜宸辯殑閰嶇疆銆?/blockquote>瀵逛簬Struts, servlet閰嶇疆鎻愪緵浜嗗垵濮嬪寲tag鐨勫弬鏁板拰浣跨敤鐨勬枃浠訛紝鑰孲truts2娌℃湁榪欐牱鐨勯厤緗弬鏁幫紝鍙栬屼唬涔嬬殑鏄湪classpath涓嬬殑榛樿閰嶇疆鏂囦歡"struts.xml"銆?br />
      宸ュ叿綆?鎻愮ず:銆Struts actions(鎵╁睍鍚?.do")錛孲truts2 actions(鎵╁睍鍚?.action"),鎵浠truts鍜孲truts2鍙互鍦ㄤ竴涓郴緇熶腑鍏卞瓨銆傛墍浠ユ渶濂芥槸淇濇寔鍘熷厛鐨勭郴緇燂紝鍦ㄦ柊鍔熻兘鐨勫紑鍙戜笂鐢⊿truts2,銆濡傛灉鏃墮棿鍜岃祫婧愬厑璁哥殑鎯呭喌涓嬪啀閫愭榪佺Щ銆傚彟涓縐嶆柟娉曟槸鍙槸鎶奡truts2鐨勬墿灞曞悕鏀逛負".do",鍙噸鐢↗SPs.
      鍒嗘瀽Actions
      鍦ㄤ笂闈粙緇嶇殑璇鋒眰榪愪綔嫻佺▼涓紝鎴戜滑璋堝強浜嗕竴浜汼truts鍜孲truts2鐨勪笉鍚岀偣銆傜幇鍦ㄦ垜浠皢杈冩繁鍏ュ湴鎺㈣榪欎袱涓鏋朵腑action緇撴瀯鐨勫叿浣撳樊鍒?br />璁╂垜浠潵鍥為【涓涓?Struts 鐨?action 緇撴瀯, 涓昏鐨勫艦寮忓涓嬶細

      public class MyAction extends Action {
      聽 聽 public ActionForward execute(ActionMapping mapping,
      聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽ActionForm form,
      聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽HttpServletRequest request,
      聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽HttpServletResponse response)
      聽 聽聽 聽聽 聽聽 聽throws Exception {
      聽 聽聽 聽聽聽// do the work
      聽 聽聽 聽聽聽return (mapping.findForward("success"));
      聽 聽 }
      }

      褰撳疄鐜頒竴涓猄truts action鏃? 浣犻渶瑕佹敞鎰忎竴涓嬮棶棰橈細
      1. 鎵鏈夌殑action銆閮藉繀欏葷戶鎵夸簬base Action 綾?
      2. 鎵鏈夌殑action閮藉繀欏繪槸綰跨▼瀹夊叏鐨?鍥犱負action鏄崟渚嬬殑,singleton鐨?
      3. 鍥犱負鎵鏈夌殑action閮藉繀欏繪槸綰跨▼瀹夊叏鐨?鎵浠ユ墍鏈夌殑瀵硅薄閮戒笉鑳芥槸綾誨睘鎬? 閮藉繀欏諱互鏂規硶鍙傛暟鐨勫艦寮忎紶鍊箋?
      4. 璋冪敤action鐨勬柟娉曞繀欏誨懡鍚嶄負 "execute" ( 鍦⊿truts涓殑聽聽DispatchAction 綾誨ソ鍍忓彲浠ョ敤鍏跺畠鏂規硶鍘繪墽琛屽悓涓涓猘ction 錛屼絾瀹為檯涓婂湪妗嗘灦涓皟鐢ㄧ殑浠嶇劧鏄?"execute" 鏂規硶銆?.
      5. ActionForward 鐨勭粨鏋滄槸閫氳繃ActionMapping 綾諱腑鐨勬柟娉曟潵浜х敓鐨?閫氬父鏄?findForward"鏂規硶.
        鐩告瘮杈冧箣涓嬶紝 Struts2鐨刟ction銆鎻愪緵浜嗗緢澶氱畝鍗曠殑瀹炵幇銆備笅闈㈠氨鏄釜渚嬪瓙

        public class MyAction {
        聽 聽public String execute() throws Exception {
        聽 聽聽 聽聽聽// do the work
        聽 聽聽 聽聽聽return "success";
        聽 聽}
        }

        棣栧厛浣犱細娉ㄦ剰鍒扮殑鏄紝Struts2涓殑action涓嶅啀緇ф壙浜庝換浣曠被鎴栭渶瑕佸疄鐜頒換浣曟帴鍙c傚疄闄呬笂錛屽畠榪樿繙涓嶅彧榪欎簺銆傛寜鐓ф儻渚嬶紝鍙湁"execute"鏂規硶鑳借皟鐢╝ction,銆浣嗗湪Struts2涓茍闈炲繀瑕侊紝浠諱綍澹版槑涓簆ublic String methodName() 鏂規硶閮借兘閫氳繃閰嶇疆鏉ヨ皟鐢╝ction.
        鍙﹀錛屼綘浼氭敞鎰忓埌榪斿洖鍊間笉鍐嶆槸"ActionForward ",鑰屾槸String, 濡傛灉浣犻渶鍠滄String鐨勫艦寮忥紝閭e湪Action鎺ュ彛閲屾湁涓府鍔╂柟娉曞彲浠ユ彁渚涚畝鍗曠殑緇撴灉甯擱噺錛屽"success", "none", "error", "input" 鍜?"login"銆?br />鏈鍚庯紝鍜孲truts鏈澶х殑闈╁懡鎬х殑涓嶅悓鏄? 璋冪敤action涓嶅啀鏄甫鍙傛暟鐨勩傞偅浣犲浣曞湪鑾峰緱浣犳墍闇瑕佺殑鍊煎憿錛熺瓟妗堟槸"inversion of control" 鎴?"dependency injection", 鍙嶈漿鎺у埗(鎯充簡瑙f洿澶氬彲浠ョ湅Martin Fowler鐨勬枃绔?http://www.martinfowler.com/articles/injection.html)銆?br />涓轟簡鏇村ソ鍦頒簡瑙e弽杞帶鍒訛紝璁╂垜浠潵鐪嬬湅涓涓緥瀛愶紝濡備綍鍦╝ction澶勭悊榪囩▼涓彲浠ヨ闂埌HttpServerRequest 銆傚湪鎴戜滑鐨勪緥瀛愪腑錛屾垜浠敤ServletRequestAware 鎺ュ彛錛岃繖涓帴鍙e寘鍚簡鐩稿簲灞炴х殑setter,濡備笅

        public interface ServletRequestAware {
        聽 聽 public void setServletRequest(HttpServletRequest request);
        }

        褰撴垜浠戶鎵胯繖涓帴鍙f椂錛屾垜浠渶瑕侀氳繃setter涓烘垜浠殑HttpServerRequest 灞炴у彉閲忚祴鍊鹼細

        public class MyAction implements ServletRequestAware {
        聽 聽private HttpServletRequest request;
        聽 聽public void setServletRequest(HttpServletRequest request) {
        聽 聽聽 聽聽聽this.request = request;
        聽 聽}
        聽 聽public String execute() throws Exception {
        聽 聽聽 聽聽聽// do the work using the request
        聽 聽聽 聽聽聽return Action.SUCCESS;
        聽 聽}
        }

        鐪嬭搗鏉ョ幇鍦ㄨ繖浜涘睘鎬ф槸綾葷駭鍒殑錛屽茍涓嶆槸綰跨▼瀹夊叏鐨勶紝浣嗘槸鍦⊿truts2閲屽茍娌℃湁闂錛屽洜涓烘瘡涓姹傝繃鏉ョ殑鏃跺欓兘浼氫駭鐢熶竴涓柊鐨刟ction瀵硅薄瀹炰緥錛屽畠騫舵病鏈夊拰鍏朵粬璇鋒眰鍏變韓涓涓璞★紝鎵浠ヤ笉闇瑕佽冭檻綰跨▼瀹夊叏闂銆?br />
        鐜板湪鎴戜滑榪樻湁鏈鍚庝竴姝ワ紝灝辨槸鎶奱ction鍏寵仈涓?b>ServletConfigInterceptor
        鎷︽埅鍣ㄣ傝繖涓嫤鎴櫒緇ф壙浜?b>ServletRequestAware
        鎺ュ彛錛屽茍鎻愪緵浜嗘妸HttpServletRequest 娉ㄥ叆鍒癮ction涓殑鍔熻兘銆備絾鏄綘鐜板湪涓嶇敤鎷呭績濡備綍閰嶇疆榪欎簺錛屾垜浠皢鍦ㄤ笅涓綃囨枃绔犱腑鍏蜂綋璁茶堪銆傛渶閲嶈鐨勬槸鎴戜滑鏄庣櫧浜嗘嫤鎴櫒鍜屾帴鍙e叡鍚屼負action鎻愪緵浜嗗弽杞帶鍒剁殑鍔熻兘銆?br />榪欎釜璁捐鐨勫ソ澶勬槸鑳借action瀹屽叏鍜屾鏋惰В鑰︺俛ction浠呬粎鏄竴涓妗嗘灦浣跨敤鐨勭畝鍗曠殑POJO銆傝繖瀵逛簬鍗曞厓嫻嬭瘯浣嗘潵鏋佸ぇ鐨勫ソ澶勶紝 浣犺兘鏂逛究鐨勪負Struts action瀹炵幇 StrutsTestCase 鎴柭犅燤ockStrutsTestCase銆鍗曞厓嫻嬭瘯銆?br />
        鎬葷粨
        By鍒扮幇鍦ㄤ負姝紝浣犲簲璇ュ凡緇忎簡瑙d簡Struts2鐨勬暣涓姹傛祦紼嬶紝榪樻湁楂樺眰鐨勬鏋舵蹇碉紝 浣犱篃搴旇鑳借嚜宸卞姩鎵嬮厤緗甋truts2鐨刟ction錛屽拰璁插嚭Struts鍜孲truts2鐨勫樊鍒簡銆?br />鍦ㄤ笅綃囨枃绔犱腑錛屾垜浠皢浼氫粙緇嶄竴涓緇嗙殑Struts搴旂敤鍚慡truts2榪佺Щ鐨勪緥瀛愶紝鍚屾椂鎴戜滑涔熶細浠嬬粛榪佺Щ涓浉鍏崇殑鐭ヨ瘑錛屼細璁茶堪濡備綍緇煎悎浣跨敤JSTL, JSP 鍜?Struts2錛岃繘涓姝ヨ榪癝truts鍜孲truts2鐨刟ction鐨勫樊鍒紝Struts2鐨勯厤緗拰鍏朵粬妗嗘灦鍏冪礌錛屽拰璋堝埌鏇村鐨勫叾浠栫浉鍏蟲鏋剁殑鐗瑰緛銆?br />(鑷?a target="_blank">http://www.infoq.com/, cac 緲昏瘧)


        ]]>Apache Struts 2 GA http://m.tkk7.com/zlsunnan/archive/2007/03/04/101689.html鈽嗚摑鑹叉ⅵ鎯斥槅鈽嗚摑鑹叉ⅵ鎯斥槅Sat, 03 Mar 2007 16:49:00 GMThttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101689.htmlhttp://m.tkk7.com/zlsunnan/comments/101689.htmlhttp://m.tkk7.com/zlsunnan/archive/2007/03/04/101689.html#Feedback0http://m.tkk7.com/zlsunnan/comments/commentRss/101689.htmlhttp://m.tkk7.com/zlsunnan/services/trackbacks/101689.html
        榪欐槸Apache Struts 2 棣栨鍙戣紼沖畾鐨勭増鏈? GA鎰忓懗鐫 General Availability , 涔熷氨鏄畼鏂瑰紑濮嬫帹鑽愬箍娉涗嬌鐢ㄤ簡.

        Struts2 GA鐗堟湰鐨勫彂甯? 鎰忓懗鐫鏍稿績寮鍙戝姏閲忓皢鍏ㄩ儴杞Щ鍒癝truts2, 瀵筍truts1鐨勬敮鎸佸皢浼氭貳鍖?

        涓嬮潰鍒楀嚭浜嗕竴浜汼truts1鍜孲truts2鐨勫尯鍒拰瀵規瘮:

        Action 綾?
        鈥?Struts1瑕佹眰Action綾葷戶鎵夸竴涓娊璞″熀綾匯係truts1鐨勪竴涓櫘閬嶉棶棰樻槸浣跨敤鎶借薄綾葷紪紼嬭屼笉鏄帴鍙c?
        鈥?Struts 2 Action綾誨彲浠ュ疄鐜頒竴涓狝ction鎺ュ彛錛屼篃鍙疄鐜板叾浠栨帴鍙o紝浣垮彲閫夊拰瀹氬埗鐨勬湇鍔℃垚涓哄彲鑳姐係truts2鎻愪緵涓涓狝ctionSupport鍩虹被鍘誨疄鐜?甯哥敤鐨勬帴鍙c侫ction鎺ュ彛涓嶆槸蹇呴』鐨勶紝浠諱綍鏈塭xecute鏍囪瘑鐨凱OJO瀵硅薄閮藉彲浠ョ敤浣淪truts2鐨凙ction瀵硅薄銆?

        綰跨▼妯″紡:
        鈥?Struts1 Action鏄崟渚嬫ā寮忓茍涓斿繀欏繪槸綰跨▼瀹夊叏鐨勶紝鍥犱負浠呮湁Action鐨勪竴涓疄渚嬫潵澶勭悊鎵鏈夌殑璇鋒眰銆傚崟渚嬬瓥鐣ラ檺鍒朵簡Struts1 Action鑳戒綔鐨勪簨錛屽茍涓旇鍦ㄥ紑鍙戞椂鐗瑰埆灝忓績銆侫ction璧勬簮蹇呴』鏄嚎紼嬪畨鍏ㄧ殑鎴栧悓姝ョ殑銆?
        鈥?Struts2 Action瀵硅薄涓烘瘡涓涓姹備駭鐢熶竴涓疄渚嬶紝鍥犳娌℃湁綰跨▼瀹夊叏闂銆傦紙瀹為檯涓婏紝servlet瀹瑰櫒緇欐瘡涓姹備駭鐢熻澶氬彲涓㈠純鐨勫璞★紝騫朵笖涓嶄細瀵艱嚧鎬ц兘鍜屽瀮鍦懼洖鏀墮棶棰橈級

        Servlet 渚濊禆:
        鈥?Struts1 Action 渚濊禆浜嶴ervlet API ,鍥犱負褰撲竴涓狝ction琚皟鐢ㄦ椂HttpServletRequest 鍜?HttpServletResponse 琚紶閫掔粰execute鏂規硶銆?
        鈥?Struts 2 Action涓嶄緷璧栦簬瀹瑰櫒錛屽厑璁窤ction鑴辯瀹瑰櫒鍗曠嫭琚祴璇曘傚鏋滈渶瑕侊紝Struts2 Action浠嶇劧鍙互璁塊棶鍒濆鐨剅equest鍜宺esponse銆備絾鏄紝鍏朵粬鐨勫厓绱犲噺灝戞垨鑰呮秷闄や簡鐩存帴璁塊棶HttpServetRequest 鍜?HttpServletResponse鐨勫繀瑕佹с?

        鍙祴鎬?
        鈥?嫻嬭瘯Struts1 Action鐨勪竴涓富瑕侀棶棰樻槸execute鏂規硶鏆撮湶浜唖ervlet API錛堣繖浣垮緱嫻嬭瘯瑕佷緷璧栦簬瀹瑰櫒錛夈備竴涓涓夋柟鎵╁睍錛嶏紞Struts TestCase錛嶏紞鎻愪緵浜嗕竴濂桽truts1鐨勬ā鎷熷璞★紙鏉ヨ繘琛屾祴璇曪級銆?
        鈥?Struts 2 Action鍙互閫氳繃鍒濆鍖栥佽緗睘鎬с佽皟鐢ㄦ柟娉曟潵嫻嬭瘯錛屸滀緷璧栨敞鍏モ濇敮鎸佷篃浣挎祴璇曟洿瀹規槗銆?

        鎹曡幏杈撳叆:
        鈥?Struts1 浣跨敤ActionForm瀵硅薄鎹曡幏杈撳叆銆傛墍鏈夌殑ActionForm蹇呴』緇ф壙涓涓熀綾匯傚洜涓哄叾浠朖avaBean涓嶈兘鐢ㄤ綔ActionForm錛屽紑鍙戣呯粡甯稿垱寤哄浣欑殑綾繪崟鑾瘋緭鍏ャ傚姩鎬丅ean錛圖ynaBeans錛夊彲浠ヤ綔涓哄垱寤轟紶緇烝ctionForm鐨勯夋嫨錛屼絾鏄紝寮鍙戣呭彲鑳芥槸鍦ㄩ噸鏂版弿榪?鍒涘緩)宸茬粡瀛樺湪鐨凧avaBean錛堜粛鐒朵細瀵艱嚧鏈夊啑浣欑殑javabean錛夈?
        鈥?Struts 2鐩存帴浣跨敤Action灞炴т綔涓鴻緭鍏ュ睘鎬э紝娑堥櫎浜嗗絎簩涓緭鍏ュ璞$殑闇姹傘傝緭鍏ュ睘鎬у彲鑳芥槸鏈夎嚜宸?瀛?灞炴х殑rich瀵硅薄綾誨瀷銆侫ction灞炴ц兘澶熼氳繃web欏甸潰涓婄殑taglibs璁塊棶銆係truts2涔熸敮鎸丄ctionForm妯″紡銆俽ich瀵硅薄綾誨瀷錛屽寘鎷笟鍔″璞★紝鑳藉鐢ㄤ綔杈撳叆/杈撳嚭瀵硅薄銆傝繖縐峂odelDriven 鐗規х畝鍖栦簡taglib瀵筆OJO杈撳叆瀵硅薄鐨勫紩鐢ㄣ?

        琛ㄨ揪寮忚璦錛?
        鈥?Struts1 鏁村悎浜咼STL錛屽洜姝や嬌鐢↗STL EL銆傝繖縐岴L鏈夊熀鏈璞″浘閬嶅巻錛屼絾鏄闆嗗悎鍜岀儲寮曞睘鎬х殑鏀寔寰堝急銆?
        鈥?Struts2鍙互浣跨敤JSTL錛屼絾鏄篃鏀寔涓涓洿寮哄ぇ鍜岀伒媧葷殑琛ㄨ揪寮忚璦錛嶏紞"Object Graph Notation Language" (OGNL).

        緇戝畾鍊煎埌欏甸潰錛坴iew錛?
        鈥?Struts 1浣跨敤鏍囧噯JSP鏈哄埗鎶婂璞$粦瀹氬埌欏甸潰涓潵璁塊棶銆?
        鈥?Struts 2 浣跨敤 "ValueStack"鎶鏈紝浣縯aglib鑳藉璁塊棶鍊艱屼笉闇瑕佹妸浣犵殑欏甸潰錛坴iew錛夊拰瀵硅薄緇戝畾璧鋒潵銆俈alueStack絳栫暐鍏佽閫氳繃涓緋誨垪鍚嶇О鐩稿悓浣嗙被鍨嬩笉鍚岀殑灞炴ч噸鐢ㄩ〉闈紙view錛夈?

        綾誨瀷杞崲錛?
        鈥?Struts 1 ActionForm 灞炴ч氬父閮芥槸String綾誨瀷銆係truts1浣跨敤Commons-Beanutils榪涜綾誨瀷杞崲銆傛瘡涓被涓涓漿鎹㈠櫒錛屽姣忎竴涓疄渚嬫潵璇存槸涓嶅彲閰嶇疆鐨勩?
        鈥?Struts2 浣跨敤OGNL榪涜綾誨瀷杞崲銆傛彁渚涘熀鏈拰甯哥敤瀵硅薄鐨勮漿鎹㈠櫒銆?

        鏍¢獙錛?
        鈥?Struts 1鏀寔鍦ˋctionForm鐨剉alidate鏂規硶涓墜鍔ㄦ牎楠岋紝鎴栬呴氳繃Commons Validator鐨勬墿灞曟潵鏍¢獙銆傚悓涓涓被鍙互鏈変笉鍚岀殑鏍¢獙鍐呭錛屼絾涓嶈兘鏍¢獙瀛愬璞°?
        鈥?Struts2鏀寔閫氳繃validate鏂規硶鍜孹Work鏍¢獙妗嗘灦鏉ヨ繘琛屾牎楠屻俋Work鏍¢獙妗嗘灦浣跨敤涓哄睘鎬х被綾誨瀷瀹氫箟鐨勬牎楠屽拰鍐呭鏍¢獙錛屾潵鏀寔chain鏍¢獙瀛愬睘鎬?

        Action鎵ц鐨勬帶鍒訛細
        鈥?Struts1鏀寔姣忎竴涓ā鍧楁湁鍗曠嫭鐨凴equest Processors錛堢敓鍛藉懆鏈燂級錛屼絾鏄ā鍧椾腑鐨勬墍鏈堿ction蹇呴』鍏變韓鐩稿悓鐨勭敓鍛藉懆鏈熴?
        鈥?Struts2鏀寔閫氳繃鎷︽埅鍣ㄥ爢鏍堬紙Interceptor Stacks錛変負姣忎竴涓狝ction鍒涘緩涓嶅悓鐨勭敓鍛藉懆鏈熴傚爢鏍堣兘澶熸牴鎹渶瑕佸拰涓嶅悓鐨凙ction涓璧蜂嬌鐢ㄣ?


        ]]>
        鍏充簬struts鍥介檯鍖栫殑涓鐐瑰皾璇?/title><link>http://m.tkk7.com/zlsunnan/archive/2006/02/27/32646.html</link><dc:creator>鈽嗚摑鑹叉ⅵ鎯斥槅</dc:creator><author>鈽嗚摑鑹叉ⅵ鎯斥槅</author><pubDate>Mon, 27 Feb 2006 06:51:00 GMT</pubDate><guid>http://m.tkk7.com/zlsunnan/archive/2006/02/27/32646.html</guid><wfw:comment>http://m.tkk7.com/zlsunnan/comments/32646.html</wfw:comment><comments>http://m.tkk7.com/zlsunnan/archive/2006/02/27/32646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zlsunnan/comments/commentRss/32646.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zlsunnan/services/trackbacks/32646.html</trackback:ping><description><![CDATA[<BR>1銆佷慨鏀箇eb.xml鏂囦歡錛屽唴瀹瑰涓?<BR><?xml version="1.0" encoding="UTF-8"?><BR><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<A ><BR><web-app><BR>    <servlet><BR>        <servlet-name>action</servlet-name><BR>        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class><BR>        <init-param><BR>            <param-name>config</param-name><BR>            <param-value>/WEB-INF/struts-config.xml</param-value><BR>        </init-param><BR><FONT style="BACKGROUND-COLOR: #d3d3d3">        <init-param><BR>           <param-name>application</param-name><BR>           <param-value>com.sharp.struts.ApplicationResources</param-value><BR>         </init-param></FONT><BR>        <load-on-startup>1</load-on-startup><BR>    </servlet><BR>    <servlet-mapping><BR>        <servlet-name>action</servlet-name><BR>        <url-pattern>*.do</url-pattern><BR>    </servlet-mapping><BR></web-app><BR><BR>鏂囦歡涓伆鑹茶儗鏅儴鍒嗕負鍥介檯鍖栭渶瑕佸鍔犵殑鍐呭錛屽叾涓?FONT style="BACKGROUND-COLOR: #d3d3d3">com.sharp.struts.ApplicationResources</FONT><FONT style="BACKGROUND-COLOR: #ffffff">璺熶綘鐨刉EB-INF鐩綍涓媍lasses涓嬬殑鐩綍緇撴瀯鏄竴鑷寸殑錛屽涓嬪浘鎵紺?BR><IMG height=544 alt=web-xml.jpg src="http://m.tkk7.com/images/blogjava_net/zlsunnan/web-xml.jpg" width=654 border=0><BR><BR></FONT>2銆佸緩绔嬭祫婧愭枃浠禔pplicationResources.source(<FONT style="BACKGROUND-COLOR: #9acd32">涓枃婧愭枃浠訛紝鑰屼笉鏄腑鏂囪祫婧愭枃浠?/FONT>)銆丄pplicationResources_en.properties(鑻辨枃璧勬簮鏂囦歡)銆?BR>棣栧厛寤虹珛ApplicationResources_en.properties鏂囦歡錛屽唴瀹瑰涓嬶細<BR><FONT style="BACKGROUND-COLOR: #d3d3d3">owner.greet=Greet<BR>owner.name=Name<BR>owner.address=Address<BR>owner.email=Email<BR>owner.tel=Tel<BR><BR><FONT style="BACKGROUND-COLOR: #ffffff">瀵瑰簲鐨勪腑鏂囨簮鏂囦歡鍐呭濡備笅錛?BR>owner.greet=縐板懠<BR>owner.name=濮撳悕<BR>owner.address=鍦板潃<BR>owner.email=鐢靛瓙閭歡<BR>owner.tel=鑱旂郴鐢佃瘽<BR><BR>鐒跺悗閫氳繃鍦╟md涓墽琛宯ative2ascii -encoding GBK ApplicationResources.source .\ApplicationResources_zh_CN.properties<BR>鍛戒護灝嗕腑鏂囨簮鏂囦歡鐢熸垚UTF-8鏍煎紡鐨勪腑鏂囪祫婧愭枃浠訛紝鍐呭濡備笅<BR>owner.greet=\u79f0\u547c<BR>owner.name=\u59d3\u540d<BR>owner.address=\u5730\u5740<BR>owner.email=\u7535\u5b50\u90ae\u4ef6<BR>owner.tel=\u8054\u7cfb\u7535\u8bdd<BR>榪欓噷浠嬬粛涓涓嬶紝native2ascii鏄疛DK鍖呰嚜甯︾殑涓涓伐鍏鳳紝濡傛灉浣犱笉鑳絚md鐩存帴鎵цnative2ascii鍛戒護錛岃媯鏌ヤ綘鐨勭幆澧冨彉閲忥紝榪欓噷涓嶅叿浣撲粙緇嶄簡銆?BR><BR>3銆佹帴鐫鏉ヤ粙緇嶄竴涓媠truts-config.xml鏂囦歡鐨勫唴瀹癸紝濡傛灉鐔熸倝struts鐨勬湅鍙嬩篃瑙夊緱寰堢畝鍗曠殑<BR><?xml version="1.0" encoding="UTF-8"?><BR><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "<A ><BR><struts-config><BR>    <!-- ========== Form Bean Definitions ================================== --><BR>    <form-beans><BR>        <form-bean name="ownerForm" type="com.sharp.struts.form.OwnerForm"><BR>            <form-property name="Email" type="java.lang.String" /><BR>            <form-property name="Greet" type="java.lang.String" initial="Mr." /><BR>            <form-property name="Address" type="java.lang.String" /><BR>            <form-property name="Tel" type="java.lang.Integer" initial="0" /><BR>            <form-property name="Name" type="java.lang.String" /><BR>        </form-bean><BR>        <BR>    </form-beans><BR>    <BR>    <!-- ========== Global Exception Definitions ============================== --><BR>    <global-exceptions /><BR>    <BR>    <!-- ========== Global Forward Definitions =============================== --><BR>    <global-forwards><BR>        <forward name="failure" path="/failure.jsp" /><BR>        <BR>    </global-forwards><BR>    <BR>    <!-- ========== Action Mapping Definitions =============================== --><BR>    <FONT style="BACKGROUND-COLOR: #d3d3d3"><action-mappings><BR>        <action<BR>            attribute="ownerForm"<BR>            input="/owner.jsp"<BR>            name="ownerForm"<BR>            path="/owner"<BR>            type="com.sharp.struts.action.OwnerAction"<BR>            <FONT color=#0000ff>parameter="formAction"</FONT>><!--鍥犱負action綾葷戶鎵緿ispatchAction綾伙紝鎵浠ラ渶瑕佽緗繖涓睘鎬?-><BR>            <forward name="owner"   path="/owner.jsp" /><BR>            <forward name="success" path="/success.jsp" /><BR>        </action></FONT><BR>        <BR>    </action-mappings><BR>    <BR></struts-config><BR><BR>4銆佺幇鍦ㄥ氨寮濮嬪噯澶噅ava鍜宩sp鏂囦歡鍚?BR><STRONG>owner.jsp鏂囦歡鍐呭濡備笅錛?/STRONG><BR><%@ page contentType="text/html;charset=gb2312" %> <BR><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <BR><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <BR><html:html locale="true"><BR> <head><BR>  <meta name = "Generator" content = "Easy Struts Xslt generator for Eclipse (<A ><BR>  <title>Struts Form for ownerForm</title><BR>  <script language="javascript"><BR>      function changeLanguage(language) {<BR>          if(language == "en") {<BR>              document.all("language").value = "en";<BR>          } else {<BR>              document.all("language").value = "cn";<BR>          }<BR>          document.forms[0].submit();<BR>      }<BR>  </script><BR> </head><BR> <body><BR>  <html:form action="/owner"><BR><FONT color=#0000ff>  <input type="hidden" name="formAction" value="changeLanguage"><BR>  <input type="hidden" name="language"></FONT><BR>   <bean:message key="owner.greet" /> : <html:select property="greet"><BR>      <html:option value=""></html:option><BR>      <html:option value="Mr.">Mr.</html:option><BR>      <html:option value="Miss.">Miss.</html:option><BR>      <html:option value="Mrs.">Mrs.</html:option><BR>     </html:select><html:errors property="greet"/></br>   <BR>   <bean:message key="owner.name" /> : <html:text property="name"/><html:errors property="name"/></br><BR>   <bean:message key="owner.address" /> : <html:text property="address"/><html:errors property="address"/></br><BR>   <bean:message key="owner.email" /> : <html:text property="email"/><html:errors property="email"/></br><BR>   <bean:message key="owner.tel" /> : <html:text property="tel"/><html:errors property="tel"/></br><BR>   <html:submit/><BR>   <html:cancel/><BR>   <input type="button" name="langEn" value="鑻辨枃鐗? onclick="changeLanguage('en')">   <BR>   <input type="button" name="langCn" value="涓枃鐗? onclick="changeLanguage('cn')"><BR>  </html:form><BR> <body><BR></html:html><BR></FONT><BR><STRONG><FONT style="BACKGROUND-COLOR: #ffffff">OwnerAction.java鏂囦歡鍐呭濡備笅錛?/FONT><BR></STRONG></FONT><FONT style="BACKGROUND-COLOR: #ffffff">// Created by Xslt generator for Eclipse.<BR>// XSL :  not found (java.io.FileNotFoundException:  (Bad file descriptor))<BR>// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl</FONT> <P><FONT style="BACKGROUND-COLOR: #ffffff">package com.sharp.struts.action;</FONT></P> <P><FONT style="BACKGROUND-COLOR: #ffffff">import java.util.Locale;</FONT></P> <P><FONT style="BACKGROUND-COLOR: #ffffff">import javax.servlet.http.HttpServletRequest;<BR>import javax.servlet.http.HttpServletResponse;</FONT></P> <P><FONT style="BACKGROUND-COLOR: #ffffff">import org.apache.struts.Globals;<BR>import org.apache.struts.action.Action;<BR>import org.apache.struts.action.ActionForm;<BR>import org.apache.struts.action.ActionForward;<BR>import org.apache.struts.action.ActionMapping;<BR>import org.apache.struts.actions.DispatchAction;</FONT></P> <P><FONT style="BACKGROUND-COLOR: #ffffff">import com.sharp.struts.form.OwnerForm;</FONT></P> <P><FONT style="BACKGROUND-COLOR: #ffffff">/** <BR> * OwnerAction.java created by EasyStruts - XsltGen.<BR> * </FONT><A ><FONT style="BACKGROUND-COLOR: #ffffff">http://easystruts.sf.net</FONT></A><BR><FONT style="BACKGROUND-COLOR: #ffffff"> * created on 10-09-2004<BR> * <BR> * XDoclet definition:<BR> * @struts:action path="/owner" name="ownerForm" input="/owner.jsp" validate="true"<BR> * @struts:action-forward name="/success.jsp" path="/success.jsp"<BR> */<BR>public class OwnerAction extends DispatchAction {</FONT><FONT style="BACKGROUND-COLOR: #ffffff"><BR> <BR> public ActionForward changeLanguage(<BR>  ActionMapping mapping,<BR>  ActionForm form,<BR>  HttpServletRequest request,<BR>  HttpServletResponse response) {<BR><BR></FONT><FONT style="BACKGROUND-COLOR: #ffffff">   String language = request.getParameter("language");   <BR>   if (language.equals("en")) {<BR>        request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);    <BR>   } else {    <BR>        request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.CHINESE);<BR>   }</FONT><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff">   <BR>        return mapping.findForward("owner");<BR>    }<BR>}<BR><FONT color=#0000ff><STRONG>榪欓噷闇瑕佹敞鎰忎竴涓嬶紝鍗冧竾涓嶈寮勯敊錛屾垜鍦ㄨ繖閲屽氨鑺辮垂浜嗕竴涓灝忔椂錛屽洜涓烘妸鏂囦歡鍚嶅啓閿欎簡<BR>Locale.ENGLISH鏄竴涓狶ocale瀵硅薄錛実etLanguage()鏂規硶榪斿洖en錛岃窡璧勬簮鏂囦歡(ApplicationResources_<FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000>en</FONT>.properties)鐨勫悗緙鐩稿悓<BR></STRONG><FONT color=#000000><STRONG><FONT color=#0000ff>Locale.<FONT color=#0000ff>CHINESE</FONT>鏄竴涓狶ocale瀵硅薄錛実etLanguage()鏂規硶榪斿洖zh錛岃窡璧勬簮鏂囦歡(ApplicationResources_</FONT><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000>zh<FONT color=#0000ff>_CN</FONT></FONT><FONT color=#0000ff>.properties)鐨勫悗緙鐩稿悓</FONT></STRONG></FONT></FONT><BR><BR><STRONG>鍙﹀榪樼敤鍒頒竴涓猳wnerForm.java鏂囦歡錛屽唴瀹瑰涓嬶細</STRONG><BR>// Created by Xslt generator for Eclipse.<BR>// XSL :  not found (java.io.FileNotFoundException:  (Bad file descriptor))<BR>// Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff">package com.sharp.struts.form;</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff">import javax.servlet.http.HttpServletRequest;</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff">import org.apache.struts.action.ActionError;<BR>import org.apache.struts.action.ActionErrors;<BR>import org.apache.struts.action.ActionForm;<BR>import org.apache.struts.action.ActionMapping;</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff">/** <BR> * OwnerForm.java created by EasyStruts - XsltGen.<BR> * <A >http://easystruts.sf.net</A><BR> * created on 10-09-2004<BR> * <BR> * XDoclet definition:<BR> * @struts:form name="ownerForm"<BR> */<BR>public class OwnerForm extends ActionForm {</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> // --------------------------------------------------------- Instance Variables</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> /** Email property */<BR> private String email;</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> /** Greet property */<BR> private String greet = "Mr.";</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> /** Address property */<BR> private String address;</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> /** Tel property */<BR> private int tel = 0;</FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> /** Name property */<BR> private String name;<BR></FONT></FONT><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff"> // --------------------------------------------------------- Methods<BR>......<BR>//getter,setter mothod錛岃繖閲屼笉璧樺垪浜?BR></FONT></FONT></P> <P><FONT style="BACKGROUND-COLOR: #d3d3d3"><FONT style="BACKGROUND-COLOR: #ffffff">}<BR><BR>5銆佹葷粨<BR>榪欐牱涓涓浗闄呭寲鐨勫皬渚嬪瓙灝卞彲浠ヨ繍琛屼簡錛屼笉榪囦笂闈㈠啓寰楁瘮杈冪矖鐣ワ紝闇瑕佸java鍜宻truts鏈変竴瀹氫簡瑙c?BR>緗戜笂瀵瑰浗闄呭寲涔熸湁鍏朵粬鐨勫仛娉曪紝涔熷彲浠ュ弬鑰冦?BR>濡傛灉涓婅堪鏈夋墍鍋忛錛屾暚璇鋒枾姝c?BR></FONT></FONT></P><img src ="http://m.tkk7.com/zlsunnan/aggbug/32646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zlsunnan/" target="_blank">鈽嗚摑鑹叉ⅵ鎯斥槅</a> 2006-02-27 14:51 <a href="http://m.tkk7.com/zlsunnan/archive/2006/02/27/32646.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://bjlfggcm.com" target="_blank">亚洲免费观看视频</a>| <a href="http://jx-dirui.com" target="_blank">一级日本高清视频免费观看</a>| <a href="http://6668889.com" target="_blank">日本免费一区二区三区四区五六区 </a>| <a href="http://kdp44.com" target="_blank">免费看男女下面日出水视频</a>| <a href="http://18eeuus.com" target="_blank">亚洲色偷偷综合亚洲av78</a>| <a href="http://ygloka.com" target="_blank">免费在线看v网址</a>| <a href="http://yutuzb.com" target="_blank">中国国语毛片免费观看视频</a>| <a href="http://o091i.com" target="_blank">中文字幕免费高清视频</a>| <a href="http://deyingwh.com" target="_blank">国产日韩亚洲大尺度高清</a>| <a href="http://bjsymsdwl.com" target="_blank">sss在线观看免费高清</a>| <a href="http://xjyzz.com" target="_blank">亚洲中文字幕无码一区</a>| <a href="http://sdsupuchem.com" target="_blank">国产黄色片免费看</a>| <a href="http://5aa6.com" target="_blank">国产亚洲综合色就色</a>| <a href="http://cykj-tech.com" target="_blank">a国产成人免费视频</a>| <a href="http://xx2e.com" target="_blank">亚洲高清资源在线观看</a>| <a href="http://wanguoshan.com" target="_blank">黄色免费网站网址</a>| <a href="http://obtainfo.com" target="_blank">亚洲色在线无码国产精品不卡</a>| <a href="http://3bmmatv.com" target="_blank">日本高清免费不卡视频</a>| <a href="http://dslygc.com" target="_blank">成年免费大片黄在线观看com</a>| <a href="http://sds54.com" target="_blank">亚洲成人免费网址</a>| <a href="http://www-095666.com" target="_blank">亚洲色图.com</a>| <a href="http://chinaedubrand.com" target="_blank">日韩免费一区二区三区在线播放</a>| <a href="http://wwwkk5679.com" target="_blank">亚洲人和日本人jizz</a>| <a href="http://qnyjny.com" target="_blank">精品国产一区二区三区免费看</a>| <a href="http://www876444.com" target="_blank">亚洲七久久之综合七久久</a>| <a href="http://selaohu.com" target="_blank">免费国产成人高清在线观看麻豆 </a>| <a href="http://yijiazhiwei.com" target="_blank">精品久久久久亚洲</a>| <a href="http://520xiang.com" target="_blank">亚洲欧洲中文日韩久久AV乱码</a>| <a href="http://selaohu.com" target="_blank">亚洲电影唐人社一区二区</a>| <a href="http://dyk7.com" target="_blank">浮力影院第一页小视频国产在线观看免费 </a>| <a href="http://001mc.com" target="_blank">1000部拍拍拍18免费网站</a>| <a href="http://maomaots.com" target="_blank">亚洲中文字幕久久精品蜜桃</a>| <a href="http://5aa6.com" target="_blank">国产做床爱无遮挡免费视频</a>| <a href="http://mtsp5.com" target="_blank">91精品成人免费国产</a>| <a href="http://viviker.com" target="_blank">亚洲人成免费电影</a>| <a href="http://vinsotec.com" target="_blank">久久精品夜色噜噜亚洲A∨</a>| <a href="http://71caoxee.com" target="_blank">久久综合国产乱子伦精品免费</a>| <a href="http://csl-chinga.com" target="_blank">亚洲人成网站看在线播放</a>| <a href="http://shadaiym.com" target="_blank">亚洲av午夜精品一区二区三区</a>| <a href="http://266hd.com" target="_blank">日韩电影免费在线观看</a>| <a href="http://51cga.com" target="_blank">亚洲国产成人无码AV在线影院</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>