锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本一区二区三区在线,亚洲高清偷拍一区二区三区,亚洲?V无码乱码国产精品http://www.tkk7.com/kangdy/鎴戝氨鍍廇K47閲屾墦鍑哄幓鐨勫瓙寮廣傜洰鏍嘥MD姘歌繙鍦ㄥ墠鏂廣傛垜鍙兘TMD鎷煎懡鍚戝墠銆?/description>zh-cnSat, 10 May 2025 13:11:38 GMTSat, 10 May 2025 13:11:38 GMT60(杞創)鏁版嵁搴撹繛鎺?鍐呰繛鎺ワ紝澶栬繛鎺ワ紝浜ゅ弶榪炴帴)http://www.tkk7.com/kangdy/archive/2011/11/30/365223.htmlAK47AK47Wed, 30 Nov 2011 09:24:00 GMThttp://www.tkk7.com/kangdy/archive/2011/11/30/365223.htmlhttp://www.tkk7.com/kangdy/comments/365223.htmlhttp://www.tkk7.com/kangdy/archive/2011/11/30/365223.html#Feedback0http://www.tkk7.com/kangdy/comments/commentRss/365223.htmlhttp://www.tkk7.com/kangdy/services/trackbacks/365223.html鏂囩珷鍦板潃 錛?nbsp;http://www.zxbc.cn/html/20080527/51189.html
杞澆 
鍐呰繛鎺ワ細鎶婁袱涓〃涓暟鎹搴旂殑鏁版嵁鏌ュ嚭鏉?nbsp;
澶栬繛鎺ワ細浠ユ煇涓〃涓哄熀紜鎶婂搴旀暟鎹煡鍑烘潵錛堝叏榪炴帴鏄互澶氫釜琛ㄤ負鍩虹錛?nbsp;
student琛?nbsp;
no name 
1     a 
2     b 
3     c 
4     d 
grade琛?nbsp;
no grade 
1     90 
2     98 
3     95 
鍐呰繛鎺?inner join錛堟煡鎵炬潯浠朵腑瀵瑰簲鐨勬暟鎹紝no4娌℃湁鏁版嵁涓嶅垪鍑烘潵錛?nbsp;
璇硶錛歴elect * from student inner join grade on student.no = grade.no 
緇撴灉 
student.no name grade.no grade 
1             a             1         90 
2             b             2         98 
3             c             3         95 
宸﹁繛鎺ワ紙宸﹁〃涓墍鏈夋暟鎹紝鍙寵〃涓搴旀暟鎹級 
璇硶錛歴elect * from student left join grade on student.no = grade.no 
緇撴灉錛?nbsp;
student.no name grade.no grade 
1                 a         1         90 
2                 b         2         98 
3                 c         3         95 
4                 d     
鍙寵繛鎺ワ紙鍙寵〃涓墍鏈夋暟鎹紝宸﹁〃涓搴旀暟鎹級 
璇硶錛歴elect * from student right join grade on student.no = grade.no 
緇撴灉錛?nbsp;
student.no name grade.no grade 
1                 a         1         90 
2                 b         2         98 
3                 c         3         95 
鍏ㄨ繛鎺?nbsp;
璇硶錛歴elect * from student full join grade on student.no = grade.no 
緇撴灉錛?nbsp;
no name grade 
1     a     90 
2     b     98 
3     c     95 
4     d 
1     a     90 
2     b     98 
3     c     95 
娉細access 涓笉鑳界洿鎺ヤ嬌鐢╢ull join 錛岄渶瑕佷嬌鐢╱nion all 灝嗗乏榪炴帴鍜屽彸榪炴帴鍚堝茍鍚庢墠鍙互

浜ゅ弶榪炴帴
灝嗕袱涓〃鎵鏈夎緇勫悎錛岃繛鎺ュ悗鐨勮鏁頒負涓や釜琛ㄨ鏁扮殑涔樼Н錛堢瑳鍗″皵縐級
璇硶錛屽熺敤涓婇潰鐨勪緥瀛愬簲璇ユ槸
select * from student cross join grade

琛屾暟搴旇涓?2琛?錛?br />
no name grade 
1     a     90 
2     b     98 
3     c     95 
4     d  
1     a     90 
2     b     98 
3     c     95 
4     d 
1     a     90 
2     b     98 
3     c     95 
4     d 


AK47 2011-11-30 17:24 鍙戣〃璇勮
]]>
JAXB鍚慩ml闈炴牴鑺傜偣娣誨姞涓涓垨澶氫釜灞炴?/title><link>http://www.tkk7.com/kangdy/archive/2011/11/23/364635.html</link><dc:creator>AK47</dc:creator><author>AK47</author><pubDate>Wed, 23 Nov 2011 06:33:00 GMT</pubDate><guid>http://www.tkk7.com/kangdy/archive/2011/11/23/364635.html</guid><wfw:comment>http://www.tkk7.com/kangdy/comments/364635.html</wfw:comment><comments>http://www.tkk7.com/kangdy/archive/2011/11/23/364635.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/kangdy/comments/commentRss/364635.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kangdy/services/trackbacks/364635.html</trackback:ping><description><![CDATA[JAXB 鍚慩ml闈炴牴鑺傜偣娣誨姞涓涓垨澶氫釜灞炴э紝鐩存帴涓婁唬鐮侊紝鍏充簬JAXB鐨勭浉鍏蟲敞瑙e彲鏌ラ槄JAVA API銆?br /><br /><span style="color: red;">鍘熷垱鏂囩珷錛岃漿杞借娉ㄦ槑鍑哄銆?/span><a href="http://www.tkk7.com/kangdy/archive/2011/11/23/364635.html">http://www.tkk7.com/kangdy/archive/2011/11/23/364635.html</a><br /><br />code1: colors綾?nbsp; 鏍硅妭鐐?br /><fieldset><legend>code1</legend><div>package com.kangdy.test;<br /><br />import javax.xml.bind.annotation.XmlAccessType;<br />import javax.xml.bind.annotation.XmlAccessorType;<br />import javax.xml.bind.annotation.XmlElement;<br />import javax.xml.bind.annotation.XmlRootElement;<br /><br />@XmlRootElement(name = "Colors")<br />@XmlAccessorType(XmlAccessType.FIELD)<br />public class Colors {<br />    <br />    @XmlElement(name = "red",nillable=true)<br />    private Red red;<br />    <br />    @XmlElement(name = "blue",nillable=true)<br />    private Blue blue;<br /><br />    public Red getRed() {<br />        return red;<br />    }<br /><br />    public Blue getBlue() {<br />        return blue;<br />    }<br /><br />    public void setRed(Red red) {<br />        this.red = red;<br />    }<br /><br />    public void setBlue(Blue blue) {<br />        this.blue = blue;<br />    }<br />}</div></fieldset><br />code2:  Red綾?nbsp; 瀛愯妭鐐?br /><fieldset><legend>code2</legend>package com.kangdy.test;<br /><br />import javax.xml.bind.annotation.XmlAccessType;<br />import javax.xml.bind.annotation.XmlAccessorType;<br />import javax.xml.bind.annotation.XmlAttribute;<br />import javax.xml.bind.annotation.XmlRootElement;<br /><br />@XmlRootElement(name = "red")<br />@XmlAccessorType(XmlAccessType.FIELD)<br />public class Red {<br />    <br />    private String value;<br />    <br />    @XmlAttribute(name = "att1")<br />    private String att;<br />    <br />    public String getValue() {<br />        return value;<br />    }<br />    <br />    public void setValue(String value) {<br />        this.value = value;<br />    }<br /><br />    public String getAtt() {<br />        return att;<br />    }<br /><br />    public void setAtt(String att) {<br />        this.att = att;<br />    }<br />    <br />}<br /><br /></fieldset><br />code3:  綾?Blue 瀛愯妭鐐?br /><fieldset><legend>code3</legend><div>package com.kangdy.test;<br /><br />import javax.xml.bind.annotation.XmlAccessType;<br />import javax.xml.bind.annotation.XmlAccessorType;<br />import javax.xml.bind.annotation.XmlAttribute;<br />import javax.xml.bind.annotation.XmlRootElement;<br /><br />@XmlRootElement(name = "blue")<br />@XmlAccessorType(XmlAccessType.FIELD)<br />public class Blue {<br />    private String value;<br />    <br />    @XmlAttribute(name = "att2")<br />    private String att2;<br />    <br />    @XmlAttribute(name = "att1")<br />    private String att;<br />    <br />    public String getAtt() {<br />        return att;<br />    }<br /><br />    public void setAtt(String att) {<br />        this.att = att;<br />    }<br /><br />    public String getValue() {<br />        return value;<br />    }<br /><br />    public void setValue(String value) {<br />        this.value = value;<br />    }<br /><br />    public String getAtt2() {<br />        return att2;<br />    }<br /><br />    public void setAtt2(String att2) {<br />        this.att2 = att2;<br />    }<br />}</div></fieldset><br />code4: main綾?br /><fieldset><legend>code4</legend><div>package com.kangdy.test;<br /><br />import java.io.StringWriter;<br /><br />import javax.xml.bind.JAXBContext;<br />import javax.xml.bind.Marshaller;<br /><br />public class Jaxbtest {<br />    public static void main(String[] args) throws Exception {<br /><br />        StringWriter writer = new StringWriter();<br />        JAXBContext jc = JAXBContext.newInstance(Colors.class);<br />        Marshaller ma = jc.createMarshaller();<br />        ma.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);<br />        <br />        Colors colors = new Colors();<br />        Red red = new Red();<br />        red.setAtt("att-red");<br />        red.setValue("red");<br />        Blue blue = new Blue();<br />        blue.setValue("blue");<br />        blue.setAtt("att-blue");<br />        blue.setAtt2("blue-att2");<br />        colors.setRed(red);<br />        colors.setBlue(blue);<br />        <br />        ma.marshal(colors, writer);<br />        System.out.println(writer.toString());<br /><br />    }<br />}</div></fieldset><br />榪愯緇撴灉錛?br /><fieldset><legend>緇撴灉</legend><div><?xml version="1.0" encoding="UTF-8" standalone="yes"?><br /><Colors><br />    <red att1="att-red"><br />        <value>red</value><br />    </red><br />    <blue att1="att-blue" att2="blue-att2"><br />        <value>blue</value><br />    </blue><br /></Colors></div></fieldset><img src ="http://www.tkk7.com/kangdy/aggbug/364635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kangdy/" target="_blank">AK47</a> 2011-11-23 14:33 <a href="http://www.tkk7.com/kangdy/archive/2011/11/23/364635.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>(杞澆)鍏充簬paramsPrepareParamsStackhttp://www.tkk7.com/kangdy/archive/2011/11/16/363973.htmlAK47AK47Wed, 16 Nov 2011 07:39:00 GMThttp://www.tkk7.com/kangdy/archive/2011/11/16/363973.htmlhttp://www.tkk7.com/kangdy/comments/363973.htmlhttp://www.tkk7.com/kangdy/archive/2011/11/16/363973.html#Feedback0http://www.tkk7.com/kangdy/comments/commentRss/363973.htmlhttp://www.tkk7.com/kangdy/services/trackbacks/363973.htmlhttp://hi.baidu.com/%CC%AB%C6%BD%D1%F31986/blog/item/110b13b1384e805e08230259.html
杞創

paramsPrepareParamsStack鍦⊿truts 2.0涓槸涓涓緢濂囧鐨刬nterceptor stack錛屼互鑷充簬寰堝浜虹枒闂負浣曚笉灝嗗叾璁劇疆涓洪粯璁ょ殑interceptor stack銆俻aramsPrepareParamsStack涓昏瑙e喅浜哅odelDriven鍜孭reparable鐨勯厤鍚堥棶棰橈紝浠庡瓧闈笂鐞嗚В鏉ヨ錛?榪欎釜stack鐨勬嫤鎴櫒璋冪敤鐨勯『搴忎負錛氶鍏坧arams錛岀劧鍚巔repare錛屾帴涓嬫潵modelDriven錛屾渶鍚庡啀params銆係truts 2.0鐨勮璁′笂瑕佹眰modelDriven鍦╬arams涔嬪墠璋冪敤錛岃屼笟鍔′腑prepare瑕佽礋璐e噯澶噈odel錛屽噯澶噈odel鍙堥渶瑕佸弬鏁幫紝榪欏氨闇瑕佸湪 prepare涔嬪墠榪愯params鎷︽埅鍣ㄨ緗浉鍏沖弬鏁幫紝榪欎釜涔熷氨鏄垱寤簆aramsPrepareParamsStack鐨勫師鍥犮?/span>嫻佺▼濡備笅錛?br />    1. params鎷︽埅鍣ㄩ鍏堢粰action涓殑鐩稿叧鍙傛暟璧嬪鹼紝濡俰d  
   2. prepare鎷︽埅鍣ㄦ墽琛宲repare鏂規硶錛宲repare鏂規硶涓細鏍規嵁鍙傛暟錛屽id錛屽幓璋冪敤涓氬姟閫昏緫錛岃緗甿odel瀵硅薄
   3. modelDriven鎷︽埅鍣ㄥ皢model瀵硅薄鍘嬪叆value stack錛岃繖閲岀殑model瀵硅薄灝辨槸鍦╬repare涓垱寤虹殑
   4. params鎷︽埅鍣ㄥ啀灝嗗弬鏁拌祴鍊肩粰model瀵硅薄
   5. action鐨勪笟鍔¢昏緫鎵ц 渚濇嵁姝tack錛屼竴涓猘ction鐨勪唬鐮侀氬父濡備笅錛?

public class UserAction extends ActionSupport implements ModelDriven, Preparable {
    private User user;
    private int id;
    private UserService service; // user business service

    public void setId(int id) {
        this.id = id;
    }

    /**
     * create a new user if none exists, otherwise load the user with the
     * specified id
     */
    public void prepare() throws Exception {
        if (id == 0) {
            user = new User();
        } else {
            user = service.findUserById(id);
        }
    }

    public Object getModel() {
        return user;
    }

    /**
     * create or update the user and then view the created user
     */
    public String update() {
        if (id == 0) {
            service.create(user);
        } else {
            service.update(user);
        }
        return "redirect";
    }

    /**
     * delete the user and go to a default home page
     */
    public String delete() {
        service.deleteById(id);
        return "home";
    }

    /**
     * show the page allowing the user to view the existing data
     */
    public String view() {
        return "view";
    }

    /**
     * show the page allowing the user to view the existing data and change the
     * values
     */
    public String edit() {
        return "input";
    }

鍦ㄤ笂榪頒唬鐮佷腑錛宔dit鍜寁iew閮戒笉闇瑕佹牴鎹甶d鍐嶄負鐣岄潰鍑嗗鏁版嵁錛屽洜涓簆repare鏂規硶宸茬粡鍑嗗濂戒簡model錛岃繖浜涙柟娉曞緢綆鍗曘傚浜巙pdate 鏂規硶錛宲repare棣栧厛浼氫粠鏁版嵁搴撲腑鍔犺澆鏁版嵁錛岀劧鍚巔arams鎷︽埅鍣ㄤ細灝嗗弬鏁板間粯緇檓odel錛屽湪update鐩存帴鏇存柊灝卞彲浠ワ紝涓嶄細鍑虹幇鏁版嵁琚貢鏇存柊 鐨勬儏鍐點傝薄Hibernate妗嗘灦錛屼細鍒ゆ柇鍝簺瀛楁鏇存柊浜嗭紝鐒跺悗榪涜鏇存柊錛屾ц兘涔熶笉浼氭崯澶便?br /> 閫氳繃paramsPrepareParamsStack鍙互璁╂祦紼嬫洿鏄庣‘錛屼唬鐮佹洿綆媧侊紝涔熸洿鍒╀簬澶у鐨勪氦嫻併?/p>


AK47 2011-11-16 15:39 鍙戣〃璇勮
]]>
(杞澆) Struts 2鏉傝皥錛?錛夛細ValueStack瀵硅薄鐨勪紶閫佸甫鏈哄埗http://www.tkk7.com/kangdy/archive/2011/11/11/363543.htmlAK47AK47Fri, 11 Nov 2011 09:21:00 GMThttp://www.tkk7.com/kangdy/archive/2011/11/11/363543.htmlhttp://www.tkk7.com/kangdy/comments/363543.htmlhttp://www.tkk7.com/kangdy/archive/2011/11/11/363543.html#Feedback0http://www.tkk7.com/kangdy/comments/commentRss/363543.htmlhttp://www.tkk7.com/kangdy/services/trackbacks/363543.htmlStruts 2鏉傝皥錛?錛夛細ValueStack瀵硅薄鐨勪紶閫佸甫鏈?/strong>鍒?/div>浣滆咃細nokiaguy  鍘熸枃鍦板潃錛?a >http://blog.csdn.net/nokiaguy/article/details/4684750
杞創
   浼楁墍鍛ㄧ煡錛孲trut 2鐨凙ction綾婚氳繃灞炴у彲浠ヨ幏寰楁墍鏈夌浉鍏崇殑鍊鹼紝濡傝姹傚弬鏁般丄ction閰嶇疆鍙傛暟銆佸悜鍏朵粬Action浼犻掑睘鎬у鹼紙閫氳繃chain緇撴灉錛夌瓑絳夈傝鑾峰緱 榪欎簺鍙傛暟鍊鹼紝鎴戜滑瑕佸仛鐨勫敮涓涓浠朵簨灝辨槸鍦ˋction綾諱腑澹版槑涓庡弬鏁板悓鍚嶇殑灞炴э紝鍦⊿truts 2璋冪敤Action綾葷殑Action鏂規硶錛堥粯璁ゆ槸execute鏂規硶錛変箣鍓嶏紝灝變細涓虹浉搴旂殑Action灞炴ц祴鍊箋?br />     瑕佸畬鎴愯繖涓姛鑳斤紝鏈夊緢澶х▼搴︿笂錛孲truts 2瑕佷緷璧栦簬ValueStack瀵硅薄銆傝繖涓璞¤瘡絀挎暣涓狝ction鐨勭敓鍛藉懆鏈燂紙姣忎釜Action綾葷殑瀵硅薄瀹炰緥浼氭嫢鏈変竴涓猇alueStack瀵硅薄錛夈傚綋 Struts 2鎺ユ敹鍒頒竴涓?action鐨勮姹傚悗錛屼細鍏堝緩绔婣ction綾葷殑瀵硅薄瀹炰緥錛屽茍涓斿皢Action綾葷殑瀵硅薄瀹炰緥鍘嬪叆ValueStack瀵硅薄涓紙瀹為檯 涓婏紝ValueStack瀵逛簬鐩稿綋涓涓爤錛夛紝鑰孷alueStack綾葷殑setValue鍜宖indValue鏂規硶鍙互璁劇疆鍜岃幏寰桝ction瀵硅薄鐨勫睘鎬?鍊箋係truts 2涓殑鏌愪簺鎷︽埅鍣ㄦ鏄氳繃ValueStack綾葷殑setValue鏂規硶鏉ヤ慨鏀笰ction綾葷殑灞炴у肩殑銆傚params鎷︽埅鍣ㄧ敤浜庡皢璇鋒眰鍙傛暟鍊兼槧灝勫埌鐩?搴旀垚Action綾葷殑灞炴у箋傚湪params鎷︽埅鍣ㄤ腑鍦ㄨ幏寰楄姹傚弬鏁板煎悗錛屼細浣跨敤setValue鏂規硶璁劇疆鐩稿簲鐨凙ction綾葷殑灞炴с?br />     浠庤繖涓鐐瑰彲浠ョ湅鍑猴紝ValueStack瀵硅薄灝辮薄涓涓紶閫佸甫錛屽綋瀹㈡埛绔姹?action鏃訛紝Struts 2鍦ㄥ垱寤虹浉搴旂敤Action瀵硅薄鍚庡氨灝咥ction瀵硅薄鏀懼埌浜哣alueStack浼犻佸甫涓婏紝鐒跺悗ValueStack浼犻佸甫浼氬甫鐫Action瀵硅薄緇忚繃 鑻ュ共鎷︽埅鍣紝鍦ㄦ瘡涓鎷︽埅鍣ㄤ腑閮藉彲浠ラ氳繃ValueStack瀵硅薄璁劇疆鍜岃幏寰桝ction瀵硅薄涓殑灞炴у箋傚疄闄呬笂錛岃繖浜涙嫤鎴櫒灝辯浉褰撲簬嫻佹按綰夸綔涓氥傚鏋滆瀵?Action瀵硅薄榪涜鏌愰」鍔犲伐錛屽啀鍔犱竴涓嫤鎴櫒鍗沖彲錛屽綋涓嶉渶瑕佽繘琛岃繖欏瑰伐浣滄椂錛岀洿鎺ュ皢璇ユ嫤鎴櫒鍘繪帀鍗沖彲銆?/span>
    涓嬮潰鎴戜滑浣跨敤涓涓緥瀛愭潵婕旂ず榪欎釜榪囩▼銆傚湪榪欎釜渚嬪瓙涓疄鐜頒簡涓涓嫤鎴櫒錛岃鎷︽埅鍣ㄧ殑鍔熻兘鏄皢涓涓睘鎬ф枃浠朵腑鐨刱ey-value瀵規槧灝勬垚鐩稿簲鐨勫睘鎬х殑鍊箋傚涓嬮潰鏄竴涓睘鎬ф枃浠剁殑鍐呭錛?br />
    name = 瓚呬漢
    price = 10000

    鎴戜滑鍙互鍦ˋction綾諱腑瀹氫箟name鍜宲rice灞炴э紝鍦ˋction涓紩鐢ㄨ繖涓嫤鎴櫒鍚庯紝灝變細鑷姩涓哄睘鎬ц祴鍊箋?br />     鍦ㄤ嬌鐢ㄨ鎷︽埅鍣ㄦ湁濡備笅瑙勫垯錛?br />     1.  鎷︽埅鍣ㄨ鍙栫殑灞炴ф枃浠惰礬寰勭敱path鍙傛暟鎸囧畾銆?br />     2.  灞炴ф枃浠剁殑緙栫爜鏍煎紡鐢眅ncoding鍙傛暟鎸囧畾錛岄粯璁ゅ兼槸UTF-8銆?br />     3.  濡傛灉鏌愪釜key涓寘鍚湁“.”錛堣絎﹀彿涓嶈兘鍑虹幇鍦ㄦ爣璇嗙涓級錛屽垯鏈夊涓嬪鐞嗘柟娉曪細
    錛?錛夊皢Action綾葷殑灞炴у悕瀹氫箟涓哄幓鎺?#8220;.”鐨刱ey銆備緥濡傦紝key涓簆erson.name錛岃屽睘鎬у悕鍙畾涔変負personname銆?br />     錛?錛夊皢Action綾葷殑灞炴у悕瀹氫箟涓哄皢“.”鏇挎崲鎴愬叾浠栧瓧絎︾殑琛ㄧず絎﹀彿銆備緥濡傦紝key涓簆erson.name錛岃屽睘鎬у悕鍙畾涔変負person_name錛屽叾涓?#8220;_”鐢眘eparator鍙傛暟鎸囧畾銆?br />     4.  濡傛灉key澶暱錛屼篃鍙互鐩存帴浣跨敤Action鍙傛暟榪涜鏄犲皠錛屼緥濡傦紝key涓篶ountry.person.name錛屽彲鍋氬涓嬫槧灝勶細
      <param name="countrypersonname">name</param>
      瑕佹敞鎰忕殑鏄紝name灞炴у間笉鑳藉寘鍚?#8220;.”錛屽洜姝わ紝搴斿皢key鍊間腑鐨?#8220;.”鍘繪帀銆傜幇鍦ㄥ氨鍙互鐩存帴鍦ˋction綾諱腑瀹氫箟鍚嶄負name鐨勫睘鎬х殑錛宯ame灞炴х殑鍊間細涓巏ey鍊肩浉鍚屻?br />     5.  涓婇潰鎵鏈夌殑瑙勫垯鍙互鍚屾椂浣跨敤銆?br />
鎷︽埅鍣ㄧ殑婧愪唬鐮侊細

package interceptors;

import java.util.Enumeration;
import java.util.Map;
import java.util.Properties;
import java.io.InputStream;
import java.io.FileInputStream;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.ValueStack;

public class PropertyInterceptor extends AbstractInterceptor
{
    
private static final String DEFAULT_PATH_KEY = "path";
    
private static final String DEFAULT_ENCODING_KEY = "encoding";
    
private static final String DEFAULT_SEPARATOR_KEY = "separator";

    
protected String pathKey = DEFAULT_PATH_KEY;
    
protected String encodingKey = DEFAULT_ENCODING_KEY;
    
protected String separatorKey = DEFAULT_SEPARATOR_KEY;

    
public void setPathKey(String pathKey) 
    {
        
this.pathKey = pathKey;
    }

    
public void setEncodingKey(String encodingKey)
    {
        
this.encodingKey = encodingKey;
    }

    
public void setSeparatorKey(String separatorKey)
    {
        
this.separatorKey = separatorKey;
    }

    @Override
    
public String intercept(ActionInvocation invocation) throws Exception
    {
        ActionConfig config 
= invocation.getProxy().getConfig();

        Map
<String, String> parameters = config.getParams();
        
if (parameters.containsKey(pathKey))
        {
            String path 
= parameters.get(pathKey);
            String encoding 
= parameters.get(encodingKey);
            String separator 
= parameters.get(separatorKey);
            
if (encoding == null)
                encoding 
= "UTF-8";
            
if (separator == null)
                separator 
= "";
            path 
= invocation.getAction().getClass().getResource(path)
                    .getPath();
            Properties properties 
= new Properties();
            InputStream is 
= new FileInputStream(path);
            java.io.Reader reader 
= new java.io.InputStreamReader(is, encoding);
            
            properties.load(reader);
            ActionContext ac 
= invocation.getInvocationContext();
            ValueStack stack 
= ac.getValueStack();
            System.out.println(stack.hashCode());
            Enumeration names 
= properties.propertyNames();
            
while (names.hasMoreElements())
            {
                
//  涓嬮潰浼氫嬌鐢╯etValue鏂規硶淇敼ValueStack瀵硅薄涓殑鐩稿簲灞炴у?/span>
                String name = names.nextElement().toString();
                
if (!name.contains("."))
                    stack.setValue(name, properties.get(name)); 

                String newName 
= null;
                newName 
= parameters.get(name.replaceAll("//."""));
                
if (newName != null)
                    stack.setValue(newName, properties.get(name));

                
if (!separator.equals(""))
                {
                    newName 
= name.replaceAll("//.""");
                    stack.setValue(newName, properties.get(name));
                }               
                newName 
= name.replaceAll("//.", separator);
                stack.setValue(newName, properties.get(name));
            } 
        }
        
return invocation.invoke();
    }
}

鐢ㄤ簬嫻嬭瘯鐨凙ction綾葷殑婧愪唬鐮侊細

package actions;

public class MyAction
{
    
private String name;
    
private Integer price;
    
private String log4jappenderstdout;
    
private String log4j_rootLogger;
    
private String conversionPattern;

    
public String getName()
    {
        
return name;
    }

    
public void setName(String name)
    {
        
this.name = name;
    }

    
public Integer getPrice()
    {
        
return price;
    }

    
public void setPrice(Integer price)
    {
        
this.price = price;
    }

    
public String getLog4jappenderstdout()
    {
        
return log4jappenderstdout;
    }

    
public void setLog4jappenderstdout(String log4jappenderstdout)
    {
        
this.log4jappenderstdout = log4jappenderstdout;
    }

    
public String getLog4j_rootLogger()
    {
        
return log4j_rootLogger;
    }

    
public void setLog4j_rootLogger(String log4j_rootLogger)
    {
        
this.log4j_rootLogger = log4j_rootLogger;
    }

    
public String getConversionPattern()
    {
        
return conversionPattern;
    }

    
public void setConversionPattern(String conversionPattern)
    {
        
this.conversionPattern = conversionPattern;
    }

    
public String execute()
    {
        System.out.println(
"name:" + name);
        System.out.println(
"price:" + price);
        System.out.println(
"log4jappenderstdout:" + log4jappenderstdout);
        System.out.println(
"log4j_rootLogger:" + log4j_rootLogger);
        System.out.println(
"conversionPattern:" + conversionPattern);
        
return null;
    }
}

Action綾葷殑閰嶇疆浠g爜濡傦細

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd"
>
<struts>
    
<package name="struts" extends="struts-default">

        
<interceptors>
            
<interceptor name="property"
                class
="interceptors.PropertyInterceptor" />
            
<interceptor-stack name="myStack">
                
<interceptor-ref name="defaultStack" />
                
<interceptor-ref name="property" />
            
</interceptor-stack>
        
</interceptors>
        
<action name="test" class="actions.MyAction">
            
<interceptor-ref name="myStack" />
            
<param name="path">/log4j.properties</param>
            
<param name="encoding">UTF-8</param>
            
<param name="separator">_</param>
            
<param name="log4jappenderstdoutlayoutConversionPattern">
                conversionPattern
            
</param>

        
</action>
    
</package>
</struts>

  璇峰皢log4j.properties鏂囦歡澶嶅埗鍒癢EB-INF/classes鐩綍錛屽茍鍦ㄨ鏂囦歡涓姞鍏ame鍜宲rice灞炴с?br />
嫻嬭瘯緇撴灉錛?br />
name:涓浗
price:
34
log4jappenderstdout:org.apache.log4j.ConsoleAppender
log4j_rootLogger:error
, stdout
conversionPattern:%d{ABSOLUTE} %5p %c{
1}:%L - %m%n

    鐢變簬property鎷︽埅鍣ㄥ湪defaultStack鍚庡紩鐢紝鍥犳錛屽湪璇ユ嫤鎴櫒涓緗殑灞炴у兼槸鏈緇堢粨鏋滐紝濡傛灉灝唒roperty鎷︽埅鍣ㄦ斁鍦?defaultStack鍓嶉潰錛堝皢涓や釜<interceptor-ref>鍏冪礌鎺夋崲涓涓嬶級錛屽氨鍙互閫氳繃鍚屽悕鑳淎ction閰嶇疆鍙傛暟鎴栬姹傚弬鏁?鏉ュ共棰勬渶緇堢┒杈撳嚭緇撴灉浜嗐?


AK47 2011-11-11 17:21 鍙戣〃璇勮
]]>
(杞創)Struts2鏁版嵁浼犺緭鐨勮儗鍚庢満鍒訛細ValueStack錛堝兼爤錛?/title><link>http://www.tkk7.com/kangdy/archive/2011/11/11/363537.html</link><dc:creator>AK47</dc:creator><author>AK47</author><pubDate>Fri, 11 Nov 2011 08:19:00 GMT</pubDate><guid>http://www.tkk7.com/kangdy/archive/2011/11/11/363537.html</guid><wfw:comment>http://www.tkk7.com/kangdy/comments/363537.html</wfw:comment><comments>http://www.tkk7.com/kangdy/archive/2011/11/11/363537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kangdy/comments/commentRss/363537.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kangdy/services/trackbacks/363537.html</trackback:ping><description><![CDATA[     鎽樿: 錛堣漿錛塖truts2鏁版嵁浼犺緭鐨勮儗鍚庢満鍒訛細ValueStack錛堝兼爤錛夊師鏂囧湴鍧 錛歨ttp://blog.csdn.net/li_tengfei/article/details/6098134杞澆 1.     鏁版嵁浼犺緭鑳屽悗鏈哄埗錛歏alueStack(鍊兼爤)   鍦ㄨ繖涓鍒囩殑鑳屽悗錛屾槸鍥犱負鏈変簡ValueStack錛堝兼爤錛夛紒   Valu...  <a href='http://www.tkk7.com/kangdy/archive/2011/11/11/363537.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/kangdy/aggbug/363537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kangdy/" target="_blank">AK47</a> 2011-11-11 16:19 <a href="http://www.tkk7.com/kangdy/archive/2011/11/11/363537.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>structs2閰嶇疆UrlRewriteFilter http://www.tkk7.com/kangdy/archive/2011/11/09/363318.htmlAK47AK47Wed, 09 Nov 2011 09:22:00 GMThttp://www.tkk7.com/kangdy/archive/2011/11/09/363318.htmlhttp://www.tkk7.com/kangdy/comments/363318.htmlhttp://www.tkk7.com/kangdy/archive/2011/11/09/363318.html#Feedback0http://www.tkk7.com/kangdy/comments/commentRss/363318.htmlhttp://www.tkk7.com/kangdy/services/trackbacks/363318.html杞澆姣忎釜緗戦〉鎴栬姹傞兘鏄竴涓猽rl鍦板潃錛屼竴鑸紝榪欎釜鍦板潃鍙兘鏄?do,.page,.action涔嬬被鐨勫茍鍔犱笂'?'鍙楓?&'鍙鋒煡璇覆絳夋瀯鎴愮殑涓涓暱闀跨殑鐨剈rl銆傚緢urgly銆?

涓鑸殑url----------------------------------------------------------杈冨ソ鐨剈rl
http://www.xxx.net/user/profile.do?id=20001   ====> http://www.xxx.net/user/20001
http://www.xxx.net/forum/board.do?name=java   ====> http://www.xxx.net/forum/java
http://www.xxx.net/forum/thread.do?id=29923   ====> http://www.xxx.net/thread/29923

鍚庤呮槑鏄捐緝涓虹洿瑙傚拰婕備寒銆?

浣跨敤url rewrite鍙互寰堝ソ鐨勬敼鍠勮繖涓姸鍐點傜綉绔檜rl rewrite搴旂敤鏄潪甯稿箍娉涚殑錛岃壇濂界殑url璁捐緇欑敤鎴峰甫鏉ョ殑闈炲父濂界殑浣撻獙錛屽悓鏃朵篃鑳藉惛寮曟悳绱㈠紩鎿庣殑娉ㄦ剰銆?/fieldset>鍘熸枃鍦板潃錛?a >http://www.iteye.com/topic/53834
浣跨敤鏂瑰紡錛?/strong>
1 閰嶇疆web.xml鏂囦歡
鏍蜂緥錛?/strong>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>osivFilter</filter-name>
        <filter-class>
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <listener>
        <listener-class>
            org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <filter-mapping>
        <filter-name>osivFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--閰嶇疆UrlRewriteFilter榪囨護鍣?->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>*.html</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <filter>
        <filter-name>struts-prepare</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>com.secneo.action.*.*</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter>
        <filter-name>struts-execute</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
    </filter>
    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <!--鍦╯tructs2涓嬌鐢║rlRewriteFilter榪囨護鍣?->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.tld</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.tag</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>*.tld</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>struts-execute</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-execute</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-execute</filter-name>
        <url-pattern>*.tld</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>*.tld</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>
            org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
2  鍦╓EB-INF鐩綍涓嬫坊鍔爑rlrewrite.xml 鏂囦歡錛屾牴鎹叿浣撻渶瑕佸啓瑙勫垯銆?/span>
鏍蜂緥錛?/strong>
<?xml version="1.0" encoding="utf-8"?>
<urlrewrite>
    <rule>
        <from>^/(.*).html$</from>
        <to type="forward">/$1.action</to>
    </rule>
    <rule>
        <from>^/(.*).html?(.*)$</from>
        <to type="forward">/$1.action?$2</to>
    </rule>
</urlrewrite>


AK47 2011-11-09 17:22 鍙戣〃璇勮
]]>
structs2 filter鐨勬墽琛岄『搴?/title><link>http://www.tkk7.com/kangdy/archive/2011/11/09/363301.html</link><dc:creator>AK47</dc:creator><author>AK47</author><pubDate>Wed, 09 Nov 2011 07:44:00 GMT</pubDate><guid>http://www.tkk7.com/kangdy/archive/2011/11/09/363301.html</guid><wfw:comment>http://www.tkk7.com/kangdy/comments/363301.html</wfw:comment><comments>http://www.tkk7.com/kangdy/archive/2011/11/09/363301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kangdy/comments/commentRss/363301.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kangdy/services/trackbacks/363301.html</trackback:ping><description><![CDATA[<div>鏍規嵁servlet2.3瑙勮寖filter鎵ц鏄寜鐓eb.xml閰嶇疆鐨刦ilter-mapping鍏堝悗欏哄簭榪涜鎵ц銆?br />鎵浠ヨ嚜宸遍厤緗殑榪囨護鍣ㄦ斁鍦╯tructs2鐨勮繃婊ゅ櫒涔嬪墠銆?/div><img src ="http://www.tkk7.com/kangdy/aggbug/363301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kangdy/" target="_blank">AK47</a> 2011-11-09 15:44 <a href="http://www.tkk7.com/kangdy/archive/2011/11/09/363301.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>structs2鎷︽埅鍣?/title><link>http://www.tkk7.com/kangdy/archive/2011/11/08/363205.html</link><dc:creator>AK47</dc:creator><author>AK47</author><pubDate>Tue, 08 Nov 2011 10:35:00 GMT</pubDate><guid>http://www.tkk7.com/kangdy/archive/2011/11/08/363205.html</guid><wfw:comment>http://www.tkk7.com/kangdy/comments/363205.html</wfw:comment><comments>http://www.tkk7.com/kangdy/archive/2011/11/08/363205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kangdy/comments/commentRss/363205.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kangdy/services/trackbacks/363205.html</trackback:ping><description><![CDATA[<strong>娣卞叆struct2鎷︽埅鍣?/strong>  榪欑瘒鏂囩珷寰堝ソ錛岀粏鑷磋瑙d簡structs2鍜屾嫤鎴櫒鐨勫師鐞嗐?br /><div><a >http://zhanghong.iteye.com/blog/452465</a><br /><fieldset><legend>杞澆</legend><span>鍦ㄦ瘡嬈″浣犵殑 Action鐨?execute()鏂規硶璇鋒眰鏃訛紝緋葷粺浼氱敓鎴愪竴涓?ActionInvocation瀵硅薄錛岃繖涓璞′繚瀛樹簡 action鍜屼綘鎵閰嶇疆鐨勬墍鏈夌殑鎷︽埅鍣ㄤ互鍙婁竴浜涚姸鎬佷俊鎭傛瘮濡備綘鐨勫簲鐢ㄤ嬌鐢ㄧ殑鏄?defaultStack錛岀郴緇熷皢浼氫互鎷︽埅鍣ㄦ爤閰嶇疆鐨勯『搴忓皢姣忎釜鎷︽埅鍣ㄥ寘瑁呮垚涓涓釜 InterceptorMapping(鍖呭惈鎷︽埅鍣ㄥ悕瀛楀拰瀵瑰簲鐨勬嫤鎴櫒瀵硅薄 )緇勬垚涓涓?Iterator淇濆瓨鍦?ActionInvocation涓傚湪鎵ц ActionInvocation鐨?invoke()鏂規硶鏃朵細瀵硅繖涓?Iterator榪涜榪唬錛屾瘡嬈″彇鍑轟竴涓?InterceptorMapping錛岀劧鍚庢墽琛屽搴?Interceptor鐨?intercept(ActionInVocation inv)鏂規硶錛岃?intercept(ActionInInvocation inv)鏂規硶鍙堝寘鍚綋鍓嶇殑 ActionInInvcation瀵硅薄浣滀負鍙傛暟錛岃屽湪姣忎釜鎷︽埅鍣ㄤ腑鍙堜細璋冪敤 inv鐨?invoke()鏂規硶錛岃繖鏍峰氨浼氳繘鍏ヤ笅涓涓嫤鎴櫒鎵ц浜嗭紝榪欐牱鐩村埌鏈鍚庝竴涓嫤鎴櫒鎵ц瀹岋紝鐒跺悗鎵ц Action鐨?execute()鏂規硶 (鍋囪浣犳病鏈夐厤緗闂柟娉曪紝榛樿鎵ц Action鐨?execute()鏂規硶 )銆傚湪鎵ц瀹?execute()鏂規硶鍙栧緱浜?result鍚庡張浠ョ浉鍙嶇殑欏哄簭璧板嚭鎷︽埅鍣ㄦ爤錛岃繖鏃跺彲浠ュ仛浜涙竻鐞嗗伐浣溿傛渶鍚庣郴緇熷緱鍒頒簡涓涓?result錛岀劧鍚庢牴鎹?result鐨勭被鍨嬪仛榪涗竴姝ユ搷浣溿?/span></fieldset><br /><div><strong>閰嶇疆鎷︽埅鍣細</strong>Struts2涓彁渚涗簡澶ч噺鐨勬嫤鎴櫒錛屽涓嫤鎴櫒鍙互緇勬垚涓涓嫤鎴櫒鏍堬紝緋葷粺閰嶇疆浜嗕竴涓粯璁ょ殑鎷︽埅鍣ㄦ爤 defaultStack錛屽叿浣撳寘鎷偅浜涙嫤鎴櫒浠ュ強欏哄簭鍙互鍦╯truts-default.xml涓壘鍒般?br />1) <br /><package name="default" extends="struts-default"><br />   <interceptors><br />       <interceptor name="timer" class=".."/><br />       <interceptor name="logger" class=".."/><br />   </interceptors><br /><br />   <action name="login"<br />      class="tutorial.Login"><br />        <interceptor-ref name="timer"/><br />        <interceptor-ref name="logger"/><br />         <result name="input">login.jsp</result><br />         <result name="success"<br />            type="redirectAction">/secure/home</result><br />   </action><br /></package><br /><br />2)<br /><package name="default" extends="struts-default"><br />   <interceptors><br />        <interceptor name="timer" class=".."/><br />        <interceptor name="logger" class=".."/><br />        <interceptor-stack name="myStack"><br />           <interceptor-ref name="timer"/><br />           <interceptor-ref name="logger"/><br />       <interceptor-ref name="defaultStack"/>    <br />        </interceptor-stack><br />    </interceptors><br /><br /><action name="login"<br />     class="tutuorial.Login"><br />         <interceptor-ref name="myStack"/><br />         <result name="input">login.jsp</result><br />         <result name="success"<br />             type="redirectAction">/secure/home</result><br /></action><br /></package><br /><br /><strong>鎷︽埅鍣ㄦ墽琛岄『搴忥細</strong><br /><interceptor-stack name="xaStack"><br />  <interceptor-ref name="thisWillRunFirstInterceptor"/><br />  <interceptor-ref name="thisWillRunNextInterceptor"/><br />  <interceptor-ref name="followedByThisInterceptor"/><br />  <interceptor-ref name="thisWillRunLastInterceptor"/><br /></interceptor-stack><br /><br />鎵ц欏哄簭錛?br />thisWillRunFirstInterceptor<br />  thisWillRunNextInterceptor<br />    followedByThisInterceptor<br />      thisWillRunLastInterceptor<br />        MyAction1<br />        MyAction2 (chain)<br />        MyPreResultListener<br />        MyResult (result)<br />      thisWillRunLastInterceptor<br />    followedByThisInterceptor<br />  thisWillRunNextInterceptor<br />thisWillRunFirstInterceptor<br /><br /><br /><strong>鑷畾涔夋嫤鎴櫒:</strong>蹇呴』瀹炵幇 com.opensymphony.xwork2.interceptor.Interceptor 涔熷彲浠ョ戶鎵?AbstractInterceptor<br /><br /><span style="color: #ff0000;">鎷︽埅鍣ㄨ淇濊瘉綰跨▼瀹夊叏銆傚洜涓簊tructs2涓嫤鎴櫒浼氬湪璇鋒眰闂村叡浜?/span></div></div><img src ="http://www.tkk7.com/kangdy/aggbug/363205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kangdy/" target="_blank">AK47</a> 2011-11-08 18:35 <a href="http://www.tkk7.com/kangdy/archive/2011/11/08/363205.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>(杞創)struts2 宸ヤ綔鍘熺悊鍥?/title><link>http://www.tkk7.com/kangdy/archive/2011/11/08/363179.html</link><dc:creator>AK47</dc:creator><author>AK47</author><pubDate>Tue, 08 Nov 2011 07:10:00 GMT</pubDate><guid>http://www.tkk7.com/kangdy/archive/2011/11/08/363179.html</guid><wfw:comment>http://www.tkk7.com/kangdy/comments/363179.html</wfw:comment><comments>http://www.tkk7.com/kangdy/archive/2011/11/08/363179.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kangdy/comments/commentRss/363179.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kangdy/services/trackbacks/363179.html</trackback:ping><description><![CDATA[     鎽樿: 鍘熻創鍦板潃錛歨ttp://blog.csdn.net/qjyong/article/details/1795833杞創 鏈榪戝涔爏truts2錛屽叾瀹炲畠灝辨槸webwork2.2鐨勫崌綰х増錛岀幇闄勪笂鍘熺悊鍥? 涓婂浘鏉ユ簮浜嶴truts2瀹樻柟绔欑偣錛屾槸Struts 2 鐨勬暣浣撶粨鏋勩備竴涓姹傚湪Struts2妗嗘灦涓殑澶勭悊澶ф鍒嗕負浠ヤ笅鍑犱釜姝ラ1 瀹㈡埛绔垵濮嬪寲涓涓寚鍚慡ervlet瀹瑰櫒錛堜緥濡俆omcat錛夌殑璇鋒眰2 ...  <a href='http://www.tkk7.com/kangdy/archive/2011/11/08/363179.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/kangdy/aggbug/363179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kangdy/" target="_blank">AK47</a> 2011-11-08 15:10 <a href="http://www.tkk7.com/kangdy/archive/2011/11/08/363179.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閲嶆柊璁よ瘑Java finallyhttp://www.tkk7.com/kangdy/archive/2011/11/01/362456.htmlAK47AK47Tue, 01 Nov 2011 08:56:00 GMThttp://www.tkk7.com/kangdy/archive/2011/11/01/362456.htmlhttp://www.tkk7.com/kangdy/comments/362456.htmlhttp://www.tkk7.com/kangdy/archive/2011/11/01/362456.html#Feedback0http://www.tkk7.com/kangdy/comments/commentRss/362456.htmlhttp://www.tkk7.com/kangdy/services/trackbacks/362456.html浠ヤ笅鏄漿璐村唴瀹癸細

1 . JAVA finally瀛楀彞鐨勫紓甯鎬涪澶卞拰榪斿洖鍊艱鐩栬В鏋?/strong>
鍘熷笘鍦板潃 錛?br />http://blog.csdn.net/sureyonder/article/details/5560538
杞創
Java铏氭嫙鏈哄湪姣忎釜try璇彞鍧楀拰涓庡叾鐩稿叧鐨刢atch瀛愬彞鐨勭粨灝?澶勯兘浼?#8220;璋冪敤”finally瀛愬彞鐨勫瓙渚嬬▼銆傚疄闄呬笂錛宖inally瀛愬彞鍦ㄦ柟娉曞唴閮ㄧ殑琛ㄧ幇寰堣薄“寰瀷瀛愪緥紼?#8221;銆俧inally瀛愬彞姝e父緇撴潫鍚庯紞鎸囩殑鏄痜inally瀛愬彞涓渶鍚庝竴鏉¤鍙ユ甯告墽琛屽畬姣曪紝涓嶅寘鎷姏鍑哄紓甯革紝鎴栨墽琛宺eturn銆乧ontinue銆乥reak絳夋儏鍐碉紝闅跺睘浜庤繖涓猣inally瀛愬彞鐨勫井鍨嬪瓙渚嬬▼鎵ц“榪斿洖”鎿嶄綔銆傜▼搴忓湪絎竴嬈¤皟鐢ㄥ井鍨嬪瓙渚嬬▼鐨勫湴鏂圭戶緇墽琛屽悗闈㈢殑璇彞銆?br />
finally“寰瀷瀛愪緥紼?#8221;涓嶇瓑鍚屼簬鏂規硶鍑芥暟鐨勮皟鐢紝finally瀛愬彞閮芥槸鍦ㄥ悓涓涓爤鍐呮墽琛岀殑錛屽井鍨嬪瓙渚嬬▼鐨?#8220;榪斿洖”鎿嶄綔涔熶笉浼氭秹鍙婂埌鏂規硶閫鏍堬紝浠呬粎鏄嬌紼嬪簭璁℃暟鍣╬c璺寵漿鍒板悓涓涓柟娉曠殑涓涓笉鍚岀殑浣嶇疆緇х畫鎵ц銆?br />涓銆寮傚父涓㈠け
    public static void exceptionLost()  
     {  
       try  
       {  
         try  
         {  
           throw new Exception( "exception in try" );  
         }  
         finally  
         {  
           throw new Exception( "exception in finally" );  
         }  
       }  
       catch( Exception e )  
       {  
         System.out.println( e );  
       }  
     }  

exceptionLost()鐨勮緭鍑虹粨鏋滄槸“exception in finally”錛岃屼笉鏄痶ry鍧椾腑鎶涘嚭鐨勫紓甯革紝榪欐槸JAVA寮傚父鏈哄埗鐨勪竴涓憰鐤碉紞寮傚父涓㈠け銆?br />
鍦ㄥ瓧鑺傜爜涓紝throw璇彞涓嶆槸鍘熷瓙鎬ф搷浣溿傚湪杈冭佺殑JDK涓紝exceptionLost()涓璽ry鍧楃殑throw璇彞鍒嗚В涓哄嚑姝ユ搷浣滐細
1) 鎶奅xception("exception in try")瀵硅薄寮曠敤瀛樺偍鍒頒竴涓眬閮ㄥ彉閲忎腑
銆銆astore_2 銆// pop the reference to the thrown exception, store into local variable 2
2) 璋冪敤finally寰瀷瀛愮▼搴?br />3) 鎶婂眬閮ㄥ彉閲忎腑鐨凟xception("exception in try")瀵硅薄寮曠敤push鍒版搷浣滄暟鏍堥《錛岀劧鍚庢姏鍑哄紓甯?br />銆銆aload_2 銆// push the reference to the thrown exception from local variable 2

銆銆athrow 銆銆// throw the exception

濡傛灉finally閫氳繃break銆乺eturn銆乧ontinue錛屾垨鑰呮姏鍑哄紓甯歌岄鍑猴紝閭d箞涓婇潰鐨勭錛撴灝變笉浼氭墽琛屻?br />
鍦↗DK1.6涓紝閫氳繃瀛楄妭鐮佹垜浠彲浠ョ湅鍒幫紝finally瀛愬彞浣滀負涓縐嶇壒孌婄殑catch鏉ュ疄鐜扮殑錛屼笅闈㈡槸exceptionLost()鏂規硶鐨勫紓甯歌〃錛?br />
Exception table錛?br />  from   to  銆target 銆type
   0    銆10    10   銆銆any
銆0    銆21    21   銆銆Class java/lang/Exception

finally鍙互鎹曡幏浠?琛屽埌9琛屼箣闂存姏鍑虹殑浠諱綍綾誨瀷(any)鐨勫紓甯革紝騫墮噸鏂版姏鍑烘崟鑾風殑寮傚父錛屾垨鑰呮姏鍑轟竴涓嚜宸辨瀯閫犵殑鏂板紓甯革紝榪欎釜鏂板紓甯稿氨浼氳鐩杢ry璇彞鍧椾腑鐨勫紓甯搞?br />浜屻榪斿洖鍊艱鐩?br />
    public static int getValue()  
     {  
       int value = 0;  
         
       try  
       {  
         value = 100;  
           
         return value;  
       }  
       finally  
       {  
         value = 200;  
       }  
     }  

榪欎釜鏂規硶鐨勮繑鍥炲兼槸100榪樻槸200?緇撴灉鏄?00銆?br />鍦ㄥ瓧鑺傜爜涓紝return璇彞涓嶆槸鍘熷瓙鎬ф搷浣滐紝瀹冧細鎶奼etValue()涓殑return璇彞鍒嗚В涓哄嚑姝ユ搷浣滐細
1) 鎶妚alue鍊煎瓨鍌ㄥ埌涓涓眬閮ㄥ彉閲?榪欓噷鍛藉悕涓簍emp)涓細
銆銆 iload_0銆銆 // push local variable 0 - the 100
銆銆 istore_2銆  //  pop an int (the 100), store into local varaible 2
2) 璋冪敤finally寰瀷瀛愮▼搴?br />3) 鎶婂眬閮ㄥ彉閲?鎸噒emp)鐨勫紁ush鍒版搷浣滄暟鏍堥《錛岀劧鍚庤繑鍥炲埌璋冪敤鏂規硶
 銆   iload_2銆銆// push local varaible 2 - the 100
 銆銆ireturn      // return int on top of the stack - the 100: return 100

鐢變簬return璇彞鍦ㄨ繑鍥炰箣鍓嶄細鎶婅繑鍥炲間繚瀛樺埌涓涓復鏃剁殑灞閮ㄥ彉閲忎腑錛屾墍浠ュ湪finally瀛愬彞鍐呭value閲嶆柊璧嬪間笉浼氬獎鍝嶈繑鍥炲箋?br />
浜嗚Вfinally瀛愬彞鍐呭湪鐨勪竴浜涚煡璇嗭紝鎴戜滑鑳藉浜嗚Вfinally鑳藉鍋氫粈涔堝拰涓嶈兘澶熷仛浠涔堬紝榪欐牱浼氬府鍔╂垜浠紜嬌鐢╢inally瀛愬彞銆?/div>

2 . 鍏充簬 Java 涓?finally 璇彞鍧楃殑娣卞害杈ㄦ瀽
鍘熷笘鍦板潃 錛?a href=" http://www.ibm.com/developerworks/cn/java/j-lo-finally/index.html?ca=drs-">
http://www.ibm.com/developerworks/cn/java/j-lo-finally/index.html?ca=drs-
杞創
鍏充簬 Java 铏氭嫙鏈烘槸濡備綍緙栬瘧 finally 璇彞鍧楃殑闂錛屾湁鍏磋叮鐨勮鑰呭彲浠ュ弬鑰?span style="color: #008000;">銆?The JavaTM Virtual Machine Specification, Second Edition 銆嬩腑 7.13 鑺?Compiling finally銆傞偅閲岃緇嗕粙緇嶄簡 Java 铏氭嫙鏈烘槸濡備綍緙栬瘧 finally 璇彞鍧椼傚疄闄呬笂錛孞ava 铏氭嫙鏈轟細鎶?finally 璇彞鍧椾綔涓?subroutine錛堝浜庤繖涓?subroutine 涓嶇煡璇ュ浣曠炕璇戜負濂斤紝騫茶剢灝變笉緲昏瘧浜嗭紝鍏嶅緱浜х敓姝т箟鍜岃瑙c傦級鐩存帴鎻掑叆鍒?try 璇彞鍧楁垨鑰?catch 璇彞鍧楃殑鎺у埗杞Щ璇彞涔嬪墠銆備絾鏄紝榪樻湁鍙﹀涓涓笉鍙拷瑙嗙殑鍥犵礌錛岄偅灝辨槸鍦ㄦ墽琛?subroutine錛堜篃灝辨槸 finally 璇彞鍧楋級涔嬪墠錛宼ry 鎴栬?catch 璇彞鍧椾細淇濈暀鍏惰繑鍥炲煎埌鏈湴鍙橀噺琛紙Local Variable Table錛変腑銆傚緟 subroutine 鎵ц瀹屾瘯涔嬪悗錛屽啀鎭㈠淇濈暀鐨勮繑鍥炲煎埌鎿嶄綔鏁版爤涓紝鐒跺悗閫氳繃 return 鎴栬?throw 璇彞灝嗗叾榪斿洖緇欒鏂規硶鐨勮皟鐢ㄨ咃紙invoker錛夈?/span>璇鋒敞鎰忥紝鍓嶆枃涓垜浠浘緇忔彁鍒拌繃 return銆乼hrow 鍜?break銆乧ontinue 鐨勫尯鍒紝瀵逛簬榪欐潯瑙勫垯錛堜繚鐣欒繑鍥炲鹼級錛屽彧閫傜敤浜?return 鍜?throw 璇彞錛屼笉閫傜敤浜?break 鍜?continue 璇彞錛屽洜涓哄畠浠牴鏈氨娌℃湁榪斿洖鍊箋?/span>


AK47 2011-11-01 16:56 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 一个人看www免费高清字幕| 99精品视频在线观看免费| 无码乱人伦一区二区亚洲一| 朝桐光亚洲专区在线中文字幕| 国产一级理论免费版| 亚洲欧美国产国产一区二区三区| 国产精品嫩草影院免费| 亚洲免费日韩无码系列| 亚洲美女大bbbbbbbbb| 久久久久国产成人精品亚洲午夜| 成av免费大片黄在线观看| 亚洲av日韩av永久无码电影| 亚洲首页在线观看| 久久久久久亚洲精品成人| 亚洲精品福利网站| 亚洲午夜在线一区| 日本亚洲欧美色视频在线播放| 色费女人18女人毛片免费视频| 亚洲精品~无码抽插| 337p日本欧洲亚洲大胆色噜噜| 国产亚洲精品a在线观看app| 亚洲精品无码久久久久| 中文字幕亚洲一区二区三区| 最近免费中文字幕mv电影| 无码的免费不卡毛片视频| 国产免费久久精品丫丫| 84pao强力永久免费高清 | 亚洲精品91在线| 老司机午夜精品视频在线观看免费| 国产精品偷伦视频观看免费 | 一级做a爰片久久毛片免费陪 | 亚洲成a人一区二区三区| 国产精品无码永久免费888| 亚洲精品亚洲人成在线| 亚洲av最新在线网址| 亚洲成a人片在线观| 亚洲AV第一成肉网| 国产日韩AV免费无码一区二区三区| 黄色一级毛片免费| a级成人免费毛片完整版| 手机看黄av免费网址|