Chinaunix首页 | 论坛 | 博客
  • 博客访问: 608747
  • 博文数量: 72
  • 博客积分: 1177
  • 博客等级: 少尉
  • 技术积分: 856
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-23 23:03
文章分类

全部博文(72)

文章存档

2015年(13)

2014年(5)

2013年(7)

2012年(39)

2011年(8)

分类: 系统运维

2012-05-16 21:14:21

Flex作为RIA的一支,提供了非常丰富多彩的客户端实现,并且编写起来非常灵活.Java提供了强大的功能实现,与Flex结合也让Java开发穿上了华丽外衣。

AD:

Flex作为RIA的一支,提供了非常丰富多彩的客户端实现,并且编写起来非常灵活.Java提供了强大的功能实现,与Flex结合也让Java开发穿上了华丽外衣.

BlazeDS 是LCDS的一个衍生版 ,为Flex和Java的交互提供通信桥梁 .BlazeDS起到的作用并没有多么难理解,和SSH框架内部机制类似的是,都是提供了一种反射服务.比如,在Spring中我们使用IoC特性,这些都是依靠的Java底层的反射机制.

简单说Flex / BlazeDS /Java ,三者之间,BlazeDS提供一种映射,使得Flex前端编码能够使用服务端的Java类.

remoting-config.xml文件:

  1. <span style="font-family:Comic Sans MS;font-size:18px;">xml version="1.0" encoding="UTF-8"?> 
  2.  
  3. <service id="remoting-service"  
  4.  
  5.     class="flex.messaging.services.RemotingService"> 
  6.  
  7.   
  8.  
  9.     <adapters> 
  10.  
  11.  
  12.  
  13.         <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> 
  14.  
  15.     adapters> 
  16.  
  17.   
  18.  
  19.     <default-channels> 
  20.  
  21.         <channel ref="my-amf"/> 
  22.  
  23.     default-channels> 
  24.  
  25.      
  26.  
  27.     <destination id="userService"> 
  28.  
  29.             <properties> 
  30.  
  31.                     <source>com.java.Service.UserServicesource> 
  32.  
  33.             properties> 
  34.  
  35.     destination> 
  36.  
  37.   
  38.  
  39. service> 
  40.  
  41. span> 

在Flex前端,通过使用Flex提供的RemoteObject关键字,来获取映射中的Java对象,(关于Flex内部的一些有意思的机制,还是要好好细心学习的,这方面了解不多,就不卖弄了.)

  1. <span style="font-family:Comic Sans MS;font-size:18px;"><fx:Declarations> 
  2.  
  3. <mx:RemoteObject destination="userService" result="processResult(event)" 
  4.  
  5.  id="us" fault="Alert.show(event.fault.message.toString())" 
  6.  
  7.  endpoint=""> 
  8.  
  9. mx:RemoteObject> 
  10.  
  11. fx:Declarations> 
  12.  
  13. span> 

现在,我们的Flex前端就已经能够调用服务端的Java方法了.

在最初接触Flex与Java交互时,都是需要做一个传参示例.主要是传自定义类型参数(user:Users)和普通数据类型参数(str:String).

这里,大家要注意,我们自定义类型(Java类) ,要在Flex端进行OO编程,需要拆箱装箱,那么就需要Flex端能够识别Java类,这里就要提到Flex内部的一种映射机制.

创建一个ActionScript类,如下

  1. "font-family:Comic Sans MS;font-size:18px;">package com.flex.vo 
  2.     [Bindable] 
  3.     [RemoteClass(alias="com.java.entity.Users")] 
  4.     public class Users 
  5.     { 
  6.                //注意,需要写好构造函数 
  7.         public function Users() 
  8.         { 
  9.         } 
  10.          
  11.         private var _name:String; 
  12.         private var _password:String; 
  13.          
  14.         public function get name():String 
  15.         { 
  16.             return _name; 
  17.         } 
  18.  
  19.         public function set name(value:String):void 
  20.         { 
  21.             _name = value; 
  22.         } 
  23.  
  24.         public function get password():String 
  25.         { 
  26.             return _password; 
  27.         } 
  28.  
  29.         public function set password(value:String):void 
  30.         { 
  31.             _password = value; 
  32.         } 
  33.  
  34.     } 
  35.  
  36. } 

这样经过Flex的内部映射,在Java端和Flex端,我们有了对应的一个实体类Users类,那么我们就可以OO编程,在Flex前端,使用AS的实体类进行装箱,然后做参传递给Java类,这样就能够完成了二者之间的自定义数据类型参数的传递.

框架应用都是浮云,底层提供的反射机制是王道啊.

不管你信不信,反正我是信了.

原文链接:http://blog.csdn.net/lfsfxy9/article/details/6692854

再转自http://developer.51cto.com/art/201108/284276.htm

阅读(1615) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~