歡迎您光臨本站 註冊首頁

Flex與Java Servlet交互實例

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

  不知不覺,學習Flex已經二十天有餘了!現在已經基本進入狀態,今天本人在此班門弄斧,自己寫一個用Flex與後台的Servlet進行通訊的例子,希望對一些剛學習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. </< SPAN>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. </< SPAN>mx:DataGridColumn>

  12. <mx:DataGridColumn dataField="pwd" headerText="密碼">

  13.

  14. </< SPAN>mx:DataGridColumn>

  15. <mx:DataGridColumn dataField="school" headerText="現在學校">

  16.

  17. </< SPAN>mx:DataGridColumn>

  18. </< SPAN>mx:columns>

  19. </< SPAN>mx:DataGrid>

  20. </< SPAN>mx:Panel>

  21. </< SPAN>mx:Application>

  在此需要注意標籤,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 ut = 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<>

  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. }

  其實說到底,這個例子沒有什麼神秘的,只要記住,XML是Flex與後台進行數據交換的媒介,無論後台數據怎麼千變萬化,出口就有這一個.如果試驗,可以先從簡單開始,不涉及查詢資料庫,直接在servlet寫出XML.


[火星人 ] Flex與Java Servlet交互實例已經有487次圍觀

http://coctec.com/docs/java/show-post-60151.html