锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1. 鏈鍘熷鐨凷truts2浼?xì)鐩存帴璧嬪糀ction涓殑鍙橀噺銆?濡俬ello.action?id=1錛屼細(xì)灝哸ction涓殑id灞炴ц祴鍊箋?br />
2. 濡傛灉鍙傛暟杈冨錛岃屼笖閮藉睘浜庡悓涓涓璞$殑錛屽彲浠ュ皢鎵鏈夊睘鎬ч兘鏀懼叆涓涓璞′腑錛屾瘮濡俬ello.action?user.id
浼?xì)湄?fù)action涓殑User瀵硅薄鐨刬d灞炴ц祴鍊箋?br />
3. ModelDriven鎺ュ彛錛屽鏋滀笉鎯沖啓澶"user."鍓嶇紑錛屽${user.id}錛屽彲浠ュ疄鐜癕odelDriven鎺ュ彛鐨刧etModel鍑芥暟錛?br />
榪斿洖user瀵硅薄銆傚垯Struts2紕板埌{id}鏃訛紝灝變細(xì)灝濊瘯璋冪敤getModel() 鑾峰緱user瀵硅薄鍐嶈幏鍙栧叾id灞炴с?br />
4. Prepareable鎺ュ彛錛岃繕鏈変竴縐嶆儏鍐礖ibernate甯哥敤鐨勬儏鍐碉紝涓涓璞″彲鑳芥湁寰堝灞炴?姣斿鏈?0涓睘鎬?錛?br />
浣嗛〉闈笂鍙兘鍙樉紺?涓睘鎬х殑杈撳叆妗嗐傚鏋滄寜涓婇潰鐨勬柟娉曪紝鍏坣ew涓涓猆ser綾伙紝鐒跺悗浠庨〉闈笂璧嬪箋?br />
淇濆瓨姝ゅ璞℃椂灝變細(xì)灝嗕笉鍦ㄩ〉闈笂淇敼鐨?涓睘鎬ф竻絀轟簡(jiǎn)銆傝繖鏃跺氨闇瑕佷袱嬈$殑binding錛屼竴寮濮媢ser鍙橀噺涓虹┖錛?br />
鍙粦瀹氫簡(jiǎn)action鐨刬d灞炴э紝鐒跺悗鍦╬repare()鍑芥暟涓煡鍑烘湁瀹屾暣10涓睘鎬х殑瀵硅薄錛岀劧鍚庝簩嬈$粦瀹氭椂鍐嶅皢欏甸潰鐨勯偅5涓睘鎬?br />
澶嶅埗鍒皍ser瀵硅薄涓?br />
prepare()鍑芥暟鏈変袱縐嶄綔鐢紝涓縐嶄笓闂ㄤ負(fù)浜?jiǎn)浜寢啤binding錛屼竴縐嶆槸浣滀負(fù)鍏叡鐨勬暟鎹噯澶囧嚱鏁般備絾鏄紝
涓涓猘ction鍐呮湁澶氫釜method錛屼笉鏄瘡涓涓猰ethod閮介渶瑕佹墽琛宲repare錛屾瘮濡俵ist()鏂規(guī)硶錛屽鏋滆繖縐峬ethod杈冨錛?br />
鎴栬呬細(xì)閫犳垚鍐茬獊鏃訛紝榪樻湁鍙﹀涓縐嶆柟寮忔潵瀹氫箟浜屾binding鍑芥暟銆傛瘮濡俻repareSave() 鍑芥暟錛屽氨浼?xì)榛樿鐨勫湪鎵цsave()
鍓嶆墽琛岋紝姝ゆ椂錛屼笓闂ㄥ疄鐜皃rePareMethodName() 鏂規(guī)硶鍐嶈皟搴︿竴涓唴閮ㄧ殑prepare鍑芥暟錛岃屽皢prepare()鍑芥暟鐣欑┖銆?/p>
1.媯(gè)绱㈠拰鐢ㄦ埛璇鋒眰鍖歸厤鐨凙ctionMapping瀹炰緥錛屽鏋滀笉瀛樺湪錛屽氨榪斿洖鐢ㄦ埛璇鋒眰璺緞鏃犳晥淇℃伅錛?/p>
2.濡傛灉ActionForm瀹炰緥涓嶅瓨鍦紝灝卞垱寤轟竴涓狝ctionForm瀵硅薄騫跺湪鍏朵腑淇濆瓨瀹㈡埛鎻愪氦鐨勮〃鍗曞唴瀹癸紱
3.鏍規(guī)嵁閰嶇疆淇℃伅鍐沖畾鏄惁璋冪敤ActionForm鐨剉alidate()鏂規(guī)硶錛?/p>
4.濡傛灉ActionForm鐨剉alidate()鏂規(guī)硶榪斿洖null鎴栬繑鍥炰竴涓笉鍖呭惈ActionMessage鐨凙ctionErrors瀵硅薄錛屽氨琛ㄧず琛ㄥ崟楠岃瘉鎴愬姛錛?/p>
5.ActionServlet鏍規(guī)嵁ActionMapping瀹炰緥鍖呭惈鐨勬槧灝勪俊鎭皢璇鋒眰杞彂緇橝ction錛堝鏋淎ction瀹炰緥涓嶅瓨鍦紝灝卞厛鍒涘緩Action瀹炰緥錛夛紝鐒跺悗璋冪敤Action鐨別xcute()鏂規(guī)硶錛?/p>
6.Action鐨別xcute()鏂規(guī)硶榪斿洖涓涓狝ctionForward瀵硅薄錛孉ctionServlet鍐嶆妸瀹㈡埛璇鋒眰杞彂緇橝ctionForward瀵硅薄鎸囧悜鐨凧SP緇勪歡錛?/p>
7.ActionForward瀵硅薄鎸囧悜鐨凧SP緇勪歡鐢熸垚鍔ㄦ佺綉欏碉紝榪斿洖緇欏鎴楓?/p>
瀵逛簬浠ヤ笂嫻佺▼4錛屽鏋淎ctionForm鐨剉alidate()鏂規(guī)硶榪斿洖涓涓垨澶氫釜鍖呭惈ActionMessage鐨凙ctionErrors瀵硅薄錛屽氨琛ㄧず琛ㄥ崟楠岃瘉澶辮觸錛屾鏃禔ctionServlet灝嗙洿鎺ユ妸璇鋒眰杞彂緇欏寘鍚敤鎴鋒彁浜よ〃鍗曠殑JSP緇勪歡銆?/p>
struts2浠g爜濮嬩簬webwork2.2.3錛屽皯璁哥殑姣旇緝澶х殑鏀瑰姩鍙兘浼?xì)濯?jiǎng)鍝嶄綘鐨剋ebwork2.2搴旂敤鐨勭Щ妞?/p>
1銆佷竴浜涜Deprecated鎺夌殑鏂規(guī)硶鍜岀被宸茬粡琚Щ闄わ紝榪欏寘鎷?font face="Arial">XWork Inversion of Control (IoC) 妗嗘灦銆?/font>
2銆佷嬌鐢▁html 涓婚鐨勪竴浜涘伐鍏峰簱琚獶OJO鐨勫伐鍏風(fēng)粍浠舵浛浠c?/p>
3銆佷嬌鐢‵CK editor鐨?font face="Arial">rich text editor 緇勪歡琚獶OJO鐨?font face="Arial">rich text editor 鏇夸唬錛屽洜涓篖GPL璁稿彲鐨勫師鍥犮?/font>
4銆?font face="Arial">date picker緇勪歡涔熺敱浜嶭GPL璁稿彲鐨勫師鍥犺DOJO鐨?font face="Arial">date picker緇勪歡鏇夸唬錛屼笉騫稿湴錛孌OJO鐨?font face="Arial">date picker緇勪歡涓嶆敮鎸佸浗闄呭寲銆?/font>
鎰熻3鏈夌偣鍙儨錛孎CK Editor榪樻槸寰堝ソ鐢ㄧ殑銆?/p>
灝喡燾om.opensymphony.webwork聽鏇挎崲鎴?org.apache.struts2.
灝哻om.opensymphony.xwork 鏇挎崲鎴?com.opensymphony.xwork2.
灝?webwork.properties聽閲嶅懡鍚嶄負(fù) struts.properties.
灝?/font> xwork.xml t閲嶅懡鍚嶄負(fù) struts.xml.
灝唖truts.properties鍜宻truts.xml 涓嚭鐜扮殑鎵鏈墂ebwork鏇挎崲鎴恠truts
web.xml涓紝灝?font face="Arial">com.opensymphony.webwork.dispatcher.FilterDispatcher聽鏇挎崲涓?org.apache.struts2.dispatcher.FilterDispatcher
濡傛灉鎮(zhèn)ㄤ嬌鐢ㄧ殑杞崲鍣ㄧ戶鎵夸簡(jiǎn)聽WebworkTypeConverter,聽灝嗚秴綾婚噸鍛藉悕涓?StrutsTypeConverter銆?/font>
鎮(zhèn)ㄥ繀欏誨皢鏍囩URI uri="/webwork"銆鏇挎崲涓?uri="/struts-tags"聽
鎵撳畬銆佹敹宸ワ紝鍩烘湰涓婂彲浠ユ祴璇曞彂甯冧簡(jiǎn)銆?/p>
褰撶劧JDK5鑳界敤涓婄殑璇濇渶濂界殑錛屽J4鐨勬敮鎸侊紝娌℃湁嫻嬭瘯榪囥?/p>
聽
鍙﹀錛屽湪浣跨敤涓彂鐜皊truts2鏀寔struts1涓殑閫氶厤絎﹂厤緗紝struts2鐩稿浜巗truts1錛屾湁浜?jiǎn)寰堝ぇ鐨勫彉鍖栧Q岃繖褰掑姛浜巌nterceptor鐨勪嬌鐢ㄥ拰OGNL鍜屼負(fù)鐢ㄦ埛鐫鎯崇殑璁捐錛屼嬌鐢╯truts2鑳藉緢鏄庢樉鍦版彁楂樼敓浜у姏銆傚笇鏈泈ebwork緇忚繃apache鐨勯噸鏂版墦閫犲悗鑳藉彂鎵厜澶с?/p>
bean:define
瀹氫箟鍙橀噺璧嬪兼湁涓夌鏂瑰紡錛?br />1銆傝緗畍alue灞炴э紝姝ゆ椂id灞炴у畾涔夌殑鍙橀噺涓哄瓧絎︿覆錛寁alue灞炴т唬琛ㄨ繖涓彉閲忕殑瀛楃涓插箋?br />聽<bean:defind id="userName" value="jing" />
聽UserName: <bean:write name="userName"/>
2銆傚悓鏃惰緗畁ame鍜宲roperty灞炴с俷ame灞炴ф寚瀹氫竴涓凡緇忓瓨鍦ㄧ殑Bean銆?br />Property灞炴ф寚瀹氬凡緇忓瓨鍦ㄧ殑Bean鐨勬煇涓睘鎬с俰d灞炴у畾涔夌殑鍙橀噺鐨勫肩敱property灞炴у喅瀹氥?br />聽 <%request.setAttribute("sessionBean",session);%>
聽<bean:defind id="theSession" name="sessionBean" property="servletContext"/>
聽ServletContext Name: <bean:write name="theSession" property="servletContextName"/>
3銆傚悓鏃惰緗畁ame鍜宼ype灞炴с?br /><bean:defind id="loginBean" name="loginBean" type="com.jason.action.LoginBean"/>
<bean:write name="loginBean" property="password"/>
bean:size
鐢ㄤ簬鑾峰緱Map錛孋ollection鐨勯暱搴?id鎸囧畾涓涓狪nteger綾誨瀷鐨勫彉閲?name鎸囧畾宸茬粡瀛樺湪鐨刴ap錛宑ollection鎴栬呮暟緇勩?br /><%
HashMap lines = new HashMap();
lines.put("1","Line 1");
lines.put("2","Line 2");
lines.put("3","Line 3");
request.setAttribute("lines",lines);
%>
<bean:size id="length" name="lines"/>
<bean:write name="length"/>