Flex AMF3+JAVA的調用范例
系統
2130 0
<!--新Google 468x15 橫鏈接單元開始--> <script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x15 橫鏈接單元 */ google_ad_slot = "5785741422"; google_ad_width = 468; google_ad_height = 15; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468x15 橫鏈接單元結束-->
<!-- Feedsky FEED發布代碼開始 -->
使用RSS訂閱本Blog
<!-- FEED自動發現標記開始 --> <link title="RSS 2.0" type="application/rss+xml" rel="alternate"> <!-- FEED自動發現標記結束 -->
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
中找到)
ActionScript客戶端代碼:
-
/**
-
*...
-
*@authorKinglong
-
*@version0.1
-
*/
-
-
packageproject.test{
-
-
importflash.display.*;
-
importflash.events.*;
-
importflash.net.*;
-
importflash.utils.*;
-
-
publicclassTestAMFextendsSprite{
-
-
privatevar_loader:URLLoader;
-
-
publicfunctionTestAMF(){
-
trace(
"TestAMF"
);
-
_loader=newURLLoader();
-
_loader.dataFormat=URLLoaderDataFormat.BINARY;
-
_loader.addEventListener(
Event
.COMPLETE,loaderHandler);
-
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,loaderHandler);
-
_loader.addEventListener(IOErrorEvent.IO_ERROR,loaderHandler);
-
varrequest:URLRequest=newURLRequest(
"http://localhost:8080/ajax/servlet/test"
);
-
_loader.load(request);
-
}
-
-
privatefunctionloaderHandler(event:*):void{
-
trace(event.type);
-
switch(event.type){
-
case
Event
.COMPLETE:
-
varstart:Number=getTimer();
-
varbyte:ByteArray=_loader.dataasByteArray;
-
byte.uncompress();
-
varobj:
Object
=byte.readObject();
-
varend:Number=getTimer();
-
trace(
"耗時:"
+(end-start)+
"毫秒"
);
-
trace(obj.fullName);
-
break;
-
}
-
}
-
}
-
-
}
Java服務端代碼
-
import
java.io.*;
-
import
java.util.HashMap;
-
import
java.util.Map;
-
-
import
java.util.zip.*;
-
-
import
javax.servlet.ServletException;
-
import
javax.servlet.http.HttpServlet;
-
import
javax.servlet.http.HttpServletRequest;
-
import
javax.servlet.http.HttpServletResponse;
-
-
import
flex.messaging.io.*;
-
import
flex.messaging.io.amf.*;
-
-
public
class
TestServlet
extends
HttpServlet{
-
-
private
static
final
long
serialVersionUID=-1079073749217155506L;
-
-
private
SerializationContextcontext=
new
SerializationContext();
-
-
-
public
void
doPost(HttpServletRequestrequest,HttpServletResponseresponse)
throws
-
ServletException,IOException{
-
response.setContentType(
"application/x-gzip-compressed"
);
-
Amf3Outputout=
new
Amf3Output(context);
-
DeflaterOutputStreamstream=
new
DeflaterOutputStream(
new
DataOutputStream(response.getOutputStream()));
-
out.setOutputStream(stream);
-
-
Mapmap=
new
HashMap();
-
String[]arr=
"1,2,3,4,5"
.split(
","
);
-
-
map.put(
"datas"
,arr);
-
map.put(
"userName"
,
"kinglong"
);
-
map.put(
"fullName"
,
"金龍工作室"
);
-
map.put(
"domain"
,
"klstudio.com"
);
-
-
out.writeObject(map);
-
stream.finish();
-
-
}
-
-
public
void
doGet(HttpServletRequestrequest,HttpServletResponseresponse)
throws
-
ServletException,IOException{
-
doPost(request,response);
-
}
-
}
因為AS3中的ByteArray支持zlib數據壓縮和解壓,所以我在服務端代碼里增加數據壓縮。AMF3很適合Flash和后臺服務端的數據交換,我寫了這個范例,希望能給大家一參考。
摘自【http://www.klstudio.com/post/168.html】
<!--Google 468*60橫幅廣告開始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "image"; //2007-07-26: CSDN google_ad_channel = "6063905817"; google_color_border = "6699CC"; google_color_bg = "E6E6E6"; google_color_link = "FFFFFF"; google_color_text = "333333"; google_color_url = "AECCEB"; google_ui_features = "rc:6"; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--Google 468*60橫幅廣告結束--><!--新Google 468*60橫幅廣告開始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x60, 創建于 08-8-6 */ google_ad_slot = "7368701459"; google_ad_width = 468; google_ad_height = 60; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468*60橫幅廣告結束-->
<!-- Google Reader shared發布代碼開始 --><script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&callback=GRC_p%28%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D%29%3Bnew%20GRC"></script><!-- Google Reader shared發布代碼結束 -->
Flex AMF3+JAVA的調用范例
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元