日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】

發(fā)布時(shí)間:2025/4/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這次說的URLRequest是ActionScript和服務(wù)端通信的最基本方式

要實(shí)現(xiàn)ActionScript與服務(wù)端交互, 首先必須知道以下幾個(gè)類: URLRequest類 記錄請求服務(wù)端的URL信息, 給URLLoader進(jìn)行發(fā)送操作. ?? URLVariables類 保存向服務(wù)端請求所需的參數(shù), 一般用于POST方式傳輸,GET方式傳輸不需要使用. URLRequestMethod類 該類只有兩個(gè)靜態(tài)常量值, 一個(gè)是POST, 一個(gè)是GET, 可以把它當(dāng)作是一個(gè)枚舉類型, 用于指定URL請求時(shí)使用POST方式或是GET方式. URLLoader類 真正與服務(wù)端打交道的類, 通過load方法把一個(gè)Reuqest發(fā)送給服務(wù)端, 在load之前必須給該對象添加一個(gè)Complete事件的監(jiān)聽器,接收服務(wù)器返回的信息. 傳輸過程中有可能產(chǎn)生IO錯(cuò)誤, 有必要時(shí)可以為該對象添加IOError監(jiān)聽器.

?

例子: var request: URLRequest = new URLRequest("http://localhost");

//默認(rèn)為URLRequestMethod.GET, 若使用GET方式可以不指定 request.method = URLRequestMethod.POST;

//創(chuàng)建一個(gè)參數(shù)變量對象,用于保存所有向服務(wù)發(fā)送的參數(shù)數(shù)據(jù), GET方式可以不使用 var vars: URLVariables = new URLVariables (); vars["varName"] = varValue; //把參數(shù)鍵,值對放到vars對象中. vars["var2Name"] = var2Value; request.data = vars;? //把參數(shù)對象放進(jìn)Request對象中作為參數(shù)

// 通過request對象創(chuàng)建一個(gè)loader, var loader: URLLoader = new URLLoader(request);

?

?

事件及返回值的處理

loader.addEventListener( //給loader對象添加完成時(shí)的監(jiān)聽器. Event.COMPLETE, function(e: Event):void? //臨時(shí)定義一個(gè)監(jiān)聽器 { ? //服務(wù)端返回的數(shù)據(jù)是保存在loader的data里,通過以下語句可以得到 ? trace(URLLoader(e.target).data );//在監(jiān)聽器里處理服務(wù)端返回的數(shù)據(jù) ? //complete ? // process the data; } );

loader.addEventListener( //IOError監(jiān)聽器 IOErrorEvent.IO_ERROR, //臨時(shí)監(jiān)聽器,IO錯(cuò)誤的處理在該函數(shù)中處理 function(e: IOErrorEvent): void {/* process the err;*/} ); loader.load(request);//把request對象發(fā)送到服務(wù)端.當(dāng)請求完成,則會自動觸發(fā)COMPLETE事件

下面寫一個(gè)具體的代碼示例

mxml的具體代碼

?

<span style="font-size: medium;"><?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"><fx:Script><![CDATA[import mx.controls.Alert;import mx.rpc.events.FaultEvent;import mx.rpc.events.ResultEvent;import mx.utils.URLUtil;protected function myFlex_resultHandler(event:ResultEvent):void{var name:String=event.result as String;Alert.show(name);}// protected function btnSend_clickHandler(event:MouseEvent):void // { // // myFlex.sayHello(txtName.text); // }protected function button1_clickHandler(event:MouseEvent):void{var v:URLVariables = new URLVariables("name=jacky&age=35&address=HongKong China"); /* 也可以是這種方式var vars: URLVariables = new URLVariables ();vars["varName"] = varValue; //把參數(shù)鍵,值對放到vars對象中.vars["var2Name"] = var2Value; */ var r:URLRequest = new URLRequest(); r.url = "http://localhost:8080/Flex4BlazeDSWeb/test.do"; r.method = URLRequestMethod.POST; r.data = v; var l:URLLoader = new URLLoader(); l.load(r); l.addEventListener(Event.COMPLETE,txtCompleteHandler); //注冊請求完成后 響應(yīng)獲取數(shù)據(jù)事件方法 //labMsg.alpha = 1; }private function txtCompleteHandler(e:Event):void { var l:URLLoader = URLLoader(e.target); /* URLUtil的stringToObject方法解釋從字符串返回對象。字符串包含 name=value 對,它們成為返回對象的動態(tài)屬性。這些屬性對由指定的 separator 分隔。該方法可轉(zhuǎn)換數(shù)字、布爾值、數(shù)組(由“[]”定義)以及子類(由“{}”定義)。默認(rèn)情況下,%XX 格式的 URL 模式將轉(zhuǎn)換為相應(yīng)的字符串字符。 例如: var s:String = "name=Alex;age=21";var o:Object = URLUtil.stringToObject(s, ";", true); 返回對象:{ name: "Alex", age: 21 }。*///直接獲取返回值內(nèi)容: URLLoader(e.target).dataAlert.show(l.data);var o:Object = URLUtil.stringToObject(l.data,";",true); //使用URLUtil對將數(shù)據(jù)進(jìn)行反序列化以方便使用 txtName.text = o.name; txtAge.text = o.age; txtAddress.text = o.address; //labMsg.alpha = 0; } ]]></fx:Script><fx:Declarations><!--請把不可視的組件元素例如服務(wù)的,值對象的放在聲明里面 Place non-visual elements (e.g., services, value objects) here <s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)" />--></fx:Declarations><s:Panel x="77" y="35" width="198" height="231" title="www.accptecg.com flex4"><s:TextInput x="47" y="102" id="txtAddress"/><s:TextInput x="47" y="72" id="txtAge"/><s:TextInput x="47" y="37" id="txtName"/><!--<s:Button x="168" y="38" label="發(fā)送" id="btnSend" click="btnSend_clickHandler(event)"/>--><s:Button x="47" y="154" label="按鈕" click="button1_clickHandler(event)"/><s:Label x="0" y="47" text="Name"/><s:Label x="4" y="81" text="Age" height="13"/><s:Label x="4" y="115" text="Address" height="13"/></s:Panel> </s:Application> </span>

?

處理程序?yàn)?/span>

Java代碼 <span style="font-size: medium;">public class TestServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//獲取URLResuest請求回的參數(shù) 返回?cái)?shù)據(jù)用;分隔以方便Flex對數(shù)據(jù)進(jìn)行序列化 String rs =new String("name="+request.getParameter("name")+";age="+request.getParameter("age")+";address="+request.getParameter("address"));System.out.println(request.getParameter("name"));response.setContentType("text/plain");System.out.println(rs);response.getWriter().write(rs);//request.getRequestDispatcher("/index.jsp").forward(request, response);}}</span>

  

好了,這次的URLRequest方式就到此為止了

轉(zhuǎn)載于:https://www.cnblogs.com/regalys168/p/3626874.html

總結(jié)

以上是生活随笔為你收集整理的Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。