Flex前端与Java服务端交互,反射机制挑大旗

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

 

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

 

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

 

            

remoting-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<service id="remoting-service" 

    class="flex.messaging.services.RemotingService">

 

    <adapters>

<!--Java对象 的适配器-->

        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>

    </adapters>

 

    <default-channels>

        <channel ref="my-amf"/>

    </default-channels>

    

    <destination id="userService">

            <properties>

                    <source>com.java.Service.UserService</source>

            </properties>

    </destination>

 

</service>


 

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

 

<fx:Declarations>

<mx:RemoteObject destination="userService" result="processResult(event)"

 id="us" fault="Alert.show(event.fault.message.toString())"

 endpoint="http://localhost:8080/BlazeDS_Java_Flex/messagebroker/amf">

</mx:RemoteObject>

</fx:Declarations>


 

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

 

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

 

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

 

       创建一个ActionScript类,如下

package com.flex.vo
{
	[Bindable]
	[RemoteClass(alias="com.java.entity.Users")]
	public class Users
	{
	           //注意,需要写好构造函数
		public function Users()
		{
		}
		
		private var _name:String;
		private var _password:String;
		
		public function get name():String
		{
			return _name;
		}

		public function set name(value:String):void
		{
			_name = value;
		}

		public function get password():String
		{
			return _password;
		}

		public function set password(value:String):void
		{
			_password = value;
		}

	}

}


 

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

 

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

 

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

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一道光_

1分也是爱,鼓励鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值