<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0
        《使用XFire+Spring構(gòu)建Web Service(一)——helloWorld篇》文中我們通過(guò)一個(gè)簡(jiǎn)單的XFire+Spring實(shí)例,該實(shí)例的sayHelloWorld()方法通過(guò)傳入一個(gè)字符串參數(shù)來(lái)返回一個(gè)字符串,而實(shí)際的應(yīng)用過(guò)程中,遇到的情況比這個(gè)要復(fù)雜得多,例如,傳入?yún)?shù)是對(duì)象、返回自定義對(duì)象、返回?cái)?shù)組、返回列表。下面讓我們?cè)诖宋闹袑?duì)XFire+Spring進(jìn)行更深層的探討吧。

    一.             本例概述

    在本例中,我們將在業(yè)務(wù)邏輯類(lèi)是一個(gè)用戶(hù)的業(yè)務(wù)邏輯類(lèi),包括創(chuàng)建用戶(hù)、獲取單個(gè)用戶(hù)、獲取用戶(hù)數(shù)組、獲取用戶(hù)列表四個(gè)方法,因該文講的是XFire+Spring構(gòu)建webservice,所以在該例中我們并不涉及具體的數(shù)據(jù)庫(kù)操作,而只是提供模擬實(shí)現(xiàn)。方法描述如下:

    1) 創(chuàng)建用戶(hù)方法:createUser(User user)

    通過(guò)傳入User對(duì)象作為參數(shù)來(lái)才創(chuàng)建用戶(hù);

    2) 通過(guò)用戶(hù)名獲取用戶(hù)信息方法:getUser(String loginName)

    根據(jù)用戶(hù)名獲取某用戶(hù)對(duì)象,該方法返回的是一個(gè)User對(duì)象;

    3) 返回所有用戶(hù)的數(shù)組方法:getUserArray()

    返回為User數(shù)組;

    4) 返回所有用戶(hù)的列表的方法:getUserList()

    返回為List對(duì)象,放入的對(duì)象為User類(lèi)型。

    二.             數(shù)據(jù)對(duì)象User.java

    在上篇的例子中,src/webservice目錄下新建example2目錄,并在example2目錄下建立User.java文件,下面看看數(shù)據(jù)對(duì)象User.java的內(nèi)容,代碼如下:

    package webservice.example2;

    import java.util.Date;

    /**
     *用戶(hù)對(duì)象.  
     *
    @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     *@version1.0
     *Creationdate:2007-9-28-上午10:42:44
     
    */

    publicclass User 
    implements java.io.Serializable {
        privatestaticfinallongserialVersionUID 
    = 1L;

        
    /**用戶(hù)名*/
        
    private String loginName;

        
    /**用戶(hù)密碼*/
        
    private String password;

        
    /**手機(jī)號(hào)*/
        
    private String mobile;

        
    /**創(chuàng)建時(shí)間*/
        
    private Date createTime;

        
    public Date getCreateTime() {
           
    return createTime;
        }


        
    public void setCreateTime(Date createTime) {
           
    this.createTime = createTime;
        }


        
    public String getLoginName() {
           
    return loginName;
        }


        
    public void setLoginName(String loginName) {
           
    this.loginName = loginName;
        }


        
    public String getMobile() {
           
    return mobile;
        }


        
    public void setMobile(String mobile) {
           
    this.mobile = mobile;

        }


        
    public String getPassword() {
           
    return password;
        }


        
    public void setPassword(String password) {
           
    this.password = password;
        }


        
    public String toString() {
           StringBuffer sb 
    = new StringBuffer();
           sb.append(
    "loginName=" + this.loginName);
           sb.append(
    "|password=" + this.password);
           sb.append(
    "|mobile=" + this.mobile);
           sb.append(
    "|createDate=" + this.createTime);
           
    return sb.toString();
        }

    }


    三.             用戶(hù)業(yè)務(wù)類(lèi)UserService.java及其實(shí)現(xiàn)UserServiceImpl.java

    下面讓我們來(lái)看看本例的業(yè)務(wù)邏輯接口類(lèi)UserService.java的內(nèi)容:

    package webservice.example2;

    import java.util.List;

    /**
     *用戶(hù)業(yè)務(wù)類(lèi).
     *
    @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     *@version1.0
     *Creationdate:2007-9-28-上午10:37:09
     
    */

    publicinterface UserService 
    {
        
    /**
         *獲取用戶(hù)對(duì)象.
         *@paramloginName用戶(hù)名
         *@return返回用戶(hù)對(duì)象
         
    */

        
    public User getUser(String loginName);

        
    /**
         *創(chuàng)建用戶(hù).
         *@paramuser用戶(hù)對(duì)象
         *@return返回創(chuàng)建的對(duì)象的toString()方法返回的內(nèi)容
         
    */

        
    public String createUser(User user);

        
    /**
         *獲取用戶(hù)信息數(shù)組.
         *@return返回用戶(hù)信息數(shù)組
         
    */

        
    public User[] getUserArray();
        
        
    /**
         *獲得用戶(hù)信息列表.
         *@return返回用戶(hù)信息列表
         *
    @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
         *Creationdate:2007-9-28-下午12:55:37
         
    */

        
    public List<User> getUserList();
    }


    它的實(shí)現(xiàn)類(lèi)UserServiceImpl.java的內(nèi)容如下:

    package webservice.example2;

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    /**
     *用戶(hù)業(yè)務(wù)實(shí)現(xiàn)類(lèi).
     *
    @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     *@version1.0
     *Creationdate:2007-9-28-上午10:54:11
     
    */

    publicclass UserServiceImpl 
    implements UserService {
        
    /**
         *獲取用戶(hù)對(duì)象.
         *@paramloginName用戶(hù)名
         *@return返回用戶(hù)對(duì)象
         
    */

        
    public User getUser(String loginName) {
           User user 
    = new User();
           user.setLoginName(loginName);
           user.setPassword(
    "12345678");
           user.setMobile(
    "13812345678");
           user.setCreateTime(
    new Date());
           
    return user;
        }


        
    /**
         *創(chuàng)建用戶(hù).
         *@paramuser用戶(hù)對(duì)象
         *@return返回創(chuàng)建的對(duì)象的toString()方法返回的內(nèi)容
         
    */

        
    public String createUser(User user) {
           user.setCreateTime(
    new Date());
           
    return user.toString();
        }


        
    /**
         *獲取用戶(hù)信息數(shù)組.
         *@return返回用戶(hù)信息數(shù)組
         
    */

        
    public User[] getUserArray() {
           User[] userList 
    = new User[4];
           userList[
    0= getUser("阿蜜果");
           userList[
    1= getUser("sterning");
           userList[
    2= getUser("娟子");
           userList[
    3= getUser("老肖");
           
    return userList;
        }


        
    /**
         *獲得用戶(hù)信息列表.
         *@return返回用戶(hù)信息列表
         *
    @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
         *Creationdate:2007-9-28-下午12:55:37
         
    */

        
    public List<User> getUserList() {
           List
    <User> userList = new ArrayList<User>();
           userList.add(getUser(
    "阿蜜果"));
           userList.add(getUser(
    "sterning"));
           userList.add(getUser(
    "娟子"));
           userList.add(getUser(
    "老肖"));
           
    return userList;
        }

    }

    注意:getUserList()方法返回的List中需要采用泛型,不然會(huì)部署失敗。

    到此為止,我們的業(yè)務(wù)已經(jīng)完成,剩下的工作只是修改配置文件和編寫(xiě)測(cè)試類(lèi)來(lái)進(jìn)行測(cè)試。讓我們繼續(xù)往下走吧。

    四.             配置文件applicationContext.xmlxfire-servlet.xml的修改

    在本小節(jié)中,我們需要修改配置文件。首先在applicationContext.xml文件中添加用戶(hù)邏輯bean的定義,添加的代碼如下:

    <bean id="UserBean" class="webservice.example2.UserServiceImpl"/>

    接下來(lái)我們還需要修改xfire-servlet.xml文件來(lái)暴露我們的Web Service,修改后的該文件內(nèi)容如下所示:

    <entry key="/UserService.ws">                    

    <ref bean="UserService" />                

    </entry>

    并添加如下bean的定義:

    <bean id="UserService" parent="baseWebService">
           
    <!-- 業(yè)務(wù)服務(wù)bean -->
           
    <property name="serviceBean" ref="UserBean" />
           
    <!-- 業(yè)務(wù)服務(wù)bean的窄接口類(lèi) -->
           
    <property name="serviceClass" value="webservice.example2.UserService" />
        
    </bean>

       我們的Web Service已經(jīng)開(kāi)發(fā)完成,啟動(dòng)本項(xiàng)目后,可通過(guò)瀏覽器訪問(wèn):http://localhost:8080/webservice_helloworld/UserService.ws?wsdl,我們可以在瀏覽器中看到該例的WSDL信息。

    五.             Web Service測(cè)試

    在本小節(jié)我們將對(duì)上述完成的Web Service進(jìn)行測(cè)試,首先我們?cè)?/span>src目錄下的client.xml文件增加如下內(nèi)容:

    <!-- 獲取用戶(hù)信息的例子 -->
         
    <bean id="testUserWebService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
           
    <property name="serviceClass">              <value>webservice.example2.UserService</value> 
           
    </property>      
            
    <property name="wsdlDocumentUrl">         
    <value>http://localhost:8080/webservice_helloworld/UserService.ws?wsdl</value>       
            
    </property>      
         
    </bean>

         接著我們?cè)?/span>src/test目錄下建立UserServiceClientTest.java類(lèi),編寫(xiě)測(cè)試代碼如下:

    package test;

    import java.util.List;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import webservice.example2.User;
    import webservice.example2.UserService;

    /**
     * 用戶(hù)業(yè)務(wù)測(cè)試類(lèi).    
     * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     * 
    @version 1.0
     * Creation date: 2007-9-28 - 下午12:03:06
     
    */

    public class UserServiceClientTest {
        
    public static void main(String[] args) throws Exception {
            UserServiceClientTest test 
    = new UserServiceClientTest();
            test.testClient();
        }
     
        
        
    public void testClient() throws Exception {
            ApplicationContext ctx 
    = new ClassPathXmlApplicationContext(
                    
    "client.xml");    
            UserService userService 
    = (UserService) ctx.getBean("testUserWebService");
            
            
    //測(cè)試getUser()方法
            System.out.println("--------------getUser()------------");
            User user 
    = userService.getUser("阿蜜果");
            System.out.println(user);
            
            
    //測(cè)試getArray()方法
            System.out.println("--------------getUserArray()------------");
            User[] userArray 
    = userService.getUserArray();
            
    for (int i = 0; i < userArray.length; i++{
                System.out.println(
    "i=" + i + "|" + userArray[i]);
            }

            
            
    //測(cè)試createUser()方法
            System.out.println("--------------createUser()------------");
            User newUser 
    = new User();
            newUser.setLoginName(
    "離離");
            newUser.setPassword(
    "123");
            newUser.setMobile(
    "13666666666");
            String result 
    = userService.createUser(newUser);
            System.out.println(result);
            
            
    //測(cè)試getUserList()方法
            List<User> userList = userService.getUserList();
            System.out.println(
    "--------------getUserList()------------");
            
    for (int i = 0; i < userList.size(); i++{
                System.out.println(
    "i=" + i + "|" + userList.get(i));
            }

        }

    }

        大家可以運(yùn)行該類(lèi),來(lái)查看運(yùn)行效果。
        運(yùn)行有問(wèn)題的人可在此留下你們的email給我,我將這個(gè)工程發(fā)給你們。

    posted on 2007-09-28 13:50 阿蜜果 閱讀(15196) 評(píng)論(102)  編輯  收藏 所屬分類(lèi): Web Service
    評(píng)論共2頁(yè): 上一頁(yè) 1 2 


    FeedBack:
    # re: 使用XFire+Spring構(gòu)建Web Service(二)
    2007-09-28 13:57 | 千里冰封
    呵呵,不錯(cuò),女孩搞程序的本來(lái)就少,搞得這么牛的就更少了:)  回復(fù)  更多評(píng)論
      
    # re: 使用XFire+Spring構(gòu)建Web Service(二)
    2007-09-28 15:19 | Bruce Luo
    親愛(ài)的阿米果妹妹,親一個(gè)!好樣的!  回復(fù)  更多評(píng)論
      
    評(píng)論共2頁(yè): 上一頁(yè) 1 2 
    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

          生活將我們磨圓,是為了讓我們滾得更遠(yuǎn)——“圓”來(lái)如此。
          我的作品:
          玩轉(zhuǎn)Axure RP  (2015年12月出版)
          

          Power Designer系統(tǒng)分析與建模實(shí)戰(zhàn)  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    相冊(cè)

    關(guān)注blog

    積分與排名

    • 積分 - 2294886
    • 排名 - 3

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲熟妇中文字幕五十中出| 亚洲高清视频在线观看| 美女被免费视频网站a| 久9这里精品免费视频| 亚洲成AV人片在线观看无码| 久久综合亚洲色hezyo| 免费理论片51人人看电影| 亚洲精品伦理熟女国产一区二区 | 亚洲AV无码一区二区三区DV| 久久久久免费视频| 日本黄色免费观看| 亚洲国产美女在线观看| 999国内精品永久免费视频| 亚洲日韩精品一区二区三区| 人妻免费一区二区三区最新| 亚洲精品A在线观看| 国产福利在线观看永久免费| 国产精品色午夜免费视频| 亚洲国产精品一区二区三区在线观看| 毛片在线免费视频| 亚洲经典在线观看| 久久免费看少妇高潮V片特黄| 亚洲国产精品一区| 美女被免费网站91色| 久久精品国产亚洲一区二区| 未满十八18禁止免费无码网站 | 免费国产成人18在线观看| 亚洲人成影院在线| 91精品免费在线观看| 亚洲欧美国产精品专区久久| 亚洲第一成年免费网站| 亚洲6080yy久久无码产自国产 | 一个人看的www在线免费视频| 亚洲精品字幕在线观看| 3d动漫精品啪啪一区二区免费| 亚洲A∨无码一区二区三区| 在线成人爽a毛片免费软件| 亚洲中文字幕精品久久| 亚洲Av无码乱码在线观看性色| 中文在线免费不卡视频| 久久精品亚洲精品国产色婷|