`
hereson
  • 浏览: 1449837 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

AMF3+JAVA的调用范例

    博客分类:
  • flex
阅读更多

[AS3]AMF3+JAVA的调用范例


    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 中找到)

Flash客户端代码:


  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和后台服务端的数据交换,我写了这个范例,希望能给大家一参考。

分享到:
评论

相关推荐

    flex+java+mysql登录

    3. Java后台处理:在Java端,你需要创建一个对应的Servlet或Spring MVC控制器来处理来自Flex的请求。这个控制器会接收到Flex传递过来的登录信息,然后使用JDBC(Java Database Connectivity)API与MySQL数据库进行...

    Flex+blazeds+java企业门户网站完整源码

    3. 强大的后端支持:通过与Java的无缝集成,企业可以利用已有的Java技术栈,如Spring、Hibernate等,构建复杂业务逻辑。 4. 高效的开发流程:MXML和ActionScript的结合,使前后端分离开发变得容易,提高了开发效率。...

    book_flex_flex+java的留言板_Flex+Java_

    文档可能会涵盖Flex和Java的集成方法,数据通信机制(如AMF或HTTP服务),以及如何设计和操作数据库来存储和检索留言。 从标签"flex flex+java的留言板 Flex+Java"可以看出,这个项目主要关注的关键词是Flex与Java...

    flex+java入门

    3. **AMF通信**:理解AMF协议,它是BlazeDS中用于数据交换的二进制格式,能高效地传输复杂的数据结构。 4. **Java后端开发**:编写Java服务器端代码,创建服务类,定义业务逻辑。学习Spring框架来管理Bean,如果...

    Flex+ActionScript+JAVA等学习教程集合

    AMF能让Flex应用快速地调用Java方法,获取或更新服务器端数据。 3. **BlazeDS详解**:BlazeDS支持HTTP和WebSocket协议,提供MessageBroker服务,可以将Flex的Remoting和LiveCycle Data Services功能引入到Java应用...

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    远程调用服务允许 Flex 客户端直接调用服务器端的 POJOs(Plain Old Java Objects)、Spring 服务或 EJB 方法,极大地简化了分布式应用的开发。消息传递服务则支持发布/订阅模式,使得服务器端可以广播消息到多个...

    flex+java(包含工程的搭建说明、blazeds.war及源码)

    在“flex+java”项目中,BlazeDS起到了关键作用,它作为Flex和Java之间的桥梁,实现了AMF(Action Message Format)协议,使得Flex应用能够高效地与Java应用进行数据交换。BlazeDS支持HTTP和RTMP(Real-Time ...

    Flex + Zend AMF + MYSQL + WAMP 新手指南

    通过Zend AMF,Flex客户端可以轻松地调用PHP服务端的方法,实现远程过程调用(RPC)。 3. **MYSQL**: MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于Web应用程序中。它支持SQL标准,具有高性能...

    Flex+LCDS+JAVA入门

    Flex应用通过AMF协议向LCDS发送请求,LCDS接收到请求后调用Java方法,执行相关业务逻辑,再将结果以AMF格式返回给Flex。这种方式比传统的HTTP请求/响应模型更快,因为AMF是二进制的,传输效率高且数据体积小。 **...

    一个flex+java的登录实例完整版+flex框架

    这些工具提供AMF(Action Message Format)协议,允许Flex和Java之间高效地交换数据。 5. **Java后端**:在登录实例中,Java代码会处理登录请求,验证用户名和密码,如果验证成功,则返回成功消息,否则返回错误...

    java socket amf3 flash game framework

    Java Socket AMF3 Flash Game Framework 是一个专门为Flash游戏设计的后端框架,它结合了Java技术和AMF3编码,使得游戏开发者能够构建交互性强、安全可靠的Web游戏。在这个框架中,Java作为服务器端语言,提供了稳定...

    Flex3+java 图书管理系统

    在代码实现上,由于Flex3与Java的异步通信,可能采用了AMF(Action Message Format)协议,它是Flash Player和服务器之间的一种高效数据传输格式,能够快速地交换复杂的数据结构。代码注释的详尽性是项目质量的重要...

    Flex+Java完美整合框架

    它提供了实时的数据推送、远程调用服务(RPC)以及数据代理服务,使得Flex应用能够轻松地与Java服务器进行通信。 Cleartoolkit是另一个值得注意的组件,可能在描述中被提及。ClearToolkit可能是一个自定义的工具集...

    amf+gl+ffnvcodec_inc.zip

    这些库的头文件在`amf+gl+ffnvcodec_inc.zip`这个压缩包中提供,为FFmpeg的编译提供了必要的组件。 首先,OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。在FFmpeg中,OpenGL可以用来实现视频的...

    Flex + blazeds + Java入门搭建与简单应用

    2. **远程服务调用**:通过AMF,Flex客户端可以透明地调用Java后端的业务逻辑,简化了前后端交互。 3. **数据交换效率**:AMF是一种二进制格式,相比JSON或XML,数据传输更高效,减少了网络延迟。 4. **组件重用**...

    amf3协议解析的例子

    AMF3协议常用于服务器与客户端之间的实时数据交换,如在Flex或Flash应用中实现视频流、游戏数据或者Web服务调用。 在这个例子中,我们关注的是如何解析AMF3协议数据,并将其转换为树形结构以方便观察。这通常涉及到...

    flex+java+remoteObject

    完成上述步骤后,当Flex客户端调用`remoteService.javaMethod()`时,就会通过AMF协议向Java服务器发送请求,服务器接收到请求后执行`JavaServiceImpl.javaMethod`,并将返回结果反序列化回Flex客户端。 总结来说,...

    flex + java 推技术示例, 三种模式调用java后台

    通过AMF(Action Message Format)协议,BlazeDS能够高效地进行数据传输,使得Flex前端可以直接调用Java后台的远程方法,实现异步通信。 2. **LCDS (LiveCycle Data Services)**:Adobe的LCDS是BlazeDS的增强版,...

Global site tag (gtag.js) - Google Analytics