一.flex+servlet+json:
json:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
二.配置环境
1.flex builder 3
2.myeclipse 6.5
3.tomcat 6.0
三.具体步骤:
新建一个flex project项目,名称随便
在目录src下新建一个application,名称为my_servlet_json
在目录下的libs中导入 http://code.google.com/p/as3corelib/ 下的as3corelib-.92.1.zip 中的 as3corelib.swc
1.flex端代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import com.adobe.serialization.json.JSON;
import flash.events.*;
import flash.net.*;
public function runMe():void{
//定义URLLoder实例
var loader:URLLoader=new URLLoader();
//封装loader使其有监听程序
configureListeners(loader);
//定义表头,可以不要
var header1:URLRequestHeader=new URLRequestHeader("pragma", "no-cache");
//定义URLRequest,定义传送方法,表头,以及请求的地址
var requester:URLRequest=new URLRequest();
requester.requestHeaders.push(header1);
//定义为POST方式,那么servlet中你就在doPost中写方法
requester.method=URLRequestMethod.POST;
loader.dataFormat=URLLoaderDataFormat.TEXT;
//根据自己的路径修改
requester.url="http://127.0.0.1:11112/Flex-json/servlet/MessageServlet";
//初始一个动态类
var obj:Object=new Object();
obj.value1="bob";
obj.value2="sandy";
//使用URLVariables传送给URLRequest的data
var variables:URLVariables=new URLVariables();
//将动态类编码为JSON类
variables.myObject=JSON.encode(obj);
requester.data=variables;
//传送出去
loader.load(requester);
}
//定义激发事件,以及输出
private function configureListeners(dispatcher:IEventDispatcher):void
{
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function completeHandler(event:Event):void
{
try
{
var tempLoader:URLLoader = URLLoader(event.target);
var obj:Object = JSON.decode(tempLoader.data);
trace("completeHandler: " + tempLoader.data);
trace(obj.value1);
trace(obj.value2);
}
catch (error:Error)
{
trace("completeHandler: " + error.toString());
}
}
private function openHandler(event:Event):void
{
trace("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void
{
trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
private function securityErrorHandler(event:SecurityErrorEvent):void
{
trace("securityErrorHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void
{
trace("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void
{
trace("ioErrorHandler: " + event);
}
]]>
</mx:Script>
<mx:Button x="19" y="10" label="Run Me" id="btnRunMe" click="runMe()" enabled="true"/>
</mx:Application>
2.在WEB-INFO下的lib文件夹下导入http://code.google.com/p/json-simple/ 的 json_simple-1.1.jar
servlet端:在doPost中定义即可:
response.setContentType("text/html");
PrintWriter out = response.getWriter();
JSONObject jsonObject=new JSONObject();
try{
String strJSON=null;
JSONObject myObject=null;
if(request.getParameter("myObject")!=null){
strJSON = request.getParameter("myObject");
Object obj = JSONValue.parse(strJSON);
myObject = (JSONObject)obj;
String value1 = myObject.get("value1").toString();
String value2 = myObject.get("value2").toString();
jsonObject.put("value1", "Hello: " + value1);
jsonObject.put("value2", "Hello: " + value2);
}else{
jsonObject.put("ERROR", "Invalid JSON");
}
}
finally{
out.print(jsonObject);
out.flush();
out.close();
}
3.发布程序,运行TOMCAT
4.运行FLEX程序。
5.输出结果:
[SWF] E:\鏂版瓕2\FLEX3\Lesson9\CommDemo1\bin-debug\My_Servlet_Json.swf - 568,920 bytes after decompression
openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2]
progressHandler loaded:47 total: 47
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0]
completeHandler: {"value1":"Hello: bob","value2":"Hello: sandy"}
Hello: bob
Hello: sandy
6.最后要注意SWF的访问域问题,这个可以上网自己查一下
分享到:
相关推荐
Flex4.6+java+servlet上传图片例子+图片上传预览
Flex+Java Servlet处理文件上传 关于上传文件
Flex+Servlet断点续传Demo
Flex+servlet增删改查附带视频,视频很详细。从建工程开始到完成增加工能、
Flex+Java、PHP 批量上传实例文档Flex+Java、PHP 批量上传实例文档Flex+Java、PHP 批量上传实例文档Flex+Java、PHP 批量上传实例文档Flex+Java、PHP 批量上传实例文档Flex+Java、PHP 批量上传实例文档Flex+Java、...
NULL 博文链接:https://zhousheng193.iteye.com/blog/907601
Flex+Java Servlet文件上传实例
这个实例是我看到得flex+hibernate 最经典的实例
一个flex+java的登录实例完整版+flex框架 一个flex+java的登录实例完整版+flex框架
NULL 博文链接:https://zyw090111.iteye.com/blog/626511
项目的一部分源码flex+java,项目的一部分源码flex+java,项目的一部分源码flex+java,
Flex+php+mysql实例考试系统。有mysql数据库源码,php源码,flex源码构成。通过flex实现前台的搭建,后台连接PHP,通过PHP连接数据库,完成考试系统。考试系统分为考生页,管理页。
---------------------------- chat 客户端代码 FLEX3 开发 ChatServer Delphi6 开发的服务端 Server java 开发的服务端 WindowsApplication1 C# 开发的服务端 <br>其实可以做到FLEX+Delphi,...
Flex+J2ee实例 rar 源码 Flex+J2ee实例 rar 源码 Flex+J2ee实例 rar 源码
采用了一个别人写的flex文件上传的组件,(都有源码) 这个例子中没有上传时的中文乱码问题,在struts下也能很工作的很好
flex 数据库操作 romotingobject 连接java后台文件 与数据库进行交互
Flex+JSP Web应用开发实战详解-源代码.part4(共5)
D:\GXSKY\Flex\SDK\Flex+Css完全手册D:\GXSKY\Flex\SDK\Flex+Css完全手册D:\GXSKY\Flex\SDK\Flex+Css完全手册D:\GXSKY\Flex\SDK\Flex+Css完全手册D:\GXSKY\Flex\SDK\Flex+Css完全手册D:\GXSKY\Flex\SDK\Flex+Css完全...