转载:http://cs.ntsky.com/flex3-java-json.html
Flex在做界面开发的时候有很多优势,Flex+java的组合也越来越流行,在整合开发的过程中自然会遇到数据交互的问题,下面介绍Flex3+Java整合使用json的情况。
一、Flex3中使用json需要corelib.swc
http://www.adobe.com/cfusion/exchange/index.cfm?view=sn111&extid=1078469
将corelib.swc拷贝到Flex安装目录的sdks\3.0.0\frameworks\libs下
二、Java中进行数据处理得到json格式的数据,部分代码
Java代码
Java代码
/**
* 浏览器直接返回信息
*
* @param content 内容
* @param character 编码
* @throws IOException
*/
protected void out(String content,String character) throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset="+character);
PrintWriter out = response.getWriter();
out.print(content);
out.flush();
out.close();
}
try{
Author author = authorService.getAuthorByName(username);
if( author==null ){
JSONObject json = new JSONObject();
json.put("status","0");
json.put("message","用户名不存在");
super.out(json.toString());
}
if(author.getPassword().equals(MD5.md5(password))){
session.put(Symbols.SESSION_AUTHOR, author);
JSONObject json = new JSONObject();
json.put("status","1");
json.put("message","登录成功");
super.out(json.toString());
}
else{
JSONObject json = new JSONObject();
json.put("status","0");
json.put("message","密码错误");
super.out(json.toString());
}
}
catch(ServiceException se){
JSONObject json = new JSONObject();
json.put("status","0");
json.put("message","登录失败");
super.out(json.toString());
throw new Exception(se);
} finally {
}
return NONE;
/**
* 浏览器直接返回信息
*
* @param content 内容
* @param character 编码
* @throws IOException
*/
protected void out(String content,String character) throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset="+character);
PrintWriter out = response.getWriter();
out.print(content);
out.flush();
out.close();
}
try{
Author author = authorService.getAuthorByName(username);
if( author==null ){
JSONObject json = new JSONObject();
json.put("status","0");
json.put("message","用户名不存在");
super.out(json.toString());
}
if(author.getPassword().equals(MD5.md5(password))){
session.put(Symbols.SESSION_AUTHOR, author);
JSONObject json = new JSONObject();
json.put("status","1");
json.put("message","登录成功");
super.out(json.toString());
}
else{
JSONObject json = new JSONObject();
json.put("status","0");
json.put("message","密码错误");
super.out(json.toString());
}
}
catch(ServiceException se){
JSONObject json = new JSONObject();
json.put("status","0");
json.put("message","登录失败");
super.out(json.toString());
throw new Exception(se);
} finally {
}
return NONE;
三、Flex中请求URL得到json的数据,然后在script中解析json数据
XML/HTML代码
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalAlign="center"
verticalAlign="middle"
verticalGap="15"
horizontalGap="15">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import com.adobe.serialization.json.JSON;
import mx.controls.Alert;
[Bindable]
private var photoFeed:ArrayCollection;
private function doLogin():void {
trace("start send");
var params:Object = new Object();
params.username = username.text;
params.password = password.text;
loginCheck.send(params);
trace("end send");
}
private function doCancel():void {
username.text = "";
password.text = "";
}
private function loginHandler(event:ResultEvent):void {
var rawData:String = String(event.result);
//decode the data to ActionScript using the JSON API
//in this case, the JSON data is a serialize Array of Objects.
var arr:Array = (JSON.decode(rawData) as Array);
var dataArray:ArrayCollection = new ArrayCollection(arr);
//arraySize = dataArray.length;
// info.text = event.result.toString();
var obj:Object = JSON.decode(rawData);
if(obj.status==1){
var request:URLRequest = new URLRequest();
request.method = URLRequestMethod.GET;
request.url = "http://test.ntsky.com:8080/admin/posts.action";
// request.
var loader:URLLoader = new URLLoader();
navigateToURL(request,"_self");
}
else{
Alert.show(obj.message);
}
}
]]>
</mx:Script>
<mx:HTTPService id="loginCheck"
url="http://test.ntsky.com:8080/admin/login.action"
resultFormat="text"
result="loginHandler(event)" />
<mx:Panel x="330" y="192" width="290" height="177" layout="absolute" title="用户登录" fontSize="12" horizontalAlign="center" verticalAlign="middle">
<mx:Form x="10" y="10" width="253" height="90">
<mx:FormItem label="用户名:">
<mx:TextInput id="username"/>
</mx:FormItem>
<mx:FormItem label="密 码 :">
<mx:TextInput id="password" displayAsPassword="true"/>
</mx:FormItem>
</mx:Form>
<mx:Button x="65" y="103" label="登录" click="doLogin()"/>
<mx:Button x="144" y="103" label="取消" click="doCancel()"/>
</mx:Panel>
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalAlign="center"
verticalAlign="middle"
verticalGap="15"
horizontalGap="15">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import com.adobe.serialization.json.JSON;
import mx.controls.Alert;
[Bindable]
private var photoFeed:ArrayCollection;
private function doLogin():void {
trace("start send");
var params:Object = new Object();
params.username = username.text;
params.password = password.text;
loginCheck.send(params);
trace("end send");
}
private function doCancel():void {
username.text = "";
password.text = "";
}
private function loginHandler(event:ResultEvent):void {
var rawData:String = String(event.result);
//decode the data to ActionScript using the JSON API
//in this case, the JSON data is a serialize Array of Objects.
var arr:Array = (JSON.decode(rawData) as Array);
var dataArray:ArrayCollection = new ArrayCollection(arr);
//arraySize = dataArray.length;
// info.text = event.result.toString();
var obj:Object = JSON.decode(rawData);
if(obj.status==1){
var request:URLRequest = new URLRequest();
request.method = URLRequestMethod.GET;
request.url = "http://test.ntsky.com:8080/admin/posts.action";
// request.
var loader:URLLoader = new URLLoader();
navigateToURL(request,"_self");
}
else{
Alert.show(obj.message);
}
}
]]>
</mx:Script>
<mx:HTTPService id="loginCheck"
url="http://test.ntsky.com:8080/admin/login.action"
resultFormat="text"
result="loginHandler(event)" />
<mx:Panel x="330" y="192" width="290" height="177" layout="absolute" title="用户登录" fontSize="12" horizontalAlign="center" verticalAlign="middle">
<mx:Form x="10" y="10" width="253" height="90">
<mx:FormItem label="用户名:">
<mx:TextInput id="username"/>
</mx:FormItem>
<mx:FormItem label="密 码 :">
<mx:TextInput id="password" displayAsPassword="true"/>
</mx:FormItem>
</mx:Form>
<mx:Button x="65" y="103" label="登录" click="doLogin()"/>
<mx:Button x="144" y="103" label="取消" click="doCancel()"/>
</mx:Panel>
</mx:Application>
分享到:
相关推荐
然而,为了使Java服务器与Flex客户端能够顺利交互,我们需要在Java端设置一个支持AMF的服务器组件,如BlazeDS或GranitedDS。 1. **安装与配置BlazeDS** - 下载BlazeDS项目,解压并将其部署到你的Java应用服务器...
下面我们将详细介绍如何使用Flex4的`HTTPService`来提取XML数据: 1. **创建HTTPService实例**: 首先,我们需要在MXML文件中创建一个`HTTPService`实例,指定其URL和方法类型(GET或POST): ```xml <s:...
在探讨“flex数据交互方式”这一主题时,我们首先需要理解Flex是什么以及它在数据交互中的角色。Flex是一种用于构建和部署丰富的互联网应用程序(RIA)的开源框架,由Adobe Systems开发并维护。它使用MXML(标记语言...
Flex中的HTTPService组件提供了灵活的方式与后台进行数据交互。通过URLVariables对象或`<mx:request/>`标签,我们可以方便地传递参数给服务器。理解这两种方法对于开发Flex应用程序并与服务器进行数据交换至关重要。...
HttpService和WebService是两种常用的方式,它们允许Flex客户端与基于HTTP或Web服务接口的后端系统进行数据交换。本篇文章将深入探讨如何利用Flex 4.0中的HttpService和WebService组件与Java Struts2框架构建的...
本文将详细介绍如何使用Flex的HTTPService组件与Java服务进行交互,并获取Java端的返回值。首先,让我们了解一下Flex和Java通信的基本原理。 Flex是一款基于ActionScript 3的开源框架,用于创建富互联网应用程序...
在这个“Flex+HTTPService 例子”中,我们将探讨如何使用Flex与Java后台通过HTTPService进行数据交互。 首先,我们需要了解Flex中的HTTPService组件。HTTPService允许开发者发送HTTP请求到服务器,并接收响应数据。...
在提供的代码片段中,我们看到一个简单的Flex应用程序示例,该应用使用了HTTPService组件来与后端服务进行交互。下面是对关键部分的详细分析: #### XML定义部分 ```xml ()"/> <mx:HTTPService id=...
总结来说,Flex 4与Java的交互提供了多种方式,可以根据实际需求选择合适的方法。RemoteObject适合于AMF通信,效率高且易于使用;HTTPService适用于RESTful API或与不支持AMF的服务器交互;而WebService则用于与符合...
本文将详细介绍如何使用Flex的HttpService组件向SpringMVC应用发送XML数据,并进行交互。 一、Flex中的HttpService组件 1. 创建HttpService:在Flex项目中,通过MXML或ActionScript可以创建HttpService实例。设置...
_HTTPService组件是Flex框架中非常重要的组成部分,它为开发者提供了简单易用的方式来与Web服务进行交互。通过上述两个示例,我们不仅了解了_HTTPService的基本使用方法,还学会了如何处理响应结果并将其展示在用户...
WebService常用于跨系统、跨平台的数据共享,提供了标准化的数据交互方式。 4. **数据交互流程**:在Flex应用中,通常会创建一个HTTPService或WebService对象,配置其URL、方法和其他参数,然后定义一个事件监听器...
这是本人做的Flex4 通过HttpService与Java进行交互项目,本人测试通过。本人在此声明运行环境为:MyEclipse 8.5,JDK 6,Tomcate 6,Flex 4. 本人已经将Flex4整合到Myeclipse 8.5中去了,所以这个项目是在MyEclipse ...
综上所述,Flex4_httpService项目涵盖了Flex 4与Java Web服务交互的核心技术,包括客户端HTTPService的使用、服务端Java接口的实现以及项目配置和调试等环节。通过深入学习和实践,开发者可以熟练掌握Flex 4与后端...
总的来说,理解并掌握Flex与后台的交互方式对于开发高效、稳定的富互联网应用至关重要。无论选择HTTPService、WebService还是URLLoader,都需要结合实际需求,合理设计代码结构,确保良好的用户体验。
在开发分布式应用时,Flex和Java的交互是一个常见的需求。Flex作为前端的富互联网应用程序(RIA)框架,可以通过HTTP协议与后端服务器进行通信。在这个场景中,Flex使用`HttpService`组件向Java的Servlet发送键值对...
通过`HTTPService`,Flex可以与各种服务器端技术,如Java、PHP、ASP.NET等进行交互,实现数据的获取和提交。 2. **Java后台支持** 在Java环境下,通常使用Servlet、Spring MVC或者RESTful API来处理来自Flex的HTTP...
根据提供的标题、描述、标签及部分内容,本文将详细介绍Flex与后台进行交互的三种主要方法:通过FlashVars传递参数、利用HttpService服务以及采用URLLoader组件。这些方法在Flex开发中非常常见,对于实现数据的前后...
本教程将深入探讨Flex与Java的三种交互方式,帮助开发者更好地理解和实现跨平台的Web应用。 1. AMF(Action Message Format)交互: AMF是Adobe提供的二进制数据格式,它能高效地传输对象,特别适合于Flex和Java...