`
JavaCrazyer
  • 浏览: 3009243 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

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

阅读更多

这次说的URLRequest是ActionScript和服务端通信的最基本方式

要实现ActionScript与服务端交互, 首先必须知道以下几个类:
 URLRequest类
 记录请求服务端的URL信息, 给URLLoader进行发送操作.
   URLVariables类
 保存向服务端请求所需的参数, 一般用于POST方式传输,GET方式传输不需要使用.
 URLRequestMethod类
 该类只有两个静态常量值, 一个是POST, 一个是GET, 可以把它当作是一个枚举类型, 用于指定URL请求时使用POST方式或是GET方式.
 URLLoader类
 真正与服务端打交道的类, 通过load方法把一个Reuqest发送给服务端, 在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息. 传输过程中有可能产生IO错误, 有必要时可以为该对象添加IOError监听器.

 

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

//默认为URLRequestMethod.GET, 若使用GET方式可以不指定
request.method = URLRequestMethod.POST;

//创建一个参数变量对象,用于保存所有向服务发送的参数数据, GET方式可以不使用
var vars: URLVariables = new URLVariables ();
vars["varName"] = varValue; //把参数键,值对放到vars对象中.
vars["var2Name"] = var2Value;
request.data = vars;  //把参数对象放进Request对象中作为参数

// 通过request对象创建一个loader,
var loader: URLLoader = new URLLoader(request);

 

 

事件及返回值的处理

loader.addEventListener( //给loader对象添加完成时的监听器.
 Event.COMPLETE,
 function(e: Event):void  //临时定义一个监听器
 {
  //服务端返回的数据是保存在loader的data里,通过以下语句可以得到
  trace(URLLoader(e.target).data );//在监听器里处理服务端返回的数据
  //complete
  // process the data;
 }
);

loader.addEventListener( //IOError监听器
 IOErrorEvent.IO_ERROR,
 //临时监听器,IO错误的处理在该函数中处理
 function(e: IOErrorEvent): void {/* process the err;*/}
);
loader.load(request);//把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件

下面写一个具体的代码示例

mxml的具体代码

<?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;	//把参数键,值对放到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); //注册请求完成后 响应获取数据事件方法  
				//labMsg.alpha = 1;  
			}
			
			private function txtCompleteHandler(e:Event):void  
			{  

				var l:URLLoader = URLLoader(e.target);  
				/* URLUtil的stringToObject方法解释
				从字符串返回对象。字符串包含 name=value 对,它们成为返回对象的动态属性。这些属性对由指定的 separator 分隔。该方法可转换数字、布尔值、数组(由“[]”定义)以及子类(由“{}”定义)。默认情况下,%XX 格式的 URL 模式将转换为相应的字符串字符。 
				例如: 
				var s:String = "name=Alex;age=21";
				var o:Object = URLUtil.stringToObject(s, ";", true);		
				返回对象:{ name: "Alex", age: 21 }。
				*/
				//直接获取返回值内容:  URLLoader(e.target).data
				Alert.show(l.data);
				var o:Object = URLUtil.stringToObject(l.data,";",true); //使用URLUtil对将数据进行反序列化以方便使用  
				
				txtName.text = o.name;  
				txtAge.text = o.age;  
				txtAddress.text = o.address;  
				//labMsg.alpha = 0;  
			}  

		]]>
	</fx:Script>
	<fx:Declarations>
		<!--请把不可视的组件元素例如服务的,值对象的放在声明里面  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="发送" 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>

 

 

处理程序为

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请求回的参数 返回数据用;分隔以方便Flex对数据进行序列化  
		   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);
	}

	
}

 

好了,这次的URLRequest方式就到此为止了

 

5
0
分享到:
评论

相关推荐

    AS3 中使用 URLRequest 和 URLLoader 与服务器交互

    在Adobe Flash Professional CS5或更新版本的环境中,ActionScript 3(AS3)提供了一套强大的网络通信工具,包括`URLRequest`、`URLLoader`等类,这些类替代了早期版本中的`LoadVars`方法,使得与服务器的交互更加...

    AS3中使用URLRequest和URLLoader 与服务器交互

    在ActionScript 3 (AS3)中,与服务器进行数据交互是Web开发中的核心部分,主要依赖于两个关键类:`URLRequest`和`URLLoader`。这两个类是Flash Player和Adobe AIR应用程序用来发送HTTP请求并接收响应的重要工具。...

    Flex与后台交互的方法_HTTPService_WebService_URLLoader

    总的来说,理解并掌握Flex与后台的交互方式对于开发高效、稳定的富互联网应用至关重要。无论选择HTTPService、WebService还是URLLoader,都需要结合实际需求,合理设计代码结构,确保良好的用户体验。

    Flex与Java低数据量通信息二:URLLoader及非视图组件的事件发布订阅

    标题中的“Flex与Java低数据量通信”是指在ActionScript(Flex的主要编程语言)和Java之间进行少量数据交互的技术。这种通信通常用于实现客户端(Flex应用程序)和服务器端(Java应用)之间的轻量级通信,比如请求...

    Flex之URLLoader加载XML

    在Flex开发中,`URLLoader` 是一个非常重要的类,用于加载远程数据,如XML、JSON等。在本示例中,它被用来从服务器获取XML文件并将其内容解析为XML对象,以便在应用程序中使用。`Flex` 是Adobe开发的一个开放源代码...

    Flex使用JSON格式与Java通信

    标题中的“Flex使用JSON格式与Java通信”是指在开发富互联网应用程序(Rich Internet Application, RIA)时,采用Adobe Flex作为前端技术,通过JSON(JavaScript Object Notation)数据交换格式与后端Java服务器进行...

    flex 怎么检测文件大小.

    在Flex与服务器之间交换数据时,通常使用 BlazeDS 或 LCDS 作为中间层,它们支持AMF(Action Message Format)协议,提供高效的数据交换。XML文件大小可以通过解析XMLDocument对象的length属性得到,AMF文件则需要...

    Flex 向 java服务器 上传文件

    总结起来,本示例介绍了如何使用Flex客户端与Java服务器配合实现文件上传功能。在Flex中,通过FileReference类选择和上传文件;在Java端,使用Spring MVC的MultipartFile接口接收并处理上传的文件。这个过程涉及到...

    flex用两种方法读取xml文件

    HTTPService是Flex提供的一种用于与Web服务器进行异步通信的组件,它基于HTTP协议。以下是如何使用HTTPService来获取并解析XML数据的步骤: (1)导入必要的库: ```actionscript import mx.rpc.http.HTTPService; ...

    URLLoader动态加载XML

    在ActionScript 3 (AS3)中,`URLLoader` 类是用于加载各种类型数据的强大工具,包括XML。XML(eXtensible Markup Language)...总的来说,`URLLoader`与XML的结合使得在Flash或Flex项目中处理远程数据变得简单而灵活。

    flex与java通讯,URL,HTTPService,Socket

    Flex与Java之间的通信是开发跨平台应用程序时的关键技术,它允许客户端(通常为Flex应用程序)与服务器端(通常是Java应用程序)进行数据交换。本篇将深入探讨几种主要的通信方式:URLLoader,HTTPService和Socket。...

    Flex拍照并上传到java后台——未调试成功

    标题中的“Flex拍照并上传到java后台——未调试成功”表明这是一个关于使用Adobe Flex技术进行拍照功能实现,并将拍摄的照片上传到Java后端服务器的项目,但目前该项目可能在调试阶段遇到了问题。Flex是一种用于创建...

    第十二节 URLLoader与后台交互.docx

    2. **后台交互**:URLLoader通过HTTP或FTP协议与服务器进行后台交互,不阻塞用户界面,使得程序在加载数据的同时可以继续执行其他操作。 3. **加载过程**: - 创建一个URLLoader实例,如`var loader:URLLoader = ...

    Flex 4 接收外部参数(1)

    综上所述,Flex 4 提供了多种方式来接收外部参数,使得开发者可以根据不同的场景选择最合适的方法。了解并熟练运用这些技术,将有助于提升 Flex 应用程序的灵活性和可维护性。同时,结合源码和工具,可以更高效地...

    flex 案例

    在本文中,我们将深入探讨如何使用Flex与后端服务,如Java JSP,进行数据交互,特别是关注在处理中文字符时可能出现的乱码问题。Flex是一个强大的开发框架,用于构建富互联网应用程序(RIA),而与后端服务器的交互...

    Flex与后台交互的几种方法详解

    根据提供的标题、描述、标签及部分内容,本文将详细介绍Flex与后台进行交互的三种主要方法:通过FlashVars传递参数、利用HttpService服务以及采用URLLoader组件。这些方法在Flex开发中非常常见,对于实现数据的前后...

    flex3+java文件上传

    9. **错误处理**:Flex和Java之间可能会出现网络问题、文件过大等问题,因此需要在两端都进行错误处理。Flex端可以通过FileReference的securityError、ioError等事件,Java端通过try-catch语句捕获异常。 在提供的...

    flex与后台交互的方法(内有代码)

    本文将详细介绍使用Flex进行后台交互的两种主要方式:通过`HTTPService`和`URLLoader`来实现与服务器的通信。 #### HTTPService:面向服务的交互方式 `HTTPService`是Flex框架提供的一个用于执行HTTP请求的类,它...

Global site tag (gtag.js) - Google Analytics