锘??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕精品亚洲无线码二区,亚洲天堂一区二区三区,亚洲色最新高清av网站http://www.tkk7.com/kangdy/鎴戝氨鍍廇K47閲屾墦鍑哄幓鐨勫瓙寮廣傜洰鏍嘥MD姘歌繙鍦ㄥ墠鏂廣傛垜鍙兘TMD鎷煎懡鍚戝墠銆?/description>zh-cnSat, 10 May 2025 14:59:55 GMTSat, 10 May 2025 14:59:55 GMT60(杞創(chuàng))鏁版嵁搴撹繛鎺?鍐呰繛鎺ワ紝澶栬繛鎺ワ紝浜ゅ弶榪炴帴)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
杞澆 
鍐呰繛鎺ワ細(xì)鎶婁袱涓〃涓暟鎹搴旂殑鏁版嵁鏌ュ嚭鏉?nbsp;
澶栬繛鎺ワ細(xì)浠ユ煇涓〃涓哄熀紜鎶婂搴旀暟鎹煡鍑烘潵錛堝叏榪炴帴鏄互澶氫釜琛ㄤ負(fù)鍩虹錛?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 
宸﹁繛鎺ワ紙宸﹁〃涓墍鏈夋暟鎹紝鍙寵〃涓搴旀暟鎹級(jí) 
璇硶錛歴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     
鍙寵繛鎺ワ紙鍙寵〃涓墍鏈夋暟鎹紝宸﹁〃涓搴旀暟鎹級(jí) 
璇硶錛歴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 
娉細(xì)access 涓笉鑳界洿鎺ヤ嬌鐢╢ull join 錛岄渶瑕佷嬌鐢╱nion all 灝嗗乏榪炴帴鍜屽彸榪炴帴鍚堝茍鍚庢墠鍙互

浜ゅ弶榪炴帴
灝嗕袱涓〃鎵鏈夎緇勫悎錛岃繛鎺ュ悗鐨勮鏁頒負(fù)涓や釜琛ㄨ鏁扮殑涔樼Н錛堢瑳鍗″皵縐級(jí)
璇硶錛屽熺敤涓婇潰鐨勪緥瀛愬簲璇ユ槸
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鐨勭浉鍏蟲(chóng)敞瑙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
杞創(chuàng)

paramsPrepareParamsStack鍦⊿truts 2.0涓槸涓涓緢濂囧鐨刬nterceptor stack錛屼互鑷充簬寰堝浜虹枒闂負(fù)浣曚笉灝嗗叾璁劇疆涓洪粯璁ょ殑interceptor stack銆俻aramsPrepareParamsStack涓昏瑙e喅浜?jiǎn)ModelDriven鍜孭reparable鐨勯厤鍚堥棶棰橈紝浠庡瓧闈笂鐞嗚В鏉ヨ錛?榪欎釜stack鐨勬嫤鎴櫒璋冪敤鐨勯『搴忎負(fù)錛氶鍏坧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鏂規(guī)硶錛宲repare鏂規(guī)硶涓細(xì)鏍規(guī)嵁鍙傛暟錛屽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鍐嶄負(fù)鐣岄潰鍑嗗鏁版嵁錛屽洜涓簆repare鏂規(guī)硶宸茬粡鍑嗗濂戒簡(jiǎn)model錛岃繖浜涙柟娉曞緢綆鍗曘傚浜巙pdate 鏂規(guī)硶錛宲repare棣栧厛浼?xì)浠庢暟鎹簱涓姞铦叉暟鎹Q岀劧鍚巔arams鎷︽埅鍣ㄤ細(xì)灝嗗弬鏁板間粯緇檓odel錛屽湪update鐩存帴鏇存柊灝卞彲浠ワ紝涓嶄細(xì)鍑虹幇鏁版嵁琚貢鏇存柊 鐨勬儏鍐點(diǎn)傝薄Hibernate妗嗘灦錛屼細(xì)鍒ゆ柇鍝簺瀛楁鏇存柊浜?jiǎn)锛岀劧鍚帢q涜鏇存柊錛屾ц兘涔熶笉浼?xì)鎹熷け銆?br /> 閫氳繃paramsPrepareParamsStack鍙互璁╂祦紼嬫洿鏄庣‘錛屼唬鐮佹洿綆媧侊紝涔熸洿鍒╀簬澶у鐨勪氦嫻併?/p>


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

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

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())
            {
                
//  涓嬮潰浼?xì)鋴社敤setValue鏂規(guī)硶淇敼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綾葷殑婧愪唬鐮侊細(xì)

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爜濡傦細(xì)

<?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>鍏冪礌鎺夋崲涓涓嬶級(jí)錛屽氨鍙互閫氳繃鍚屽悕鑳淎ction閰嶇疆鍙傛暟鎴栬姹傚弬鏁?鏉ュ共棰勬渶緇堢┒杈撳嚭緇撴灉浜?jiǎn)銆?


AK47 2011-11-11 17:21 鍙戣〃璇勮
]]>
(杞創(chuàng))Struts2鏁版嵁浼犺緭鐨勮儗鍚庢満鍒訛細(xì)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鏁版嵁浼犺緭鐨勮儗鍚庢満鍒訛細(xì)ValueStack錛堝兼爤錛夊師鏂囧湴鍧 錛歨ttp://blog.csdn.net/li_tengfei/article/details/6098134杞澆 1.     鏁版嵁浼犺緭鑳屽悗鏈哄埗錛歏alueStack(鍊兼爤)   鍦ㄨ繖涓鍒囩殑鑳屽悗錛屾槸鍥犱負(fù)鏈変簡(jiǎn)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鍙互寰堝ソ鐨勬敼鍠勮繖涓姸鍐點(diǎn)傜綉绔檜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榪囨護(hù)鍣?->
    <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榪囨護(hù)鍣?->
    <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>鏍規(guī)嵁servlet2.3瑙勮寖filter鎵ц鏄寜鐓eb.xml閰嶇疆鐨刦ilter-mapping鍏堝悗欏哄簭榪涜鎵ц銆?br />鎵浠ヨ嚜宸遍厤緗殑榪囨護(hù)鍣ㄦ斁鍦╯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簡(jiǎn)structs2鍜屾嫤鎴櫒鐨勫師鐞嗐?br /><div><a >http://zhanghong.iteye.com/blog/452465</a><br /><fieldset><legend>杞澆</legend><span>鍦ㄦ瘡嬈″浣犵殑 Action鐨?execute()鏂規(guī)硶璇鋒眰鏃訛紝緋葷粺浼?xì)鐢熸垚涓涓?ActionInvocation瀵硅薄錛岃繖涓璞′繚瀛樹(shù)簡(jiǎn) action鍜屼綘鎵閰嶇疆鐨勬墍鏈夌殑鎷︽埅鍣ㄤ互鍙?qiáng)涓浜涚姸鎬佷俊鎭傛瘮濡備綘鐨勫簲鐢ㄤ嬌鐢ㄧ殑鏄?defaultStack錛岀郴緇熷皢浼?xì)浠ユ嫤鎴櫒鏍堥厤缃殑椤哄簭灏嗘瘡涓嫤鎴櫒鍖呰鎴愪竴涓釜 InterceptorMapping(鍖呭惈鎷︽埅鍣ㄥ悕瀛楀拰瀵瑰簲鐨勬嫤鎴櫒瀵硅薄 )緇勬垚涓涓?Iterator淇濆瓨鍦?ActionInvocation涓傚湪鎵ц ActionInvocation鐨?invoke()鏂規(guī)硶鏃朵細(xì)瀵硅繖涓?Iterator榪涜榪唬錛屾瘡嬈″彇鍑轟竴涓?InterceptorMapping錛岀劧鍚庢墽琛屽搴?Interceptor鐨?intercept(ActionInVocation inv)鏂規(guī)硶錛岃?intercept(ActionInInvocation inv)鏂規(guī)硶鍙堝寘鍚綋鍓嶇殑 ActionInInvcation瀵硅薄浣滀負(fù)鍙傛暟錛岃屽湪姣忎釜鎷︽埅鍣ㄤ腑鍙堜細(xì)璋冪敤 inv鐨?invoke()鏂規(guī)硶錛岃繖鏍峰氨浼?xì)杩涘叆涓嬩竴涓嫤鎴櫒鎵ц浜?jiǎn)锛寴q欐牱鐩村埌鏈鍚庝竴涓嫤鎴櫒鎵ц瀹岋紝鐒跺悗鎵ц Action鐨?execute()鏂規(guī)硶 (鍋囪浣犳病鏈夐厤緗闂柟娉曪紝榛樿鎵ц Action鐨?execute()鏂規(guī)硶 )銆傚湪鎵ц瀹?execute()鏂規(guī)硶鍙栧緱浜?result鍚庡張浠ョ浉鍙嶇殑欏哄簭璧板嚭鎷︽埅鍣ㄦ爤錛岃繖鏃跺彲浠ュ仛浜涙竻鐞嗗伐浣溿傛渶鍚庣郴緇熷緱鍒頒簡(jiǎn)涓涓?result錛岀劧鍚庢牴鎹?result鐨勭被鍨嬪仛榪涗竴姝ユ搷浣溿?/span></fieldset><br /><div><strong>閰嶇疆鎷︽埅鍣細(xì)</strong>Struts2涓彁渚涗簡(jiǎn)澶ч噺鐨勬嫤鎴櫒錛屽涓嫤鎴櫒鍙互緇勬垚涓涓嫤鎴櫒鏍堬紝緋葷粺閰嶇疆浜?jiǎn)涓涓粯璁ょ殑鎷︽埅鍣ㄦ爤 defaultStack錛屽叿浣撳寘鎷偅浜涙嫤鎴櫒浠ュ強(qiáng)欏哄簭鍙互鍦╯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>鎷︽埅鍣ㄦ墽琛岄『搴忥細(xì)</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涓嫤鎴櫒浼?xì)鍦ㄨh眰闂村叡浜?/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>(杞創(chuàng))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[     鎽樿: 鍘熻創(chuàng)鍦板潃錛歨ttp://blog.csdn.net/qjyong/article/details/1795833杞創(chuàng) 鏈榪戝涔?fàn)struts2錛屽叾瀹炲畠?yōu)鏄痺ebwork2.2鐨勫崌綰х増錛岀幇闄勪笂鍘熺悊鍥? 涓婂浘鏉ユ簮浜嶴truts2瀹樻柟绔欑偣錛屾槸Struts 2 鐨勬暣浣撶粨鏋勩備竴涓姹傚湪Struts2妗嗘灦涓殑澶勭悊澶ф鍒嗕負(fù)浠ヤ笅鍑犱釜姝ラ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浠ヤ笅鏄漿璐村唴瀹癸細(xì)

1 . JAVA finally瀛楀彞鐨勫紓甯鎬涪澶卞拰榪斿洖鍊艱鐩栬В鏋?/strong>
鍘熷笘鍦板潃 錛?br />http://blog.csdn.net/sureyonder/article/details/5560538
杞創(chuàng)
Java铏氭嫙鏈哄湪姣忎釜try璇彞鍧楀拰涓庡叾鐩稿叧鐨刢atch瀛愬彞鐨勭粨灝?澶勯兘浼?#8220;璋冪敤”finally瀛愬彞鐨勫瓙渚嬬▼銆傚疄闄呬笂錛宖inally瀛愬彞鍦ㄦ柟娉曞唴閮ㄧ殑琛ㄧ幇寰堣薄“寰瀷瀛愪緥紼?#8221;銆俧inally瀛愬彞姝e父緇撴潫鍚庯紞鎸囩殑鏄痜inally瀛愬彞涓渶鍚庝竴鏉¤鍙ユ甯告墽琛屽畬姣曪紝涓嶅寘鎷姏鍑哄紓甯革紝鎴栨墽琛宺eturn銆乧ontinue銆乥reak絳夋儏鍐碉紝闅跺睘浜庤繖涓猣inally瀛愬彞鐨勫井鍨嬪瓙渚嬬▼鎵ц“榪斿洖”鎿嶄綔銆傜▼搴忓湪絎竴嬈¤皟鐢ㄥ井鍨嬪瓙渚嬬▼鐨勫湴鏂圭戶緇墽琛屽悗闈㈢殑璇彞銆?br />
finally“寰瀷瀛愪緥紼?#8221;涓嶇瓑鍚屼簬鏂規(guī)硶鍑芥暟鐨勮皟鐢紝finally瀛愬彞閮芥槸鍦ㄥ悓涓涓爤鍐呮墽琛岀殑錛屽井鍨嬪瓙渚嬬▼鐨?#8220;榪斿洖”鎿嶄綔涔熶笉浼?xì)娑夊強(qiáng)鍒版栆?guī)硶閫鏍堬紝浠呬粎鏄嬌紼嬪簭璁℃暟鍣╬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璇彞鍒嗚В涓哄嚑姝ユ搷浣滐細(xì)
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箞涓婇潰鐨勭錛撴灝變笉浼?xì)鎵ц銆?br />
鍦↗DK1.6涓紝閫氳繃瀛楄妭鐮佹垜浠彲浠ョ湅鍒幫紝finally瀛愬彞浣滀負(fù)涓縐嶇壒孌婄殑catch鏉ュ疄鐜扮殑錛屼笅闈㈡槸exceptionLost()鏂規(guī)硶鐨勫紓甯歌〃錛?br />
Exception table錛?br />  from   to  銆target 銆type
   0    銆10    10   銆銆any
銆0    銆21    21   銆銆Class java/lang/Exception

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

榪欎釜鏂規(guī)硶鐨勮繑鍥炲兼槸100榪樻槸200?緇撴灉鏄?00銆?br />鍦ㄥ瓧鑺傜爜涓紝return璇彞涓嶆槸鍘熷瓙鎬ф搷浣滐紝瀹冧細(xì)鎶奼etValue()涓殑return璇彞鍒嗚В涓哄嚑姝ユ搷浣滐細(xì)
1) 鎶妚alue鍊煎瓨鍌ㄥ埌涓涓眬閮ㄥ彉閲?榪欓噷鍛藉悕涓簍emp)涓細(xì)
銆銆 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鍒版搷浣滄暟鏍堥《錛岀劧鍚庤繑鍥炲埌璋冪敤鏂規(guī)硶
 銆   iload_2銆銆// push local varaible 2 - the 100
 銆銆ireturn      // return int on top of the stack - the 100: return 100

鐢變簬return璇彞鍦ㄨ繑鍥炰箣鍓嶄細(xì)鎶婅繑鍥炲間繚瀛樺埌涓涓復(fù)鏃剁殑灞閮ㄥ彉閲忎腑錛屾墍浠ュ湪finally瀛愬彞鍐呭value閲嶆柊璧嬪間笉浼?xì)濯?jiǎng)鍝嶈繑鍥炲箋?br />
浜?jiǎn)瑙inally瀛愬彞鍐呭湪鐨勪竴浜涚煡璇嗭紝鎴戜滑鑳藉浜?jiǎn)瑙inally鑳藉鍋氫粈涔堝拰涓嶈兘澶熷仛浠涔堬紝榪欐牱浼?xì)甯姪鎴戜滑姝<嫯鋴社敤finally瀛愬彞銆?/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-
杞創(chuàng)
鍏充簬 Java 铏氭嫙鏈烘槸濡備綍緙栬瘧 finally 璇彞鍧楃殑闂錛屾湁鍏磋叮鐨勮鑰呭彲浠ュ弬鑰?span style="color: #008000;">銆?The JavaTM Virtual Machine Specification, Second Edition 銆嬩腑 7.13 鑺?Compiling finally銆傞偅閲岃緇嗕粙緇嶄簡(jiǎn) Java 铏氭嫙鏈烘槸濡備綍緙栬瘧 finally 璇彞鍧椼傚疄闄呬笂錛孞ava 铏氭嫙鏈轟細(xì)鎶?finally 璇彞鍧椾綔涓?subroutine錛堝浜庤繖涓?subroutine 涓嶇煡璇ュ浣曠炕璇戜負(fù)濂斤紝騫茶剢灝變笉緲昏瘧浜?jiǎn)锛屽厤寰椾骇鐢熸涔夊拰璇В銆傦級(jí)鐩存帴鎻掑叆鍒?try 璇彞鍧楁垨鑰?catch 璇彞鍧楃殑鎺у埗杞Щ璇彞涔嬪墠銆備絾鏄紝榪樻湁鍙﹀涓涓笉鍙拷瑙嗙殑鍥犵礌錛岄偅灝辨槸鍦ㄦ墽琛?subroutine錛堜篃灝辨槸 finally 璇彞鍧楋級(jí)涔嬪墠錛宼ry 鎴栬?catch 璇彞鍧椾細(xì)淇濈暀鍏惰繑鍥炲煎埌鏈湴鍙橀噺琛紙Local Variable Table錛変腑銆傚緟 subroutine 鎵ц瀹屾瘯涔嬪悗錛屽啀鎭㈠淇濈暀鐨勮繑鍥炲煎埌鎿嶄綔鏁版爤涓紝鐒跺悗閫氳繃 return 鎴栬?throw 璇彞灝嗗叾榪斿洖緇欒鏂規(guī)硶鐨勮皟鐢ㄨ咃紙invoker錛夈?/span>璇鋒敞鎰忥紝鍓嶆枃涓垜浠浘緇忔彁鍒拌繃 return銆乼hrow 鍜?break銆乧ontinue 鐨勫尯鍒紝瀵逛簬榪欐潯瑙勫垯錛堜繚鐣欒繑鍥炲鹼級(jí)錛屽彧閫傜敤浜?return 鍜?throw 璇彞錛屼笉閫傜敤浜?break 鍜?continue 璇彞錛屽洜涓哄畠浠牴鏈氨娌℃湁榪斿洖鍊箋?/span>


AK47 2011-11-01 16:56 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲人成免费网站| 91精品成人免费国产| 高h视频在线免费观看| 猫咪免费观看人成网站在线| 亚洲阿v天堂在线2017免费| a毛片全部免费播放| 最近中文字幕2019高清免费| 成人免费视频观看无遮挡| 免费一级毛片免费播放| 久久亚洲综合色一区二区三区| 亚洲男人电影天堂| 黄页网址在线免费观看| a级毛片免费观看视频| 日韩免费精品视频| 日韩a级毛片免费视频| 亚洲美女又黄又爽在线观看| 亚洲黄色高清视频| 日韩欧美亚洲国产精品字幕久久久 | 最新69国产成人精品免费视频动漫 | 中文字幕亚洲无线码a| 久久精品国产亚洲av水果派| 亚洲欧美日本韩国| 成在线人免费无码高潮喷水| ww在线观视频免费观看| 全亚洲最新黄色特级网站 | 91视频国产免费| 亚洲福利视频一区二区| 久久综合亚洲鲁鲁五月天| 国产精品亚洲专区无码不卡| 精品视频一区二区三区免费| 免费无码又黄又爽又刺激| 国产亚洲精品AA片在线观看不加载 | 乱淫片免费影院观看| 99re免费视频| 四虎永久免费影院| 亚洲乱亚洲乱淫久久| 阿v视频免费在线观看| 无码区日韩特区永久免费系列| 亚洲国产一成久久精品国产成人综合 | 精品无码国产污污污免费网站 | 亚洲视频在线观看地址|