锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
璇存槑錛?/strong>甯屾湜鏈枃鐨勮鑰呰兘鏈変竴瀹氱殑Struts浣跨敤鍩虹銆?/p>
Struts鏄熀浜嶮odel 2涔嬩笂鐨勶紝鑰孧odel 2鏄粡鍏哥殑MVC錛堟ā鍨嬶紞瑙嗗浘錛嶆帶鍒跺櫒錛夋ā鍨嬬殑Web搴旂敤鍙樹綋錛岃繖涓敼鍙樹富瑕佹槸鐢變簬緗戠粶搴旂敤鐨勭壒鎬?-HTTP鍗忚鐨勬棤鐘舵佹у紩璧風殑銆侻odel 2鐨勭洰鐨勫拰MVC涓鏍鳳紝涔熸槸鍒╃敤鎺у埗鍣ㄦ潵鍒嗙妯″瀷鍜岃鍥撅紝杈懼埌涓縐嶅眰闂存澗鏁h﹀悎鐨勬晥鏋滐紝鎻愰珮緋葷粺鐏墊椿鎬с佸鐢ㄦу拰鍙淮鎶ゆс傚湪澶氭暟鎯呭喌涓嬶紝浣犲彲浠ュ皢Model 2涓嶮VC絳夊悓璧鋒潵銆?/p>
涓嬪浘琛ㄧず涓涓熀浜嶫ava鎶鏈殑鍏稿瀷緗戠粶搴旂敤錛屼粠涓彲浠ョ湅鍑篗odel 2涓殑鍚勪釜閮ㄥ垎鏄浣曞搴斾簬Java涓悇縐嶇幇鏈夋妧鏈殑銆?/p>
鍦ㄥ埄鐢∕odel 2涔嬪墠錛屾垜浠槸鎶婃墍鏈夌殑琛ㄧず閫昏緫鍜屼笟鍔¢昏緫閮介泦涓湪涓璧鳳紙姣斿澶ф潅鐑╀技鐨凧SP錛夛紝鏈夋椂涔熺О榪欑搴旂敤妯″紡涓篗odel 1錛孧odel 1鐨勪富瑕佺己鐐瑰氨鏄揣鑰﹀悎錛屽鐢ㄦу樊浠ュ強緇存姢鎴愭湰楂樸?/p>
鏃㈢劧Struts 1.1鏄熀浜嶮odel 2涔嬩笂錛岄偅瀹冪殑搴曞眰鏈哄埗涔熷氨鏄疢VC錛屼笅闈㈡槸Struts 1.1涓殑MVC瀹炵幇紺烘剰鍥撅細 鍥捐В璇存槑錛氬叾涓笉鍚岄鑹蹭唬琛∕VC鐨勪笉鍚岄儴鍒嗭細綰㈣壊錛堟帶鍒跺櫒錛夈佺傳鑹詫紙妯″瀷錛夊拰緇胯壊錛堣鍥撅級 棣栧厛錛屾帶鍒跺櫒錛圓ctionServlet錛夎繘琛屽垵濮嬪寲宸ヤ綔錛岃鍙栭厤緗枃浠訛紙struts-config.xml錛夛紝涓轟笉鍚岀殑Struts妯″潡鍒濆鍖栫浉搴旂殑ModuleConfig瀵硅薄銆傛瘮濡傞厤緗枃浠朵腑鐨凙ction鏄犲皠瀹氫箟閮戒繚瀛樺湪ActionConfig闆嗗悎涓傜浉搴斿湴鏈塁ontrolConfig闆嗗悎銆丗ormBeanConfig闆嗗悎銆丗orwardConfig闆嗗悎鍜孧essageResourcesConfig闆嗗悎絳夈?/p>
鎻愮ず錛?/strong>妯″潡鏄湪Struts 1.1涓柊鎻愬嚭鐨勬蹇碉紝鍦ㄧ◢鍚庣殑鍐呭涓垜浠皢璇︾粏浠嬬粛錛屼綘鐜板湪鍙互綆鍗曞湴鎶婃ā鍧楃湅浣滄槸涓涓瓙緋葷粺錛屽畠浠叡鍚岀粍鎴愭暣涓簲鐢紝鍚屾椂鍙堝悇鑷嫭绔嬨係truts 1.1涓墍鏈夌殑澶勭悊閮芥槸鍦ㄧ壒瀹氭ā鍧楃幆澧冧腑榪涜鐨勩傛ā鍧楃殑鎻愬嚭涓昏鏄負浜嗚В鍐砈truts 1.0涓崟閰嶇疆鏂囦歡鐨勯棶棰樸?/em> 鎺у埗鍣ㄦ帴鏀禜TTP璇鋒眰錛屽茍浠嶢ctionConfig涓壘鍑哄搴斾簬璇ヨ姹傜殑Action瀛愮被錛屽鏋滄病鏈夊搴旂殑Action錛屾帶鍒跺櫒鐩存帴灝嗚姹傝漿鍙戠粰JSP鎴栬呴潤鎬侀〉闈€傚惁鍒欐帶鍒跺櫒灝嗚姹傚垎鍙戣嚦鍏蜂綋Action綾昏繘琛屽鐞嗐?/p>
鍦ㄦ帶鍒跺櫒璋冪敤鍏蜂綋Action鐨別xecute鏂規硶涔嬪墠錛孉ctionForm瀵硅薄灝嗗埄鐢℉TTP璇鋒眰涓殑鍙傛暟鏉ュ~鍏呰嚜宸憋紙鍙夋楠わ紝闇瑕佸湪閰嶇疆鏂囦歡涓寚瀹氾級銆傚叿浣撶殑ActionForm瀵硅薄搴旇鏄疉ctionForm鐨勫瓙綾誨璞★紝瀹冨叾瀹炲氨鏄竴涓狫avaBean銆傛澶栵紝榪樺彲浠ュ湪ActionForm綾諱腑璋冪敤validate鏂規硶鏉ユ鏌ヨ姹傚弬鏁扮殑鍚堟硶鎬э紝騫朵笖鍙互榪斿洖涓涓寘鍚墍鏈夐敊璇俊鎭殑ActionErrors瀵硅薄銆傚鏋滄墽琛屾垚鍔燂紝ActionForm鑷姩灝嗚繖浜涘弬鏁頒俊鎭互JavaBean錛堜竴鑸О涔嬩負form bean錛夌殑鏂瑰紡淇濆瓨鍦⊿ervlet Context涓紝榪欐牱瀹冧滑灝卞彲浠ヨ鍏跺畠Action瀵硅薄鎴栬匤SP璋冪敤銆?/p>
Struts灝嗚繖浜汚ctionForm鐨勯厤緗俊鎭兘鏀懼湪FormBeanConfig闆嗗悎涓紝閫氳繃瀹冧滑Struts鑳藉鐭ラ亾閽堝鏌愪釜瀹㈡埛璇鋒眰鏄惁闇瑕佸垱寤虹浉搴旂殑ActionForm瀹炰緥銆?/p>
Action寰堢畝鍗曪紝涓鑸彧鍖呭惈涓涓猠xecute鏂規硶錛屽畠璐熻矗鎵ц鐩稿簲鐨勪笟鍔¢昏緫錛屽鏋滈渶瑕侊紝瀹冧篃榪涜鐩稿簲鐨勬暟鎹鏌ャ傛墽琛屽畬鎴愪箣鍚庯紝榪斿洖涓涓狝ctionForward瀵硅薄錛屾帶鍒跺櫒閫氳繃璇ctionForward瀵硅薄鏉ヨ繘琛岃漿鍙戝伐浣溿傛垜浠富寮犲皢鑾峰彇鏁版嵁鍜屾墽琛屼笟鍔¢昏緫鐨勫姛鑳芥斁鍒板叿浣撶殑JavaBean褰撲腑錛岃孉ction鍙礋璐e畬鎴愪笌鎺у埗鏈夊叧鐨勫姛鑳姐傞伒寰鍘熷垯錛屾墍浠ュ湪涓婂浘涓垜灝咥ction瀵硅薄褰掍負鎺у埗鍣ㄩ儴鍒嗐?/p>
鎻愮ず錛?/strong>鍏跺疄鍦⊿truts 1.1涓紝ActionMapping鐨勪綔鐢ㄥ畬鍏ㄥ彲浠ョ敱ActionConfig鏉ユ浛浠o紝鍙笉榪囩敱浜庡畠鏄叕鍏盇PI鐨勪竴閮ㄥ垎浠ュ強鍏煎鎬х殑闂寰椾互淇濈暀銆侫ctionMapping閫氳繃緇ф壙ActionConfig鏉ヨ幏寰椾笌鍏朵竴鑷寸殑鍔熻兘錛屼綘鍙互絳夊悓鍦扮湅寰呭畠浠傚悓鐞嗭紝鍏跺畠渚嬪ActionForward涓嶧orwardConfig鐨勫叧緋諱篃鏄姝ゃ?/em> 涓嬪浘緇欏嚭浜嗗鎴風浠庡彂鍑鴻姹傚埌鑾峰緱鍝嶅簲鏁翠釜榪囩▼鐨勫浘瑙h鏄庛?/p>
涓嬮潰鎴戜滑灝辨潵璇︾粏鍦拌璁轟竴涓嬪叾涓殑姣忎釜閮ㄥ垎錛屽湪榪欎箣鍓嶏紝鍏堟潵浜嗚В涓涓嬫ā鍧楃殑姒傚康銆?/p>
鎴戜滑鐭ラ亾錛屽湪Struts 1.0涓紝鎴戜滑鍙兘鍦╳eb.xml涓負ActionServlet鎸囧畾涓涓厤緗枃浠訛紝榪欏浜庢垜浠繖浜涚綉涓婄殑鏁欏渚嬪瓙鏉ヨ褰撶劧娌′粈涔堥棶棰橈紝浣嗘槸鍦ㄥ疄闄呯殑搴旂敤寮鍙戣繃紼嬩腑錛屽彲鑳戒細鏈変簺楹葷儲銆傚洜涓鴻澶氬紑鍙戜漢鍛橀兘鍙兘鍚屾椂闇瑕佷慨鏀歸厤緗枃浠訛紝浣嗘槸閰嶇疆鏂囦歡鍙兘鍚屾椂琚竴涓漢淇敼錛岃繖鏍瘋偗瀹氫細閫犳垚涓瀹氱▼搴︿笂鐨勮祫婧愪簤澶猴紝鍔垮繀浼氬獎鍝嶅紑鍙戞晥鐜囧拰寮曡搗寮鍙戜漢鍛樼殑鎶辨ㄣ?/p>
鍦⊿truts 1.1涓紝涓轟簡瑙e喅榪欎釜騫惰寮鍙戠殑闂錛屾彁鍑轟簡涓ょ瑙e喅鏂規錛?
銆 鏀寔澶氫釜閰嶇疆鏂囦歡錛屾槸鎸囦綘鑳藉涓篈ctionServlet鍚屾椂鎸囧畾澶氫釜xml閰嶇疆鏂囦歡錛屾枃浠朵箣闂翠互閫楀彿鍒嗛殧錛屾瘮濡係truts鎻愪緵鐨凪ailReader婕旂ず渚嬪瓙涓氨閲囩敤璇ョ鏂規硶銆?/p>
<!-- Action Servlet Configuration -->
<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, /WEB-INF/struts-config-registration.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
榪欑鏂規硶鍙互寰堝ソ鍦拌В鍐充慨鏀瑰啿紿佺殑闂錛屼笉鍚岀殑寮鍙戜漢鍛樺彲浠ュ湪涓嶅悓鐨勯厤緗枃浠朵腑璁劇疆鑷繁鐨凙ction銆丄ctionForm絳夌瓑錛堝綋鐒朵笉鏄姣忎釜寮鍙戜漢鍛橀兘闇瑕佽嚜宸辯殑閰嶇疆鏂囦歡錛屽彲浠ユ寜鐓х郴緇熺殑鍔熻兘妯″潡榪涜鍒掑垎錛夈備絾鏄紝榪欓噷榪樻槸瀛樺湪涓涓綔鍦ㄧ殑闂錛屽氨鏄彲鑳戒笉鍚岀殑閰嶇疆鏂囦歡涔嬮棿浼氫駭鐢熷啿紿侊紝鍥犱負鍦ˋctionServlet鍒濆鍖栫殑鏃跺欒繖鍑犱釜鏂囦歡鏈緇堣繕鏄渶瑕佸悎騫跺埌涓璧風殑銆傛瘮濡傦紝鍦╯truts-config.xml涓厤緗簡涓涓悕涓簊uccess鐨?lt;forward>錛岃屽湪struts-config-registration.xml涓篃閰嶇疆浜嗕竴涓悓鏍風殑<forward>錛岄偅涔堟墽琛岃搗鏉ュ氨浼氫駭鐢熷啿紿併?/p>
涓轟簡褰誨簳瑙e喅榪欑鍐茬獊錛孲truts 1.1涓紩榪涗簡妯″潡錛圡odule錛夌殑姒傚康銆備竴涓ā鍧楀氨鏄竴涓嫭绔嬬殑瀛愮郴緇燂紝浣犲彲浠ュ湪鍏朵腑榪涜浠繪剰鎵闇鐨勯厤緗紝鍚屾椂鍙堜笉蹇呮媴蹇冨拰鍏跺畠鐨勯厤緗枃浠朵駭鐢熷啿紿併傚洜涓哄墠闈㈡垜浠榪囷紝ActionServlet鏄皢涓嶅悓鐨勬ā鍧椾俊鎭繚瀛樺湪涓嶅悓鐨凪oduleConfig瀵硅薄涓殑銆傝浣跨敤妯″潡鐨勫姛鑳斤紝闇瑕佽繘琛屼互涓嬬殑鍑嗗宸ヤ綔錛?/p>
1銆佷負姣忎釜妯″潡鍑嗗涓涓厤緗枃浠?/p>
2銆侀厤緗畐eb.xml鏂囦歡錛岄氱煡鎺у埗鍣?/p>
鍐沖畾閲囩敤澶氫釜妯″潡浠ュ悗錛屼綘闇瑕佸皢榪欎簺淇℃伅鍛婅瘔鎺у埗鍣紝榪欓渶瑕佸湪web.xml鏂囦歡榪涜閰嶇疆銆備笅闈㈡槸涓涓吀鍨嬬殑澶氭ā鍧楅厤緗細
|
瑕侀厤緗涓ā鍧楋紝浣犻渶瑕佸湪鍘熸湁鐨勪竴涓?lt;init-param>錛堝湪Struts 1.1涓皢鍏跺搴旂殑妯″潡縐頒負緙虹渷妯″潡錛夌殑鍩虹涔嬩笂錛屽鍔犳ā鍧楀搴旂殑<init-param>銆傚叾涓?lt;param-name>琛ㄧず涓篶onfig/XXX鐨勫艦寮忥紝鍏朵腑XXX涓哄搴旂殑妯″潡鍚嶏紝<param-value>涓繕鏄寚瀹氭ā鍧楀搴旂殑閰嶇疆鏂囦歡銆備笂闈㈣繖涓緥瀛愯鏄庤搴旂敤鏈変笁涓ā鍧楋紝鍒嗗埆鏄己鐪佹ā鍧椼乧ustomer鍜宱rder錛屽畠浠垎鍒搴斾笉鍚岀殑閰嶇疆鏂囦歡銆?/p>
3銆佸噯澶囧悇涓ā鍧楁墍闇鐨凙ctionForm銆丄ction鍜孞SP絳夎祫婧?/p>
浣嗘槸瑕佹敞鎰忕殑鏄紝妯″潡鐨勫嚭鐜頒篃鍚屾椂甯︽潵浜嗕竴涓棶棰橈紝鍗沖浣曞湪涓嶅悓妯″潡闂磋繘琛岃漿鍙戯紵鏈変袱縐嶆柟娉曞彲浠ュ疄鐜版ā鍧楅棿鐨勮漿鍙戯紝涓縐嶅氨鏄湪<forward>錛堝叏灞鎴栬呮湰鍦幫級涓畾涔夛紝鍙﹀涓縐嶅氨鏄埄鐢╫rg.apache.struts.actions.SwitchAction銆?/p>
涓嬮潰灝辨槸涓涓叏灞鐨勪緥瀛愶細
|
鍙互鐪嬪嚭錛屽彧闇瑕佸湪鍘熸湁鐨刾ath灞炴у墠鍔犱笂妯″潡鍚嶏紝鍚屾椂灝哻ontextRelative灞炴х疆涓簍rue鍗沖彲銆傛澶栵紝浣犱篃鍙互鍦?lt;action>涓畾涔変竴涓被浼肩殑鏈湴<forward>銆?/p>
|
濡傛灉浣犲凡緇忓鍦ㄥ叾浠栨ā鍧楋紝闇瑕佽漿鍥炲埌緙虹渷妯″潡錛岄偅搴旇綾諱技涓嬮潰榪欐牱瀹氫箟錛屽嵆妯″潡鍚嶄負絀恒?/p>
<forward name="success" contextRelative="true" path="/login.do"/> |
姝ゅ錛屼綘涔熷彲浠ヤ嬌鐢╫rg.apache.struts.actions.SwitchAction錛屼緥濡傦細
|
鎴戜滑棣栧厛鏉ヤ簡瑙VC涓殑鎺у埗鍣ㄣ傚湪Struts 1.1涓己鐪侀噰鐢ˋctionServlet綾繪潵鍏呭綋鎺у埗鍣ㄣ傚綋鐒跺鏋淎ctionServlet涓嶈兘婊¤凍浣犵殑闇姹傦紝浣犱篃鍙互閫氳繃緇ф壙瀹冩潵瀹炵幇鑷繁鐨勭被銆傝繖鍙互鍦?WEB-INF/web.xml涓潵鍏蜂綋鎸囧畾銆?/p>
瑕佹帉鎻ctionServlet錛屽氨蹇呴』浜嗚В瀹冩墍鎵紨鐨勮鑹層傞鍏堬紝ActionServlet琛ㄧずMVC緇撴瀯涓殑鎺у埗鍣ㄩ儴鍒嗭紝瀹冮渶瑕佸畬鎴愭帶鍒跺櫒鎵闇鐨勫墠绔帶鍒跺強杞彂璇鋒眰絳夎亴璐c傚叾嬈★紝ActionServlet琚疄鐜頒負涓涓笓闂ㄥ鐞咹TTP璇鋒眰鐨凷ervlet錛屽畠鍚屾椂鍏鋒湁servlet鐨勭壒鐐廣傚湪Struts 1.1涓畠涓昏瀹屾垚浠ヤ笅鍔熻兘錛?
銆
姝ゅ錛孉ctionServlet榪樿礋璐e垵濮嬪寲鍜屾竻闄ゅ簲鐢ㄩ厤緗俊鎭殑浠誨姟銆侫ctionServlet鐨勫垵濮嬪寲宸ヤ綔鍦╥nit鏂規硶涓畬鎴愶紝瀹冨彲浠ュ垎涓轟袱涓儴鍒嗭細鍒濆鍖朅ctionServlet鑷韓鐨勪竴浜涗俊鎭互鍙婃瘡涓ā鍧楃殑閰嶇疆淇℃伅銆傚墠鑰呬富瑕侀氳繃initInternal銆乮nitOther鍜宨nitServlet涓変釜鏂規硶鏉ュ畬鎴愩?/p>
鎴戜滑鍙互鍦?WEB-INF/web.xml涓寚瀹氬叿浣撶殑鎺у埗鍣ㄤ互鍙婂垵濮嬪弬鏁幫紝鐢變簬鐗堟湰鐨勫彉鍖栦互鍙奡truts 1.1涓ā鍧楁蹇電殑寮曡繘錛屼竴浜涘垵濮嬪弬鏁拌搴熷純鎴栬呯Щ鍏ュ埌/WEB-INF/struts-config.xml涓畾涔夈備笅闈㈠垪鍑烘墍鏈夎搴熷純鐨勫弬鏁幫紝鐩稿簲鍦板湪web.xml鏂囦歡涓篃涓嶉紦鍔卞啀浣跨敤銆?/p>
ActionServlet鏍規嵁涓嶅悓鐨勬ā鍧楁潵鍒濆鍖朚oduleConfig綾伙紝騫跺湪鍏朵腑浠XXconfig闆嗗悎鐨勬柟寮忎繚瀛樿妯″潡鐨勫悇縐嶉厤緗俊鎭紝姣斿ActionConfig錛孎ormBeanConfig絳夈?/p>
鍒濆鍖栧伐浣滃畬鎴愪箣鍚庯紝ActionServlet鍑嗗鎺ユ敹瀹㈡埛璇鋒眰銆傞拡瀵規瘡涓姹傦紝鏂規硶process(HttpServletRequest request, HttpServletResponse response)灝嗚璋冪敤銆傝鏂規硶鎸囧畾鍏蜂綋鐨勬ā鍧楋紝鐒跺悗璋冪敤璇ユā鍧楃殑RequestProcessor鐨刾rocess鏂規硶銆?/p>
|
RequestProcessor鍖呭惈浜哠truts鎺у埗鍣ㄧ殑鎵鏈夊鐞嗛昏緫錛屽畠璋冪敤涓嶅悓鐨刾rocessXXX鏂規硶鏉ュ畬鎴愪笉鍚岀殑澶勭悊銆備笅琛ㄥ垪鍑哄叾涓嚑涓富瑕佺殑鏂規硶錛?/p>
銆
鏂規硶 | 鍔熻兘 |
processPath | 鑾峰彇瀹㈡埛绔殑璇鋒眰璺緞 |
processMapping | 鍒╃敤璺緞鏉ヨ幏寰楃浉搴旂殑ActionMapping |
processActionForm | 鍒濆鍖朅ctionForm錛堝鏋滈渶瑕侊級騫跺瓨鍏ユ紜殑scope涓?/td> |
processActionCreate | 鍒濆鍖朅ction |
processActionPerform | 璋冪敤Action鐨別xecute鏂規硶 |
processForwardConfig | 澶勭悊Action榪斿洖鐨凙ctionForward |
瀵逛簬ActionForm浣犲彲浠ヤ粠浠ヤ笅鍑犱釜鏂歸潰鏉ョ悊瑙e畠錛?
銆
ActionForm棣栧厛鍒╃敤灞炴х殑getter鍜宻etter鏂規硶鏉ュ疄鐜板垵濮嬪寲錛屽垵濮嬪寲瀹屾瘯鍚庯紝ActionForm鐨剉alidate鏂規硶琚皟鐢紝浣犲彲浠ュ湪鍏朵腑鏉ユ鏌ヨ姹傚弬鏁扮殑姝g‘鎬у拰鏈夋晥鎬э紝騫朵笖鍙互灝嗛敊璇俊鎭互ActionErrors鐨勫艦寮忚繑鍥炲埌杈撳叆紿椾綋銆傚惁鍒欙紝ActionForm灝嗚浣滀負鍙傛暟浼犵粰action鐨別xecute鏂規硶浠ヤ緵浣跨敤銆?/p>
ActionForm bean鐨勭敓鍛藉懆鏈熷彲浠ヨ緗負session錛堢己鐪侊級鍜宺equest錛屽綋璁劇疆涓簊ession鏃訛紝璁板緱鍦╮eset鏂規硶涓皢鎵鏈夌殑灞炴ч噸鏂拌緗負鍒濆鍊箋?/p>
鐢變簬ActionForm瀵瑰簲浜嶩TTP紿椾綋錛屾墍浠ラ殢鐫欏甸潰鐨勫澶氾紝浣犵殑ActionForm灝嗕細鎬ラ熷鍔犮傝屼笖鍙兘鍚屼竴綾誨瀷欏甸潰瀛楁灝嗕細鍦ㄤ笉鍚岀殑ActionForm涓嚭鐜幫紝騫朵笖鍦ㄦ瘡涓狝ctionForm涓兘瀛樺湪鐩稿悓鐨勯獙璇佷唬鐮併備負浜嗚В鍐寵繖涓棶棰橈紝浣犲彲浠ヤ負鏁翠釜搴旂敤瀹炵幇涓涓狝ctionForm鎴栬呰嚦灝戜竴涓ā鍧楀搴斾簬涓涓狝ctionForm銆?/p>
浣嗘槸錛岃仛鍚堢殑浠d環灝辨槸澶嶇敤鎬у緢宸紝鑰屼笖闅劇淮鎶ゃ傞拡瀵硅繖涓棶棰橈紝鍦⊿truts 1.1涓彁鍑轟簡DynaActionForm鐨勬蹇點?/p>
DynaActionForm綾?/strong>
DynaActionForm鐨勭洰鐨勫氨鏄噺灝慉ctionForm鐨勬暟鐩紝鍒╃敤瀹冧綘涓嶅繀鍒涘緩涓涓釜鍏蜂綋鐨凙ctionForm綾伙紝鑰屾槸鍦ㄩ厤緗枃浠朵腑閰嶇疆鍑烘墍闇鐨勮櫄鎷烝ctionForm銆備緥濡傦紝鍦ㄤ笅琛ㄤ腑閫氳繃鎸囧畾<form-bean>鐨則ype涓?org.apache.struts.action.DynaActionForm"鏉ュ垱寤轟竴涓姩鎬佺殑ActionForm--loginForm銆?/p>
|
鍔ㄦ佺殑ActionForm鐨勪嬌鐢ㄦ柟娉曡窡鏅氱殑ActionForm鐩稿悓錛屼絾鏄娉ㄦ剰涓鐐廣傛櫘閫氱殑ActionForm瀵硅薄闇瑕佷負姣忎釜灞炴ф彁渚沢etter鍜宻etter鏂規硶錛屼互涓婇潰鐨勪緥瀛愯岃█錛屾垜浠渶瑕佹彁渚沢etUsername() 鍜?setUsername()鏂規硶鍙栧緱鍜岃緗畊sername灞炴э紝鍚屾牱鍦版湁涓瀵規柟娉曠敤浜庡彇寰楀拰璁劇疆password灞炴у拰actionClass灞炴с?/p>
濡傛灉浣跨敤DynaActionForm錛屽畠灝嗗睘鎬т繚瀛樺湪涓涓狧ashMap綾誨璞′腑錛屽悓鏃舵彁渚涚浉搴旂殑get(name) 鍜?set(name)鏂規硶錛屽叾涓弬鏁皀ame鏄璁塊棶鐨勫睘鎬у悕銆備緥濡傝璁塊棶DynaActionForm涓璾sername鐨勫鹼紝鍙互閲囩敤綾諱技鐨勪唬鐮侊細
|
鐢變簬鍊煎瓨鏀句簬涓涓狧ashMap瀵硅薄錛屾墍浠ヨ璁板緱瀵筭et()鏂規硶榪斿洖鐨凮bject瀵硅薄鍋氬己鍒舵х被鍨嬭漿鎹€傛鏄敱浜庤繖鐐瑰尯鍒紝濡傛灉浣犲湪Action涓潪甯擱綣佸湴浣跨敤ActionForm瀵硅薄錛屽緩璁繕鏄嬌鐢ㄦ櫘閫氱殑ActionForm瀵硅薄銆?/p>
鍦⊿truts 1.1涓紝闄や簡DynaActionForm浠ュ錛岃繕鎻愪緵浜嗚〃鍗曡緭鍏ヨ嚜鍔ㄩ獙璇佺殑鍔熻兘錛屽湪鍖卭rg.apache.struts.validator涓彁渚涗簡璁稿鏈夌敤鐨勭被錛屽叾涓渶甯歌鐨勫氨鏄疍ynaValidatorForm綾匯?/p>
DynaValidatorForm綾?/strong>
DynaValidatorForm鏄疍ynaActionForm鐨勫瓙綾伙紝瀹冭兘澶熸彁渚涘姩鎬丄ctionForm鍜岃嚜鍔ㄨ〃鍗曡緭鍏ラ獙璇佺殑鍔熻兘銆傚拰浣跨敤DynaActionForm綾諱技錛屼綘蹇呴』棣栧厛鍦ㄩ厤緗枃浠朵腑榪涜閰嶇疆錛?/p>
|
鍚屾椂瑕佸畾涔夐獙璇佺殑鎻掍歡錛?/p>
|
鍏朵腑鐨剉alidator.xml鍜寁alidator-rules.xml鍒嗗埆琛ㄧず楠岃瘉瀹氫箟鍜岄獙璇佽鍒欑殑鍐呭錛堝彲浠ュ悎騫跺湪涓璧鳳級錛屾瘮濡傞拡瀵逛笂渚嬩腑鐨凞ynaValidatorForm錛屾垜浠湁濡備笅楠岃瘉瀹氫箟錛坴alidator.xml錛夛細
|
浠庝笂榪板畾涔変腑錛屾垜浠彲浠ョ湅鍒板浜庡瓧孌祏sername鏈変笁欏歸獙璇侊細required, minlength, maxlength錛屾剰鎬濇槸璇ュ瓧孌典笉鑳戒負絀猴紝鑰屼笖闀垮害鍦?鍜?6涔嬮棿銆傝寁alidator-rules.xml鏂囦歡鍒欏彲浠ラ噰鐢⊿truts鎻愪緵鐨勭己鐪佹枃浠躲傛敞鎰忓湪<form-bean>涓畾涔夌殑form鏄浣曚笌validation.xml涓殑form鍏寵仈璧鋒潵鐨勩傛渶鍚庯紝瑕佸惎鍔ㄨ嚜鍔ㄩ獙璇佸姛鑳斤紝榪橀渶瑕佸皢Action閰嶇疆鐨剉alidate灞炴ц緗負true銆?/p>
|
姝ゆ椂錛孲truts灝嗘牴鎹畑ml閰嶇疆鏂囦歡涓殑瀹氫箟鏉ユ楠岃〃鍗曡緭鍏ワ紝騫跺皢涓嶇鍚堣姹傜殑閿欒淇℃伅杈撳嚭鍒伴〉闈€備絾鏄綘鍙兘浼氭兂錛氳繖涓姛鑳借櫧鐒跺ソ錛屽彲鏄粈涔堟楠岄兘璺戝埌鏈嶅姟鍣ㄧ鎵ц錛屾晥鐜囨柟闈㈠拰鐢ㄦ埛鏄撶敤鎬ф柟闈㈡槸涓嶆槸鏈変簺闂錛熶綘鍙兘浼氭蹇佃搗閭g畝鍗曠殑JavaScript瀹㈡埛绔獙璇併?/p>
涓嶇敤鎷呭績錛屽湪Struts 1.1涓篃鏀寔JavaScript瀹㈡埛绔獙璇併傚鏋滀綘閫夋嫨浜嗗鎴風楠岃瘉錛屽綋鏌愪釜琛ㄥ崟琚彁浜や互鍚庯紝Struts 1.1鍚姩瀹㈡埛绔獙璇侊紝濡傛灉嫻忚鍣ㄤ笉鏀寔JavaScript楠岃瘉錛屽垯鏈嶅姟鍣ㄧ楠岃瘉琚惎鍔紝榪欑鍙岄噸楠岃瘉鏈哄埗鑳藉鏈澶ч檺搴﹀湴婊¤凍鍚勭寮鍙戣呯殑闇瑕併侸avaScript楠岃瘉浠g爜涔熸槸鍦╲alidator-rules.xml鏂囦歡涓畾涔夌殑銆傝鍚姩瀹㈡埛绔獙璇侊紝浣犲繀欏誨湪鐩稿簲鐨凧SP鏂囦歡涓仛濡備笅璁劇疆錛?
銆
涓嬭〃涓垪鍑轟簡涓JSP鏂囦歡鐨勭ず渚嬩唬鐮侊紝綰㈠瓧閮ㄥ垎涓篔avascript楠岃瘉鎵闇浠g爜銆?/p>
|
鍏朵腑onsubmit鐨勫間負"return validateLoginForm(this);"錛屽畠鐨勮娉曚負錛?/p>
return validate + struts-config.xml涓畾涔夌殑form-bean鍚嶇О + (this);
staticJavascript.jsp鐨勫唴瀹逛負錛?/p>
|
濡傛灉validator-rules.xml涓畾涔夌殑鍩烘湰楠岃瘉鍔熻兘涓嶈兘婊¤凍浣犵殑闇姹傦紝浣犲彲浠ヨ嚜宸辨坊鍔犳墍闇鐨勯獙璇佺被鍨嬨?/p>
鎴戜滑閫氳繃緇ф壙Action綾繪潵瀹炵幇鍏蜂綋鐨勬墽琛岀被銆傚叿浣揂ction綾葷殑鍔熻兘涓鑸兘鍦╡xecute錛堜互鍓嶆槸perform鏂規硶錛夋柟娉曚腑瀹屾垚錛屽叾涓富瑕佹秹鍙婂埌浠ヤ笅鍑犱釜鏂歸潰錛?
銆
鎻愮ず錛?/strong>鐢變簬鍦ˋction鍜孉ctionForm涓兘鍙互瀹炵幇楠岃瘉鏂規硶錛岄偅涔堝浣曟潵瀹夋帓瀹冧滑涔嬮棿鐨勫垎宸ュ憿錛熶竴鑸潵璇達紝鎴戜滑縐夌潃MVC鍒嗙鐨勫師鍒欙紝涔熷氨鏄鍥劇駭鐨勯獙璇佸伐浣滄斁鍦ˋctionForm鏉ュ畬鎴愶紝姣斿杈撳叆涓嶈兘涓虹┖錛宔mail鏍煎紡鏄惁姝g‘錛屽埄鐢╒alidatorForm鍙互寰堣交鏉懼湴瀹屾垚榪欎簺宸ヤ綔銆傝屼笌鍏蜂綋涓氬姟鐩稿叧鐨勯獙璇佸垯鏀懼叆Action涓紝榪欐牱灝卞彲浠ヨ幏寰楁渶澶ctionForm閲嶇敤鎬х殑鍙兘銆?/em>
鍓嶉潰鎴戜滑鎻愬埌榪囷紝鎴戜滑涓誨紶灝嗕笟鍔¢昏緫鎵ц鍒嗙鍒板崟鐙殑JavaBean涓紝鑰孉ction鍙礋璐i敊璇鐞嗗拰嫻佺▼鎺у埗銆傝屼笖鑰冭檻鍒伴噸鐢ㄦх殑鍘熷洜錛屽湪鎵ц涓氬姟閫昏緫鐨凧avaBean涓笉瑕佸紩鐢ㄤ換浣曚笌Web搴旂敤鐩稿叧鐨勫璞★紝姣斿HttpServletRequest錛孒ttpServletResponse絳夊璞★紝鑰屽簲璇ュ皢鍏惰漿鍖栦負鏅氱殑Java瀵硅薄銆傚叧浜庤繖涓鐐癸紝鍙互鍙傝働etstore涓璚AF妗嗘灦鐨勫疄鐜版濊礬銆?/p>
姝ゅ錛屼綘鍙兘榪樻敞鎰忓埌execute涓巔erform鐨勪竴涓尯鍒細execute鏂規硶綆鍗曞湴鎺峰嚭Exception寮傚父錛岃宲erform鏂規硶鍒欐幏鍑篠ervletException鍜孖OException寮傚父銆傝繖涓嶆槸璇碨truts 1.1鍦ㄥ紓甯稿鐞嗗姛鑳芥柟闈㈠急鍖栦簡錛岃屾槸涓轟簡閰嶅悎Struts 1.1涓竴涓緢濂界殑鍔熻兘--瀹gО寮忓紓甯稿鐞嗘満鍒躲?/p>
鍜孍JB涓殑瀹gО寮忎簨鍔″鐞嗘蹇電被浼鹼紝瀹gО寮忓紓甯稿鐞嗗叾瀹炲氨鏄彲閰嶇疆鐨勫紓甯稿鐞嗭紝浣犲彲浠ュ湪閰嶇疆鏂囦歡涓寚瀹氱敱璋佹潵澶勭悊Action綾諱腑鎺峰嚭鐨勬煇縐嶅紓甯搞備綘鍙互鎸夌収浠ヤ笅姝ラ鏉ュ畬鎴愯鍔熻兘錛?
銆
涓嬭〃灝卞畾涔変簡涓涓叏灞鐨勫鐞嗙被CustomizedExceptionHandler錛屽畠琚敤鏉ュ鐞嗘墍鏈夌殑寮傚父銆?/p>
|
鍏朵腑鍏蜂綋鐨勫弬鏁板惈涔夛紝鍙互鍙傝僂xceptionHandler.java婧愭枃浠躲?/p>
璁插畬浜嗘ā鍨嬪拰鎺у埗鍣紝鎺ヤ笅鏉ユ垜浠娑夊強鐨勬槸瑙嗗浘銆傝鍥劇殑瑙掕壊涓昏鏄敱JSP鏉ュ畬鎴愶紝浠嶫SP鐨勮鑼冧腑鍙互鐪嬪嚭錛屽湪瑙嗗浘灞傚彲浠?鎶樿吘"鐨勬妧鏈笉鏄緢澶氾紝涓昏鐨勫氨鏄嚜瀹氫箟鏍囪搴撶殑搴旂敤銆係truts 1.1鍦ㄥ師鏈夌殑鍥涗釜鏍囪搴撶殑鍩虹涓婃柊澧炰簡涓や釜鏍囪搴?-Tiles鍜孨ested銆?/p>
鍏朵腑Tiles闄や簡鏇夸唬Template鐨勫熀鏈ā鏉垮姛鑳藉錛岃繕澧炲姞浜嗗竷灞瀹氫箟銆佽櫄鎷熼〉闈㈠畾涔夊拰鍔ㄦ侀〉闈㈢敓鎴愮瓑鍔熻兘銆俆iles寮哄ぇ鐨勬ā鏉垮姛鑳借兘澶熶嬌欏甸潰鑾峰緱鏈澶х殑閲嶇敤鎬у拰鐏墊椿鎬э紝姝ゅ鍙互緇撳悎Tiles閰嶇疆鏂囦歡涓殑欏甸潰瀹氫箟鍜孉ction鐨勮漿鍙戦昏緫錛屽嵆浣犲彲浠ュ皢涓涓狝ction杞彂鍒頒竴涓湪Tiles閰嶇疆鏂囦歡涓畾涔夌殑铏氭嫙欏甸潰錛屼粠鑰屽噺灝戦〉闈㈢殑鏁伴噺銆傛瘮濡傦紝涓嬭〃涓殑Action瀹氫箟浜嗕竴涓漿鍙戣礬寰勶紝瀹冪殑緇堢偣鏄痶ile.userMain錛岃屽悗鑰呮槸浣犲湪Tiles閰嶇疆鏂囦歡涓畾涔夌殑涓涓〉闈€?/p>
|
Tiles閰嶇疆鏂囦歡錛歵iles-defs.xml
|
鑰孨ested鏍囪搴撶殑浣滅敤鏄浠ヤ笂榪欎簺鍩烘湰鏍囪搴撹兘澶熷祵濂椾嬌鐢紝鍙戞尌鏇村ぇ鐨勪綔鐢ㄣ?/p>
鎵璋撶殑Commons Logging鎺ュ彛錛屾槸鎸囧皢鏃ュ織鍔熻兘鐨勪嬌鐢ㄤ笌鏃ュ織鍏蜂綋瀹炵幇鍒嗗紑錛岄氳繃閰嶇疆鏂囦歡鏉ユ寚瀹氬叿浣撲嬌鐢ㄧ殑鏃ュ織瀹炵幇銆傝繖鏍蜂綘灝卞彲浠ュ湪Struts 1.1涓氳繃緇熶竴鐨勬帴鍙f潵浣跨敤鏃ュ織鍔熻兘錛岃屼笉鍘葷鍏蜂綋鏄埄鐢ㄧ殑鍝鏃ュ織瀹炵幇錛屾湁鐐逛簬綾諱技JDBC鐨勫姛鑳姐係truts 1.1涓敮鎸佺殑鏃ュ織瀹炵幇鍖呮嫭錛歀og4J錛孞DK Logging API錛?LogKit錛孨oOpLog鍜孲impleLog銆?/p>
浣犲彲浠ユ寜鐓у涓嬬殑鏂瑰紡鏉ヤ嬌鐢–ommons Logging鎺ュ彛錛堝彲浠ュ弬鐓truts婧愭枃涓殑璁稿綾誨疄鐜幫級錛?/p>
|
鑰屽紑鍚棩蹇楀姛鑳芥渶綆鍗曠殑鍔炴硶灝辨槸鍦╓EB-INF/classes鐩綍涓嬫坊鍔犱互涓嬩袱涓枃浠訛細
commons-logging.properties鏂囦歡錛?/p>
|
simplelog.properties鏂囦歡錛?/p>
|
榪欓噷鎴戜滑閲囩敤鐨勬棩蹇楀疄鐜版槸SimpleLog錛屼綘鍙互鍦╯implelog.properties鏂囦歡鎸囧畾鏃ュ織鏄庣粏鐨勭駭鍒細trace錛宒ebug錛宨nfo錛寃arn錛宔rror鍜宖atal錛屼粠trace鍒癴atal閿欒綰у埆瓚婃潵瓚婇珮錛屽悓鏃惰緭鍑虹殑鏃ュ織淇℃伅涔熻秺鏉ヨ秺灝戙傝岃繖浜涚駭鍒槸鍜宱rg.apache.commons.logging.log鎺ュ彛涓殑鏂規硶涓涓瀵瑰簲鐨勩傝繖浜涚駭鍒槸鍚戝悗鍖呭惈鐨勶紝涔熷氨鏄墠闈㈢殑綰у埆鍖呭惈鍚庨潰綰у埆鐨勪俊鎭?/p>