精通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方式完全不同的数据交互方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值