加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex4 与后台服务器通信方式:URLRequest+URLLoader JAVA方式

发布时间:2020-12-15 03:43:13 所属栏目:百科 来源:网络整理
导读:要实现ActionScript与服务端交互,首先必须知道以下几个类: ?URLRequest类 ?记录请求服务端的URL信息,给URLLoader进行发送操作. ?? URLVariables类 ?保存向服务端请求所需的参数,一般用于POST方式传输,GET方式传输不需要使用. ?URLRequestMethod类 ?该类只有

要实现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的具体代码

<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;	//把参数键,值对放到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>
</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,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);
	}

	
}</span>

好了.....

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读