RemoteObject 类使您可以访问远程应用程序服务器上的类。
Flex支持多种与服务器端的通讯方式,包括remote和socket等高级数据通讯方式。 remote采用amf(action message format)协议。amt是一种二进制格式,专用于as和服务器端通讯,比http通讯要快很多,而且支持多种数据类型,如java,.net,php等。本文将介绍如何使用Flex RemoteObject components调用服务器端java对象的方法。
Flex客户端使用RemoteObject
在mxml中声明一个RemoteObject,在as中可以通过id引用RemoteObject对象,destination是服务器端暴露的java 服务对象,Method的name是java服务对象中的方法,result是访问服务器方法的回调函数。
testHelloWorld.mxml代码
- <?xml version=”1.0″ encoding=”utf-8″?>
- <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”>
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import mx.rpc.events.ResultEvent;
- [Bindable]
- private var memberResult:Object;
- private function say():void{
- var user:User=new User();
- user.setName(n.text);
- user.setId(”testId”);
- ro.sayHello(user);
- }
- public function handleResult(event:ResultEvent):void {
- target.text=event.result as String;
- }
- ]]>
- </mx:Script>
- <mx:RemoteObject id=”ro” destination=”HelloWorld”>
- <mx:method name=” sayHello ” result=” handleResult (event)”/>
- <mx:RemoteObject>
- <mx:TextInput id=”n” change=”say()”/>
- <mx:Label id=”target”/>
- </mx:Application>
User.as代码
- package {
- [RemoteClass(alias="cn.com. remote.test.User")]
- public class User {
- public var name:String;
- public var id:String;
- public function getName():String{
- return name;
- }
- public function setName(name:String ):void {
- this.name = name;
- }
- public function getId():String {
- return id;
- }
- public function setId(id:String):void {
- this.id = id;
- }
- }
- }
定义服务器端java对象
HelloWorld.java代码
- package cn.com. remote.test;
- public class HelloWorld {
- public String sayHello(String name){
- System.out.println(”**********sayHello(String name) in*************”);
- System.out.println(”hello,”+name);
- return “hello,”+name;
- }
- public User getUser(String name){
- System.out.println(”**********getUser in*************”);
- return new User(name,name+”Id”);
- }
- }
User.java代码
- package cn.com. remote.test;
- public class User {
- private String name;
- private String id;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- }