Flex AMF3+JAVA的调用范例

系统 1860 0
<!--新Google 468x15 横链接单元开始--> <script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x15 横链接单元 */ google_ad_slot = "5785741422"; google_ad_width = 468; google_ad_height = 15; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468x15 横链接单元结束-->

<!-- Feedsky FEED发布代码开始 --> 使用RSS订阅本Blog <!-- FEED自动发现标记开始 --> <link title="RSS 2.0" type="application/rss+xml" href="http://feed.feedsky.com/softwave" rel="alternate"> <!-- FEED自动发现标记结束 --> 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. *@authorKinglong
  4. *@version0.1
  5. */
  6. packageproject.test{
  7. importflash.display.*;
  8. importflash.events.*;
  9. importflash.net.*;
  10. importflash.utils.*;
  11. publicclassTestAMFextendsSprite{
  12. privatevar_loader:URLLoader;
  13. publicfunctionTestAMF(){
  14. trace( "TestAMF" );
  15. _loader=newURLLoader();
  16. _loader.dataFormat=URLLoaderDataFormat.BINARY;
  17. _loader.addEventListener( Event .COMPLETE,loaderHandler);
  18. _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,loaderHandler);
  19. _loader.addEventListener(IOErrorEvent.IO_ERROR,loaderHandler);
  20. varrequest:URLRequest=newURLRequest( "http://localhost:8080/ajax/servlet/test" );
  21. _loader.load(request);
  22. }
  23. privatefunctionloaderHandler(event:*):void{
  24. trace(event.type);
  25. switch(event.type){
  26. case Event .COMPLETE:
  27. varstart:Number=getTimer();
  28. varbyte:ByteArray=_loader.dataasByteArray;
  29. byte.uncompress();
  30. varobj: Object =byte.readObject();
  31. varend:Number=getTimer();
  32. trace( "耗时:" +(end-start)+ "毫秒" );
  33. trace(obj.fullName);
  34. break;
  35. }
  36. }
  37. }
  38. }


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


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

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

<!--Google 468*60横幅广告开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "image"; //2007-07-26: CSDN google_ad_channel = "6063905817"; google_color_border = "6699CC"; google_color_bg = "E6E6E6"; google_color_link = "FFFFFF"; google_color_text = "333333"; google_color_url = "AECCEB"; google_ui_features = "rc:6"; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--Google 468*60横幅广告结束--><!--新Google 468*60横幅广告开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x60, 创建于 08-8-6 */ google_ad_slot = "7368701459"; google_ad_width = 468; google_ad_height = 60; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468*60横幅广告结束-->

<!-- Google Reader shared发布代码开始 --><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&amp;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><!-- Google Reader shared发布代码结束 -->

Flex AMF3+JAVA的调用范例


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论