Java Flex Servlet交互通信

自从呼叫中心项目开始,不知不觉,学习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.      }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值