java flex servlet 通讯

自从呼叫中心项目开始,不知不觉,学习Flex已经十天有余了!现在已经基本进入状态,今天本人在此班门弄斧,发一个利用Flex与后台的 Servlet进行通讯的例子,希望对一些刚学习Flex的新手有所帮助。为了搞清楚Flex是如何与后台进行通讯,本人在刚开始学Flex前五天可以说 是碌碌无为,今天发这个帖子的目的就是为了让后面的兄弟少走弯路。

交互原理:三个字母---------XML,客户端接受从服务器端发送过来的XML数据。

本例工作流程:客户端很简单就一个DataGrid组件,用来显示服务器端传送过来的数据。对应的mxml文件如下:

xml 代码

<?xml version="1.0" encoding="UTF-8"?>      
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">      
    <mx:Model source="http://localhost:8080/flex/first" id="model">      
               
    </mx:Model>      
    <mx:Panel title="用户信息" width="776" height="281" fontSize="18">      
        <mx:DataGrid dataProvider="{model.user}" width="748" height="231">      
            <mx:columns>      
                <mx:DataGridColumn dataField="name" headerText="用户">      
                           
                </mx:DataGridColumn>      
                <mx:DataGridColumn dataField="pwd" headerText="密码">      
                           
                </mx:DataGridColumn>      
                <mx:DataGridColumn dataField="school" headerText="现在学校">      
                           
                </mx:DataGridColumn>      
            </mx:columns>      
        </mx:DataGrid>      
    </mx:Panel>      
</mx:Application>     

 

在此需要注意<mx:Model>标签,source属性指定的是一个servlet映射,这个servlet的作用是利用response向客户端写入XML。

读取数据库数据,生成XML文件由两个类组成,一个为FirstServlet.java,一个为XML.java,其中前者就是一个普通的servlet,用来写XML文件,后者专门用来生成XML文件,由Java XML API操作完成。废话少说,先看看代码

FirstServlet代码摘要:

java 代码

try {       
             xml.init() ;       
             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ;       
            //*********建立数据库 名为flex*************//       
             String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=flex" ;       
            //**********换上你自己的用户名和密码信息************//       
             con = DriverManager.getConnection(url, "sa", "135780") ;       
             stmt = con.createStatement() ;       
            //**********里面建表名为USERS   具体SQL语句见附件下载**********//       
             result = stmt.executeQuery("select * from USERS") ;       
         } catch(Exception e) {       
             e.printStackTrace() ;       
         }       
        //重要:设置响应格式为XML格式       
         response.setContentType("text/xml") ;       
         response.setCharacterEncoding("UTF-8") ;       
         PrintWriter out = response.getWriter() ;    

  
以上为servlet连接数据库并设置响应格式的代码,下面是写XML文件的关键代码:

java 代码

while(result.next()) {       
                 String[] strs = new String[3] ;       
                 strs[0] = result.getString("name") ;       
                 strs[1] = result.getString("pwd") ;       
                 strs[2] = result.getString("school") ;       
                //*****创建XMLdocument*******//       
                 xml.create(strs) ;       
             }       
             result.close() ;       
             stmt.close() ;       
             con.close() ;       
            //*******写XML文件到客户端********//       
             xml.output(out) ;     

 

其中末行的xml是XML.java的一个实例,XML的一些重要方法如下:

java 代码

/**  
      * 把XML文档写入到输出流  
      *   
      * @param out  
      *        ----指定的输出流  
      * @throws Exception  
      *   
      * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司  
      */     
    public void output(Writer writer) throws Exception{      
         Transformer trans = TransformerFactory.newInstance().newTransformer() ;      
         trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8") ;      
         Source source = new DOMSource(document) ;      
         Result result = new StreamResult(writer) ;      
         trans.transform(source, result) ;      
         writer.flush() ;      
         writer.close() ;      
     }    

while(result.next()) {       
                 String[] strs = new String[3] ;       
                 strs[0] = result.getString("name") ;       
                 strs[1] = result.getString("pwd") ;       
                 strs[2] = result.getString("school") ;       
                //*****创建XMLdocument*******//       
                 xml.create(strs) ;       
             }       
             result.close() ;       
             stmt.close() ;       
             con.close() ;       
            //*******写XML文件到客户端********//       
             xml.output(out) ;     

 
java 代码

 

/**   

      * 创建XML文档   
      *    
      * @param    strs    
      *        -------传送过来的姓名和密码和学校参数   
      *    
      * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司   
      */      
    public void create(String[] strs) {       
        //******第一级子节点******//       
         Element first = document.createElement("user") ;       
         root.appendChild(first) ;       
               
        for(int i=0; i<strs.length; i++) {       
            if(i==0) {       
                //*******第二级子节点******//       
                 Element name = document.createElement("name") ;       
                 name.appendChild(document.createTextNode(strs[i])) ;       
                 first.appendChild(name) ;       
             } if(i==1) {       
                 Element pwd = document.createElement("pwd") ;       
                 pwd.appendChild(document.createTextNode(strs[i])) ;       
                 first.appendChild(pwd) ;       
             } if(i==2) {       
                 Element school = document.createElement("school") ;       
                 school.appendChild(document.createTextNode(strs[i])) ;       
                 first.appendChild(school) ;       
             }       
         }       
     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值