Flex AMF3+JAVA的调用范例

95 篇文章 3 订阅
21 篇文章 0 订阅
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

使用RSS订阅本Blog title="RSS 2.0" type="application/rss+xml" href="http://feed.feedsky.com/softwave" rel="alternate"> Blog 订阅

    amf是Adobe独家开发的数据封装格式,Flash可以直接访问,由于它是基于二进制的数据传输,所以相对于xml SOAP、json、webService等基于字符串的数据格式,有数据体积小和效率高的特点。
    amf目前有AMF0和AMF3两种格式,flash8以前版本只支持AMF0,flash9支持两种格式。AMF3比AMF0效率更高。
    调试环境:
    1、JDK 1.5
    2、Resin 3.0
    3、Flash CS3
    4、flex-messaging-core.jar和flex-messaging-common.jar(这两个jar包文件可在Adobe的开源项目 BlazeDS中找到)

ActionScript客户端代码:
  1. /** 
  2. * ... 
  3. * @author Kinglong 
  4. * @version 0.1 
  5. */  
  6.    
  7.  package project.test {  
  8.    
  9.      import flash.display.*;  
  10.      import flash.events.*;  
  11.      import flash.net.*;  
  12.      import flash.utils.*;  
  13.        
  14.      public class TestAMF extends Sprite {  
  15.            
  16.          private var _loader:URLLoader;  
  17.            
  18.          public function TestAMF() {  
  19.              trace("TestAMF");  
  20.              _loader = new URLLoader();  
  21.              _loader.dataFormat = URLLoaderDataFormat.BINARY;  
  22.              _loader.addEventListener(Event.COMPLETE, loaderHandler);  
  23.              _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loaderHandler);  
  24.              _loader.addEventListener(IOErrorEvent.IO_ERROR, loaderHandler);  
  25.              var request:URLRequest = new URLRequest("http://localhost:8080/ajax/servlet/test");  
  26.              _loader.load(request);  
  27.          }  
  28.            
  29.          private function loaderHandler(event:*):void {  
  30.              trace(event.type);  
  31.              switch(event.type) {  
  32.                  case Event.COMPLETE:  
  33.                      var start:Number=getTimer();   
  34.                      var byte:ByteArray = _loader.data as ByteArray;  
  35.                      byte.uncompress();  
  36.                      var obj:Object = byte.readObject();  
  37.                      var end:Number=getTimer();   
  38.                      trace("耗时:" + (end - start) + "毫秒");  
  39.                      trace(obj.fullName);  
  40.                      break;  
  41.              }  
  42.          }  
  43.      }  
  44.        
  45.  }


Java服务端代码
  1.  import java.io.*;  
  2.  import java.util.HashMap;  
  3.  import java.util.Map;  
  4.    
  5.  import java.util.zip.*;  
  6.    
  7.  import javax.servlet.ServletException;  
  8.  import javax.servlet.http.HttpServlet;  
  9.  import javax.servlet.http.HttpServletRequest;  
  10.  import javax.servlet.http.HttpServletResponse;  
  11.    
  12.  import flex.messaging.io.*;  
  13.  import flex.messaging.io.amf.*;  
  14.    
  15.  public class TestServlet extends HttpServlet {  
  16.    
  17.      private static final long serialVersionUID = -1079073749217155506L;  
  18.        
  19.      private SerializationContext context = new SerializationContext();   
  20.    
  21.    
  22.      public void doPost(HttpServletRequest request, HttpServletResponse response) throws  
  23.      ServletException, IOException {  
  24.          response.setContentType("application/x-gzip-compressed");  
  25.          Amf3Output out = new Amf3Output(context);  
  26.          DeflaterOutputStream stream = new DeflaterOutputStream(new DataOutputStream(response.getOutputStream()));  
  27.          out.setOutputStream(stream);  
  28.            
  29.          Map map = new HashMap();          
  30.          String[] arr = "1,2,3,4,5".split(",");    
  31.            
  32.          map.put("datas", arr);  
  33.          map.put("userName","kinglong");  
  34.          map.put("fullName""金龙工作室");  
  35.          map.put("domain""klstudio.com");  
  36.            
  37.          out.writeObject(map);         
  38.          stream.finish();  
  39.            
  40.      }  
  41.        
  42.      public void doGet(HttpServletRequest request, HttpServletResponse response) throws  
  43.      ServletException, IOException {  
  44.          doPost(request, response);  
  45.      }  
  46.  }


因为AS3中的ByteArray支持zlib数据压缩和解压,所以我在服务端代码里增加数据压缩。AMF3很适合Flash和后台服务端的数据交换,我写了这个范例,希望能给大家一参考。

摘自【http://www.klstudio.com/post/168.html】

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

<script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script> <script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&callback=GRC_p%28%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D%29%3Bnew%20GRC"></script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值