您的位置:首页 > 理论基础 > 计算机网络

flex中httpservice与java后台交互的两种传值方式

2014-08-14 22:22 661 查看
文章转自http://www.blogjava.net/sxyx2008/非常感谢
环境:myeclipse8.5+flex4+blazeds

描述:flex4中httpservice与服务器端交互的值传递问题

方式一:通过<s:request/>标签进行交互,在该标签内部以要传递的参数名作为该标签内的子标签,值作为内容进行传递,服务端接受数据采用request.getParmeter("参数名")获取数据.

示例代码:

flex中的代码:


<!--定义HttpService发送请求-->


<s:HTTPService id="service"


url="http://localhost:8080/testhttpservice/testHttpServiceServlet"


useProxy="false"


fault="service_faultHandler(event)"


result="service_resultHandler(event)">


<!--第一种传值方式-->





<s:request >


<!--参数名称作标签,中间填充参数值-->


<username>{txtusername.text}</username>


<password>{txtpassword.text}</password>


</s:request>





</s:HTTPService>
后台接受参数的代码:


//获取flex传递的参数 username password


String username=request.getParameter("username");


//get方式处理乱码


//username=new String(username.getBytes("ISO-8859-1"),"utf-8");


String password=request.getParameter("password");


//password=new String(password.getBytes("ISO-8859-1"),"utf-8");
方式二:第二种传值方式通过send()方法传值send方法中传递参数 ,服务端接受数据采用request.getParmeter("参数名")获取数据.

示例代码:


//第二种传值方式 通过send()方法传值 send方法中传递参数


//定义一object对象


var val:Object=new Object();


//分别将文本框username,password的值传递到后台


//object对象.参数名=值 传值操作


val.username=txtusername.text;


val.password=txtpassword.text;


service.send(val);
贴出完整的代码:

服务器端:


package com.servlet;




import java.io.IOException;


import java.io.PrintWriter;


import java.util.ArrayList;


import java.util.List;




import javax.servlet.ServletException;


import javax.servlet.http.HttpServlet;


import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpServletResponse;






/** *//**


* 功能描述:flex httpservice与java交互参数传递探讨<br>


* @author sxyx2008<br>


* @date 2010-07-19


*


*/


@SuppressWarnings("serial")




public class TestHttpServiceServlet extends HttpServlet

{





@Override


protected void service(HttpServletRequest request, HttpServletResponse response)




throws ServletException, IOException

{


//处理post方式乱码


request.setCharacterEncoding("utf-8");


//设置浏览器输出字符编码


response.setCharacterEncoding("utf-8");


PrintWriter writer=response.getWriter();


//获取flex传递的参数 username password


String username=request.getParameter("username");


//get方式处理乱码





//username=new String(username.getBytes("ISO-8859-1"),"utf-8");


String password=request.getParameter("password");


//password=new String(password.getBytes("ISO-8859-1"),"utf-8");





//构建一个list存放一些数据用来模拟用户是否存在这一功能


List<String> list=new ArrayList<String>();


list.add("张三");


list.add("李四");


list.add("王五");


list.add("曹操");


list.add("孙权");


list.add("刘备");


//检验用户




if(list.contains(username))

{


writer.print("存在:"+username+"客户端传递的密码是:"+password);




}else

{


writer.print("找不到:"+username+"客户端传递的密码是:"+password);


}





}


}



flex代码:


<?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;




//调用失败


protected function service_faultHandler(event:FaultEvent):void


{


Alert.show("失败了:"+event.message,"提示");


}




//调用成功


protected function service_resultHandler(event:ResultEvent):void


{


Alert.show("成功了:"+event.result as String,"提示");


}





//调用


protected function button1_clickHandler(event:MouseEvent):void


{


//第一种传值方式


//service.send();





//第二种传值方式 通过send()方法传值 send方法中传递参数


//定义一object对象


var val:Object=new Object();


//分别将文本框username,password的值传递到后台


//object对象.参数名=值 传值操作


val.username=txtusername.text;


val.password=txtpassword.text;


service.send(val);


}




]]>


</fx:Script>


<fx:Declarations>


<!-- 将非可视元素(例如服务、值对象)放在此处 -->


<!--定义HttpService发送请求-->


<s:HTTPService id="service"


url="http://localhost:8080/testhttpservice/testHttpServiceServlet"


useProxy="false"


fault="service_faultHandler(event)"


result="service_resultHandler(event)">


<!--第一种传值方式-->





<s:request >


<!--参数名称作标签,中间填充参数值-->


<username>{txtusername.text}</username>


<password>{txtpassword.text}</password>


</s:request>





</s:HTTPService>








</fx:Declarations>


<s:TextInput x="332" y="196" id="txtusername"/>


<s:TextInput x="332" y="256" id="txtpassword" displayAsPassword="true"/>


<s:Button x="357" y="311" label="发送" click="button1_clickHandler(event)"/>


<s:Label x="290" y="206" text="用户名:"/>


<s:Label x="297" y="266" text="密码:"/>


</s:Application>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: