posts - 15,comments - 65,trackbacks - 0
                   嘿,先向大家宣傳下我站啊,http://www.lovestblog.cn/,這是我的個(gè)人博客,希望大家常來(lái)我博客坐坐呢,相信大家也會(huì)有所收益的,不過(guò)我也不會(huì)放棄javaeye的,我也會(huì)一直在這里寫(xiě)東西的。 (轉(zhuǎn)載的請(qǐng)不要?jiǎng)h除該段,謝謝合作)
                   前幾天有網(wǎng)友要我寫(xiě)一篇關(guān)于flex與數(shù)據(jù)庫(kù)交互的例子,一直由于時(shí)間緊沒(méi)能寫(xiě),今天晚上特地花點(diǎn)時(shí)間寫(xiě)了個(gè)例子,希望能給大家一點(diǎn)幫助,其實(shí)flex與數(shù)據(jù)庫(kù)交互很簡(jiǎn)單的,我主要是通過(guò)java與數(shù)據(jù)庫(kù)交互讀取數(shù)據(jù),然后flex和java進(jìn)行交互,把java讀取的數(shù)據(jù)在flex前端顯示出來(lái),好了,說(shuō)了一堆廢話,下面代碼說(shuō)明問(wèn)題。
                  對(duì)于建立一個(gè)flex web應(yīng)用的步驟我就不多說(shuō)了哈。
                  首先要求大家到數(shù)據(jù)庫(kù)建立一個(gè)數(shù)據(jù)庫(kù),在我這例子中數(shù)據(jù)庫(kù)名為userDb,建立一個(gè)表userInfo,里面設(shè)置兩個(gè)字段一個(gè)為id,一個(gè)為name。
                  第二,創(chuàng)建以下java代碼在src目錄下
          User.java   
          package org.rjb.java;   
            
          public class User {   
              
          private String name;   
            
              
          public String getName() {   
                  
          return name;   
              }
             
              
          public void setName(String name){   
                  
          this.name=name;   
              }
             
          }
             
            
          UserDao.java   
          package org.rjb.java;   
            
          import java.sql.Connection;   
          import java.sql.DriverManager;   
          import java.sql.ResultSet;   
          import java.sql.SQLException;   
          import java.sql.Statement;   
          import java.util.ArrayList;   
          import java.util.List;   
            
          public class UserDao {   
                 
              
          public static Connection getConnection(){   
                  Connection c
          =null;   
                  
          try{   
                      String driver
          ="com.mysql.jdbc.Driver";   
                      String url
          ="jdbc:mysql://localhost:3306/userDb";   
                      String username
          ="root";   
                      String password
          ="1235";   
                      Class.forName(driver);   
                      c
          =DriverManager.getConnection(url,username,password);    
                  }
          catch(Exception e){   
                      System.out.println(e.getMessage());   
                  }
             
                  
          return c;   
              }
             
              
          public List getAllUser()throws SQLException{   
                  Connection c
          =getConnection();   
                  Statement st
          =c.createStatement();   
                  ResultSet rs
          =st.executeQuery("select * from UserInfo");   
                  ArrayList userList
          =new ArrayList<User>();   
                  
          while(rs.next()){   
                      User u
          =new User();   
                      u.setName(rs.getString(
          "name"));   
                      userList.add(u);   
                  }
             
                  
          return userList;   
              }
             
            
          }
            
          以上是java端的全部代碼了,下面是flex端的代碼。
              第三,創(chuàng)建以下代碼在flex_src下:
          User.as   
          package org.rjb.flex   
          {   
              [RemoteClass(alias
          ="org.rjb.java.User")]   
              
          public class User   
              
          {   
                  
          private var _name:String;   
                  
          public function User()   
                  
          {   
                  }
             
                  
          public function get name():String{   
                      
          return this._name;   
                  }
             
                  
          public function set name(name:String):void{   
                      
          this._name=name;   
                  }
             
              }
             
          }
            

          User.as
          package org.rjb.flex
          {
              [RemoteClass(alias
          ="org.rjb.java.User")]
              
          public class User
              
          {
                  
          private var _name:String;
                  
          public function User()
                  
          {
                  }

                  
          public function get name():String{
                      
          return this._name;
                  }

                  
          public function set name(name:String):void{
                      
          this._name=name;
                  }

              }

          }

          接下來(lái)是mxml代碼,也就是我們真正展示我們數(shù)據(jù)的界面
          FlexWithJava.mxml   
          <?xml version="1.0" encoding="utf-8"?>   
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">   
              
          <mx:RemoteObject id="ud" destination="UserDao" result="onResult(event)" fault="onFault()" />   
              
          <mx:DataGrid dataProvider="{users}">   
                  
          <mx:columns>   
                      
          <mx:DataGridColumn dataField="name" headerText="name" />   
                  
          </mx:columns>   
              
          </mx:DataGrid>   
              
          <mx:Label id="info" />   
              
          <mx:Button label="click" click="clickFun()" />   
              
          <mx:Script>   
                  
          <![CDATA[   
                      import mx.collections.ArrayCollection;   
                      import mx.rpc.events.ResultEvent;   
                      [Bindable]   
                      public var users:ArrayCollection=new ArrayCollection();   
                      public function clickFun():void{   
                          ud.getAllUser();   
                      }   
                      public function onResult(event:ResultEvent):void{   
                          users=ArrayCollection(event.result);   
                          info.text="get data successfully";   
                      }   
                      public function onFault():void{   
                          info.text="Error";   
                      }   
                  
          ]]>   
              
          </mx:Script>   
          </mx:Application>  
                第四,配置remoting-config.xml,在里面加上如下配置文件:
          <destination id="UserDao">   
               
          <properties>   
                    
          <source>org.rjb.java.UserDao</source>   
               
          </properties>   
          </destination>  
               ok,就這么簡(jiǎn)單,呵呵,趕快運(yùn)行,看看效果呢。
          posted on 2009-04-11 17:52 你假笨 閱讀(7785) 評(píng)論(14)  編輯  收藏

          FeedBack:
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2009-04-12 19:03 | 左洸
          你用的也是 jspkj.com 的主機(jī)啊,我去看了好多次了,價(jià)錢道挺公道,一直猶豫。另外,我現(xiàn)在還在猶豫用php 還是 java ,java感覺(jué)還是太重型了。

          對(duì)了,你準(zhǔn)備不準(zhǔn)備備案啊,這也是個(gè)讓人頭疼的問(wèn)題啊  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取[未登錄](méi)
          2009-04-12 20:00 | 你假笨
          @左洸
          嗯,呵呵,那空間站還不錯(cuò)哈,服務(wù)態(tài)度也好,可以嘗試下呢。我有時(shí)間了也學(xué)下php啊,flex和php結(jié)合得好像更好些
            回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2009-04-27 15:28 | ithanshui
          博主你好:
          我是初學(xué)flex的,我將代碼整理后,運(yùn)行的時(shí)候點(diǎn)擊按鈕DataGrid里面的數(shù)據(jù)為什么顯示不出來(lái)?  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2009-07-10 00:06 | hcg8827
          bloger我不知道你最后的顯示是怎么顯示出來(lái)的 但是我可以說(shuō)這段代碼是有問(wèn)題的
          在as的 ao和java jo對(duì)應(yīng)中 在flex的command你是取一個(gè)arraycollection 作為dataprovider但是 作為一個(gè)通用容器 arraycollection返回的應(yīng)該是一個(gè)object
          而不是as的user對(duì)象 這中間有一個(gè)轉(zhuǎn)換過(guò)程 而flex是不可能自動(dòng)幫你轉(zhuǎn)化的 因?yàn)閛bject在外部開(kāi)起來(lái)是一樣的要自動(dòng)轉(zhuǎn)化的話只有通過(guò)instance找到它的確切類型或者是要求在JAVA那邊中表述清楚發(fā)過(guò)來(lái)的list中 包含的是那個(gè)類的對(duì)象 但是這樣很不現(xiàn)實(shí)
          也就是說(shuō) 從arraycollection里面取出來(lái)的肯定是object對(duì)象 而obejct對(duì)象肯定是無(wú)法取得name這些字段的 所以 我不知道你是怎么獲得最后的顯示的 但是很多人都顯示不出來(lái) 改一下才能正確顯示
            回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2009-07-10 14:03 | nijiaben
          @hcg8827
          呵呵,你之所以沒(méi)有顯示出來(lái)最大的可能是你配置上出錯(cuò)了,你點(diǎn)擊Project->Properties->Flex Server,如果你的ROOT RUL顯示類似為http://localhost:8080/FlexJava以及Context" target="_new" rel="nofollow">http://localhost:8080/FlexJava以及Context root為/WebRoot的話,那請(qǐng)你改成ROOT RUL顯示為http://localhost:8080,而Context root的值改為/FlexJava,這是很多初學(xué)者最不注意的地方,你可以改了再試試  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2009-12-09 10:23 | jj
          能不能介紹下項(xiàng)目環(huán)境,我知道你這東西是運(yùn)行在java項(xiàng)目里面的還是單獨(dú)的flex項(xiàng)目,再說(shuō)了,remoting-config.xml,這個(gè)是flex內(nèi)置的配置,還是給什么組件用的,你讓我一個(gè)做java的看,我就覺(jué)得你這東西跑不起來(lái),我連項(xiàng)目放什么地方我都不知道。發(fā)出來(lái)了就試試講清楚,讓一個(gè)一次都沒(méi)做過(guò)flex的人可以依次運(yùn)行,這才是高度  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2010-05-12 17:30 | yuqi

          @nijiaben
          我按你的說(shuō)的路徑進(jìn)去了,但是他不讓我配置,全部都是灰的!

          請(qǐng)問(wèn)是什么原因?
            回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取[未登錄](méi)
          2010-08-19 10:23 | ddd
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2011-08-10 23:16 | 不行
          不行。。。。。。  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取[未登錄](méi)
          2011-08-16 10:42 | wl

          按照上面 的方法做了之后 有一個(gè)錯(cuò)誤 怎么改
          Unexpected text '  
              ' found in 'destination' from file: remoting-config.xml.  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2013-05-14 11:59 | liuxinye
          你好,F(xiàn)lex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)寫(xiě)入,搞不懂,不知道怎么回事  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取[未登錄](méi)
          2013-09-12 18:15 | Eric
          按照以上代碼,最終點(diǎn)擊獲取數(shù)據(jù)按鈕后,直接error。請(qǐng)問(wèn)是什么原因  回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2013-12-30 10:07 |
          我也是這樣子的問(wèn)題,不知最后是怎樣解決的?@wl
            回復(fù)  更多評(píng)論
            
          # re: Flex與java交互之?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)讀取
          2013-12-30 10:11 |
          剛問(wèn)完,刪掉remoting-config文件的adapter-definition元素的default="true" />里面的空格就好了@斦  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 信阳市| 安塞县| 新疆| 海淀区| 新密市| 宝清县| 丰镇市| 阳西县| 调兵山市| 宜君县| 东辽县| 涡阳县| 宁蒗| 武城县| 遂宁市| 西和县| 巴楚县| 怀柔区| SHOW| 哈巴河县| 新乐市| 宁明县| 台前县| 宝清县| 河曲县| 思茅市| 徐闻县| 涿鹿县| 昂仁县| 抚松县| 上思县| 林西县| 确山县| 昭通市| 瑞安市| 资源县| 丰都县| 敦煌市| 海兴县| 黔东| 大港区|