您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Lesson3_Flex4之与后台服务器通信JAVA方式
Flex4与后台服务器通信JAVA方式HandsOnURLRequest+URLLoaderURLRequest是ActionScript和服务端通信的最基本方式要实现ActionScript与服务端交互,首先必须知道以下几个类:URLRequest类记录请求服务端的URL信息,给URLLoader进行发送操作.URLVariables类保存向服务端请求所需的参数,一般用于POST方式传输,GET方式传输不需要使用.URLRequestMethod类该类只有两个静态常量值,一个是POST,一个是GET,可以把它当作是一个枚举类型,用于指定URL请求时使用POST方式或是GET方式.URLLoader类真正与服务端打交道的类,通过load方法把一个Reuqest发送给服务端,在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息.传输过程中有可能产生IO错误,有HandsOn该对象添加一个Complete事件的监听器,接收服务器返回的信息.传输过程中有可能产生IO错误,有必要时可以为该对象添加IOError监听器.例子:varrequest:URLRequest=newURLRequest();//默认为URLRequestMethod.GET,若使用GET方式可以不指定request.method=URLRequestMethod.POST;//创建一个参数变量对象,用于保存所有向服务发送的参数数据,GET方式可以不使用varvars:URLVariables=newURLVariables();vars[varName]=varValue;//把参数键,值对放到vars对象中.vars[var2Name]=var2Value;request.data=vars;//把参数对象放进Request对象中作为参数//通过request对象创建一个loader,varloader:URLLoader=newURLLoader(request);URLRequest是ActionScript和服务端通信的最基本方式事件及返回值的处理loader.addEventListener(//给loader对象添加完成时的监听器,Event.COMPLETE,function(e:Event):void//临时定义一个监听器{//服务端返回的数据是保存在loader的data里,通过以下语句可以得到trace(URLLoader(e.target).data);//在监听器里处理服务端返回的数据//complete//processthedata;});loader.addEventListener(HandsOnloader.addEventListener(//IOError监听器:IOErrorEvent.IO_ERROR,//临时监听器,IO错误的处理在该函数中处理function(e:IOErrorEvent):void{/*processtheerr;*/});loader.load(request);//把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件下面写一个具体的代码示例Index.mxml?xmlversion=1.0encoding=utf-8?s:Applicationxmlns:fx=:s=library://ns.adobe.com/flex/sparkxmlns:mx=library://ns.adobe.com/flex/mxminWidth=955minHeight=600fx:Script![CDATA[importmx.controls.Alert;importmx.rpc.events.FaultEvent;HandsOnimportmx.rpc.events.ResultEvent;importmx.utils.URLUtil;protectedfunctionmyFlex_resultHandler(event:ResultEvent):void{varname:String=event.resultasString;Alert.show(name);}//protectedfunctionbtnSend_clickHandler(event:MouseEvent):void//{////myFlex.sayHello(txtName.text);//}Index.mxmlprotectedfunctionbutton1_clickHandler(event:MouseEvent):void{varv:URLVariables=newURLVariables(name=jacky&age=35&address=HongKongChina);/*也可以是这种方式varvars:URLVariables=newURLVariables();vars[varName]=varValue;//把参数键,值对放到vars对象中.vars[var2Name]=var2Value;*/varr:URLRequest=newURLRequest();HandsOnvarr:URLRequest=newURLRequest();r.url==URLRequestMethod.POST;r.data=v;varl:URLLoader=newURLLoader();l.load(r);l.addEventListener(Event.COMPLETE,txtCompleteHandler);//注册请求完成后响应获取数据事件方法//labMsg.alpha=1;}Index.mxmlprivatefunctiontxtCompleteHandler(e:Event):void{varl:URLLoader=URLLoader(e.target);/*URLUtil的stringToObject方法解释从字符串返回对象。字符串包含name=value对,它们成为返回对象的动态属性。这些属性对由指定的separator分隔。该方法可转换数字、布尔值、数组(由“[]”定义)以及子类(由“{}”定义)。默认情况下,%XX格式的URL模式将转换为相应的字符串字符。例如:vars:String=name=Alex;age=21;varo:Object=URLUtil.stringToObject(s,;,true);返回对象:{name:Alex,age:21}。*/HandsOn*///直接获取返回值内容:URLLoader(e.target).dataAlert.show(l.data);varo:Object=URLUtil.stringToObject(l.data,;,true);//使用URLUtil对将数据进行反序列化以方便使用txtName.text=o.name;txtAge.text=o.age;txtAddress.text=o.address;//labMsg.alpha=0;}]]/fx:ScriptIndex.mxmlfx:Declarations!--请把不可视的组件元素例如服务,值对象的放在声明里面Placenon-visualelements(e.g.,services,valueobjects)heres:RemoteObjectid=myFlexdestination=mytestresult=myFlex_resultHandler(event)/--/fx:Declarationss:Panelx=“77”y=“35”width=“198”height=“231”title=“注册页面s:TextInputx=47y=102id=txtAddress/s:TextInputx=47y=72id=txtAge/s:TextInputx=47y=37id=txtName/HandsOns:TextInputx=47y=37id=txtName/!--s:Buttonx=168y=38label=发送id=btnSendclick=btnSend_clickHandler(event)/--s:Buttonx=47y=154label=按钮click=button1_clickHandler(event)/s:Labelx=0y=47text=Name/s:Labelx=4y=81text=Ageheight=13/s:Labelx=4y=115text=Addressheight=13//s:Panel/s:Application/SPANHello.javapublicclassTestServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{this.doPost(request,response);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//获取URLResuest请求回的参数返回数据用;分隔以方便Flex对数据进行序列化HandsOn//获取URLResuest请求回的参数返回数据用;分隔以方便Flex对数据进行序列化Stringrs=newString(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);}}Remoting-config.xml?xmlversion=1.0encoding=UTF-8?serviceid=remoting-serviceclass=flex.messaging.services.RemotingServicedestinationid=userServicepropertiessourcecom.hsj.service.UserService/source/properties/destinationadaptersHandsOnadaptersadapter-definitionid=java-objectclass=flex.messaging.services.remoting.adapters.JavaAdapterdefault=true//adaptersdefault-channelschannelref=my-amf//default-channels/serviceWeb.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2
本文标题:Lesson3_Flex4之与后台服务器通信JAVA方式
链接地址:https://www.777doc.com/doc-1579557 .html