精通Flex 3.0――4.7.1 加載服務端數據

  在4.2.3小節中曾經使用URLRequest加載了一個外部的圖片。在前一節中,創建XML對象時也可以直接加載外部的數據。同樣,開發人員也可以使用ActionScript 3.0加載指定位置的數據。與4.2.3小節中使用flash.display.Loader不同,進行數據加載使用全新的數據加載類。ActionScript 3.0改進了ActionScript 2.0中的數據加載方式,使用了新的數據加載對象URLRequestURLLoader。這兩個類搭配使用,進行服務端數據加載。

URLRequest用於發出請求。URLRequest是通過制定資源的位置或者數據處理的頁面發出請求。URLLoader用於加載URLRequest請求結果的內容。具體步驟如下所示。

1)在Flex Builder中新建一個項目,命名爲“URLConnector”。打開URLConnector.mxml文件修改代碼如下所示。

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

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" click="getContent()">

         <mx:Script>

                   <![CDATA[

                   //導入要使用的包

                            import mx.controls.Alert;

                            import flash.net.URLRequest;

                            import flash.net.URLLoader;

                            import flash.events.*;

                   //定義發送請求

                            function getContent():void

                            {

                                     //聲明一個URLRequest指定請求數據的位置

                                     var flexRequest:URLRequest=new URLRequest("http://localhost:8080/JspDisplay/Hello.jsp");

                                     //定義URLLoader對象加載數據

                                     var flexload:URLLoader=new URLLoader();

                                     //加載請求的數據

                                     flexload.load(flexRequest);

                                     //添加一個事件監聽器,監聽加載的狀況

                                     flexload.addEventListener(Event.COMPLETE, dataLoaded);

                            }

                   //定義一個函數監聽加載數據完畢事件

                            function dataLoaded(e:Event):void

                            {

                                     //通過對話框顯示加載的數據

                                     Alert.show(e.target.data);                    }

                            ]]>

         </mx:Script>

</mx:Application>

在上面的代碼中,URLRequest對象訪問的內容是一個JSP頁面。所以,需要建立一個相應基於JavaWeb項目。基於URLRequestURLLoder類進行load方法調用的時候,進行的是異步的數據加載。所以要添加一個事件進行對數據加載成功實踐的監聽。

2)在開發環境中創建一個JavaWeb項目,命名爲“JspDisplay”。創建一個JSP文件命名爲“Hello.jsp”。打開Hello.jsp文件,修改代碼如下所示。

<%@ page language="java" pageEncoding="UTF-8"%>

<%String HelloStr="HelloJava";%>

<%=HelloStr%>

然後將創建的項目部署到Tomcat應用服務器上。啓動Tomcat應用服務器。打開瀏覽器,在地址欄輸入http://localhost:8080/JspDisplay/Hello.jsp,如圖4.14所示。

4.14  訪問Hello.jsp效果

這裏,使用JSP作爲服務端頁面輸出技術。讀者也可以使用ASPPHPWeb頁面技術作爲服務端頁面輸出,效果如圖4.14所示即可。

注意:關於JSP的開發以及Tomcat應用服務器的使用,讀者可以參考Java Web開發相關的書籍。

3)運行URLConnector應用,如圖所示。單擊舞臺,效果如圖所示。

HelloJava”。停留一段時間是表明Flex應用正通過URLRequest向服務端發出請求,並等待數據加載完畢。

單擊舞臺後,會停留一段時間,然後彈出對話框。對話框顯示“

通過URLRequestURLLoader的方式還可以向服務器端發送參數,可以使用POSTGET方法。修改上面例子中代碼,向服務端發送數據。如下步驟所示。

1)在上面的例子中修改URLConnector.mxml如下代碼所示。

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

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" click="getContent()">

         <mx:Script>

                   <![CDATA[

                   //導入要使用的包

                            import mx.controls.Alert;

                            import flash.net.URLRequest;

                            import flash.net.URLLoader;

                            import flash.events.*;

                   //定義發送請求

                            function getContent():void

                            {

                                     //聲明一個URLRequest指定請求數據的位置

                                     var flexRequest:URLRequest=new

                                     URLRequest("http://localhost:8080/JspDisplay/Hello.jsp");

                                     //定義發出數據的類型格式

                                     flexRequest.contentType="text/html";

                                     //定義發出數據的內容

                                     flexRequest.data="UserName=Flex";

                                     //定義發出數據的方法

                                     flexRequest.method=URLRequestMethod.GET;

                                     //定義URLLoader對象加載數據

                                     var flexload:URLLoader=new URLLoader();

                                     //加載請求的數據

                                     flexload.load(flexRequest);

                                     //添加一個事件監聽器,監聽加載的狀況

                                     flexload.addEventListener(Event.COMPLETE, dataLoaded);

                            }

                   //定義一個函數監聽加載數據完畢事件

                            function dataLoaded(e:Event):void

                            {

                                     //輸出加載的數據

                                     Alert.show(e.target.data);

                            }

                            ]]>

         </mx:Script>

</mx:Application>

上面的代碼中,增加了URLRequestcontentTypedatamethod。在這裏指定contentTypetext/html格式發出請求。發出的數據data爲“UserName=Flex”,以參數值和參數值成對的發出。發送參數的方法methodGET

2)修改上一個例子裏面的Hello.jsp文件如下代碼所示。

<%@ page language="java" pageEncoding="UTF-8"%>

<%String UserName=(String)request.getParameter("UserName");%>

<%String HelloStr="Hello"+UserName;%>

<%=HelloStr%>

在這段代碼中,接收了客戶端傳入的UserName參數,並且顯示了出其具體的值Flex

3)保存修改過的代碼,啓動Tomcat服務器。運行URLConnector應用,單擊舞臺,效果如圖所示。

通過運行效果可以看出,通過向URLRequest中設定數據“UserName=Flex”,可以將數據發送到服務端。並且通過服務端進行處理,再發回給客戶端。

URLRequest對象與URLLoader對象組合在一起使用方式,與AJAXXMLHTTP對象使用的方式很相像。但ActionScript 3.0中,提供了更豐富的數據庫通信的方式。在後面的章節中,可以看到與Request/Response方式完全不同的數據交互方式。

發佈了65 篇原創文章 · 獲贊 0 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章