flex和java交互的三种方法之二:httpservice

环境: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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值