Java Flex Servlet互動通訊

來源:互聯網
上載者:User

自從話務中心項目開始,不知不覺,學習Flex已經十天有餘了!現在已經基本進入狀態,今天本人在此班門弄斧,發一個利用Flex與背景Servlet進行通訊的例子,希望對一些剛學習Flex的新手有所協助。為了搞清楚Flex是如何與後台進行通訊,本人在剛開始學Flex前五天可以說是碌碌無為,今天發這個文章的目的就是為了讓後面的兄弟少走彎路。

互動原理:三個字母---------XML,用戶端接受從伺服器端發送過來的XML資料。

本例工作流程:用戶端很簡單就一個DataGrid組件,用來顯示伺服器端傳送過來的資料。對應的mxml檔案如下:

xml 代碼

  1. <?xml version="1.0" encoding="UTF-8"?>     
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">     
  3.     <mx:Model source="http://localhost:8080/flex/first" id="model">     
  4.               
  5.     </mx:Model>     
  6.     <mx:Panel title="使用者資訊" width="776" height="281" fontSize="18">     
  7.         <mx:DataGrid dataProvider="{model.user}" width="748" height="231">     
  8.             <mx:columns>     
  9.                 <mx:DataGridColumn dataField="name" headerText="使用者">     
  10.                           
  11.                 </mx:DataGridColumn>     
  12.                 <mx:DataGridColumn dataField="pwd" headerText="密碼">     
  13.                           
  14.                 </mx:DataGridColumn>     
  15.                 <mx:DataGridColumn dataField="school" headerText="現在學校">     
  16.                           
  17.                 </mx:DataGridColumn>     
  18.             </mx:columns>     
  19.         </mx:DataGrid>     
  20.     </mx:Panel>     
  21. </mx:Application>    

在此需要注意<mx:Model>標籤,source屬性指定的是一個servlet映射,這個servlet的作用是利用response向用戶端寫入XML。

讀取資料庫資料,產生XML檔案由兩個類組成,一個為FirstServlet.java,一個為XML.java,其中前者就是一個普通的servlet,用來寫XML檔案,後者專門用來產生XML檔案,由Java XML API操作完成。廢話少說,先看看代碼

FirstServlet代碼摘要:

java 代碼

  1. try {      
  2.              xml.init() ;      
  3.              Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ;      
  4.             //*********建立資料庫 名為flex*************//      
  5.              String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=flex" ;      
  6.             //**********換上你自己的使用者名稱和密碼資訊************//      
  7.              con = DriverManager.getConnection(url, "sa", "135780") ;      
  8.              stmt = con.createStatement() ;      
  9.             //**********裡面建表名為USERS   具體SQL語句見附件下載**********//      
  10.              result = stmt.executeQuery("select * from USERS") ;      
  11.          } catch(Exception e) {      
  12.              e.printStackTrace() ;      
  13.          }      
  14.         //重要:設定響應格式為XML格式      
  15.          response.setContentType("text/xml") ;      
  16.          response.setCharacterEncoding("UTF-8") ;      
  17.          PrintWriter out = response.getWriter() ;    

以上為servlet串連資料庫並設定響應格式的代碼,下面是寫XML檔案的關鍵代碼:

java 代碼

  1. while(result.next()) {      
  2.                  String[] strs = new String[3] ;      
  3.                  strs[0] = result.getString("name") ;      
  4.                  strs[1] = result.getString("pwd") ;      
  5.                  strs[2] = result.getString("school") ;      
  6.                 //*****建立XMLdocument*******//      
  7.                  xml.create(strs) ;      
  8.              }      
  9.              result.close() ;      
  10.              stmt.close() ;      
  11.              con.close() ;      
  12.             //*******寫XML檔案到用戶端********//      
  13.              xml.output(out) ;    

其中末行的xml是XML.java的一個執行個體,XML的一些重要方法如下:

java 代碼

  1. /**  
  2.       * 把XML文檔寫入到輸出資料流  
  3.       *   
  4.       * @param out  
  5.       *        ----指定的輸出資料流  
  6.       * @throws Exception  
  7.       *   
  8.       * 編寫者:王景輝 湖南農業大學&湖南愛瑞潔投資管理公司  
  9.       */     
  10.     public void output(Writer writer) throws Exception{      
  11.          Transformer trans = TransformerFactory.newInstance().newTransformer() ;      
  12.          trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8") ;      
  13.          Source source = new DOMSource(document) ;      
  14.          Result result = new StreamResult(writer) ;      
  15.          trans.transform(source, result) ;      
  16.          writer.flush() ;      
  17.          writer.close() ;      
  18.      }    

java 代碼

  1. /**  
  2.       * 建立XML文檔  
  3.       *   
  4.       * @param    strs   
  5.       *        -------傳送過來的姓名和密碼和學校參數  
  6.       *   
  7.       * 編寫者:王景輝 湖南農業大學&湖南愛瑞潔投資管理公司  
  8.       */     
  9.     public void create(String[] strs) {      
  10.         //******第一級子節點******//      
  11.          Element first = document.createElement("user") ;      
  12.          root.appendChild(first) ;      
  13.               
  14.         for(int i=0; i<strs.length; i++) {      
  15.             if(i==0) {      
  16.                 //*******第二級子節點******//      
  17.                  Element name = document.createElement("name") ;      
  18.                  name.appendChild(document.createTextNode(strs[i])) ;      
  19.                  first.appendChild(name) ;      
  20.              } if(i==1) {      
  21.                  Element pwd = document.createElement("pwd") ;      
  22.                  pwd.appendChild(document.createTextNode(strs[i])) ;      
  23.                  first.appendChild(pwd) ;      
  24.              } if(i==2) {      
  25.                  Element school = document.createElement("school") ;      
  26.                  school.appendChild(document.createTextNode(strs[i])) ;      
  27.                  first.appendChild(school) ;      
  28.              }      
  29.          }      
  30.      }   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.