Flex使用BlazerDS实现客户端与服务端通信
2009-08-08 22:35
489 查看
对于Java端返回的各种Java类型的对象,Flex中能否有相应的数据类型来映射。这是Flex与服务器通信使用remoteObject的关键。下面我举个较为全面的例子,先看整个项目的结构,服务器端使用BlazeDs,结构为
客户端使用flex builder 3开发,结构就遵循flex builder 3标准
client.mxml为
Person.as客户端对象
HelloService.java
Person.java(服务器对象)
最后配置下blazeDs的remote-config.xml程序就可以跑了,注意程序中list map 和自定义person对象的使用
客户端使用flex builder 3开发,结构就遵循flex builder 3标准
client.mxml为
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:RemoteObject destination="helloService" id="test1"> <mx:method name="hello" result="sayHelloResult(event)"/> <mx:method name="world" result="sayWorldResult(event)"/> <mx:method name="getMap" result="getMapResult(event)"/> <mx:method name="getList" result="getListResult(event)"/> <mx:method name="getSet" result="getSetResult(event)"/> </mx:RemoteObject> <mx:HBox> <mx:Label text="输入:"/> <mx:TextInput id="inputStr"/> <mx:Button label="say hello" click="sayHello(event);"/> <mx:Button label="say world" click="sayWorld(event);"/> <mx:Button label="get map" click="test1.getMap()"/> <mx:Button label="get list" click="test1.getList()"/> <mx:Button label="get set" click="test1.getSet()"/> </mx:HBox> <mx:HBox> <mx:Label text="结果:"/> <mx:TextArea id="result"/> </mx:HBox> <mx:Script> <!--[CDATA[ import mx.collections.ArrayCollection; import mx.rpc.events.FaultEvent; import mx.controls.Alert; import mx.rpc.events.ResultEvent; import cn.Person; [Bindable] public var person:Person; [Bindable] public var map:ArrayCollection=null; function sayHello(event:Event):void { var inputVar:String=inputStr.text; test1.hello(inputVar); } function sayWorld(event:Event):void { var inputVar:String=inputStr.text; test1.world(inputVar); } private function sayHelloResult(event:ResultEvent):void { result.text=event.result.toString(); Alert.show(event.result.toString(), "返回结果"); } private function sayWorldResult(event:ResultEvent):void { result.text=event.result.toString(); Alert.show(event.result.toString(), "返回结果"); } private function getMapResult(event:ResultEvent):void { for (var key:String in event.result) { var list:ArrayCollection=event.result[key] as ArrayCollection; for (var key1:Object in list) { Alert.show("map item key is: " + key + " value is: " + key1); } } } private function getList():void { test1.getList(); } private function getListResult(event:ResultEvent):void { var ac:ArrayCollection=event.result as ArrayCollection; for (var i:int=0; i < ac.length; i++) { var p1:Person=ac.getItemAt(i) as Person; Alert.show("list item name is: " + p1.name+" /n another usage : "+ac.getItemAt(i).name); } } private function getSet():void { test1.getSet(); } private function getSetResult(event:ResultEvent):void { var ac:ArrayCollection=event.result as ArrayCollection; for (var i:int=0; i < ac.length; i++) { var p1:Person=ac.getItemAt(i) as Person; Alert.show("set item name is: " + p1.name); } } ]]--> </mx:Script> </mx:Application>
Person.as客户端对象
package cn { [Bindable] [RemoteClass(alias="cn.Person")] public class Person { public var name:String; public var pass:String; } }
HelloService.java
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class HelloService { public String hello(String var1) { return "hello " + var1; } public String world(String var1) { return "world " + var1; } public Map<String,List<String>> getMap() { ArrayList<String> list1=new ArrayList<String>(); list1.add("value11"); list1.add("value12"); list1.add("value13"); ArrayList<String> list2=new ArrayList<String>(); list2.add("value21"); list2.add("value22"); list2.add("value23"); ArrayList<String> list3=new ArrayList<String>(); list3.add("value31"); list3.add("value32"); list3.add("value33"); HashMap<String,List<String>> map=new HashMap<String,List<String>>(); map.put("key1", list1); map.put("key2", list2); map.put("key3", list3); return map; } public ArrayList<Person> getList() { ArrayList <Person> list=new ArrayList<Person>(); Person p1=new Person(); p1.setName("name1"); p1.setPass("pass1"); Person p2=new Person(); p2.setName("name2"); p2.setPass("pass2"); Person p3=new Person(); p3.setName("name3"); p3.setPass("pass3"); list.add(p1); list.add(p2); list.add(p3); return list; } public Set<Person> getSet() { HashSet<Person> set=new HashSet<Person>(); Person p1=new Person(); p1.setName("name1"); p1.setPass("pass1"); Person p2=new Person(); p2.setName("name2"); p2.setPass("pass2"); Person p3=new Person(); p3.setName("name3"); p3.setPass("pass3"); set.add(p1); set.add(p2); set.add(p3); return set; } }
Person.java(服务器对象)
public class Person { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } private String name; private String pass; }
最后配置下blazeDs的remote-config.xml程序就可以跑了,注意程序中list map 和自定义person对象的使用
相关文章推荐
- Flex使用BlazerDS实现客户端与服务端通信
- Flex使用BlazerDS实现客户端与服务端通信
- 使用简单的ServiceSockt实现服务端与客户端的通信
- golang使用net库实现一个简单的服务端和客户端通信
- 使用VC++实现 客户端和服务端通信 获取本机IP地址
- 使用socket实现简单的客户端和服务端通信(C#语言)
- 【网络编程】使用流式套接字实现简单的客户端/服务端通信过程
- 使用AIDL实现IPC通信之——实现服务端主动发送数据给客户端
- python——使用socket模块实现客户端与服务端通信
- 使用流式套接字实现简单的客户端/服务端通信过程
- windows socket简单使用--实现客户端链接服务端并发送和接收数据
- 使用zlib模块实现HTTP服务端与客户端实现传输数据压缩
- 使用 Socket 通信实现 FTP 客户端程序
- 1模拟网易邮箱实现全选,全不的功能(服务端和客户端) 2 使用DataList实现 加入购物车,编辑,删除,更新,取消功能。要求连一个产品表。
- 使用poll实现的io多路复用服务端和客户端
- 【socket】用PHP的socket实现客户端到服务端的通信
- Android客户端与PHP服务端通信(五)---移植使用极光推送
- 实现Socket服务端和客户端即时通信
- C#使用Socket实现一个socket服务器与多个socket客户端通信
- Socket实现手机客户端和PC机服务端通信