转载: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>
分享到:
相关推荐
下面我们将详细介绍如何使用Flex4的`HTTPService`来提取XML数据: 1. **创建HTTPService实例**: 首先,我们需要在MXML文件中创建一个`HTTPService`实例,指定其URL和方法类型(GET或POST): ```xml <s:...
HttpService和WebService是两种常用的方式,它们允许Flex客户端与基于HTTP或Web服务接口的后端系统进行数据交换。本篇文章将深入探讨如何利用Flex 4.0中的HttpService和WebService组件与Java Struts2框架构建的...
在这个“Flex+HTTPService 例子”中,我们将探讨如何使用Flex与Java后台通过HTTPService进行数据交互。 首先,我们需要了解Flex中的HTTPService组件。HTTPService允许开发者发送HTTP请求到服务器,并接收响应数据。...
flex 与后台交互 httpservice 实例
总结来说,Flex 4与Java的交互提供了多种方式,可以根据实际需求选择合适的方法。RemoteObject适合于AMF通信,效率高且易于使用;HTTPService适用于RESTful API或与不支持AMF的服务器交互;而WebService则用于与符合...
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,都需要结合实际需求,合理设计代码结构,确保良好的用户体验。
通过`HTTPService`,Flex可以与各种服务器端技术,如Java、PHP、ASP.NET等进行交互,实现数据的获取和提交。 2. **Java后台支持** 在Java环境下,通常使用Servlet、Spring MVC或者RESTful API来处理来自Flex的HTTP...
Flex 使用HttpService组件发送XML数据与java交互 例子+文档
本教程将深入探讨Flex与Java的三种交互方式,帮助开发者更好地理解和实现跨平台的Web应用。 1. AMF(Action Message Format)交互: AMF是Adobe提供的二进制数据格式,它能高效地传输对象,特别适合于Flex和Java...
在Flex开发中,XML文件常被用作数据存储和传输的格式,因为...理解这些核心概念和API,对于开发Flex应用程序,尤其是涉及数据交互的项目至关重要。通过灵活运用,你可以构建出高效、可靠的Flex应用来处理各种XML数据。
Java和Flex之间的交互是开发富互联网应用程序(RIA)时常用的一种技术组合。Flex是一种用于构建交互式用户界面的开源框架,通常用于客户端,而Java...了解并掌握这种交互方式对于提升Web应用的性能和用户体验至关重要。
4. **Flex与Java交互**:Flex应用可以通过HTTPService、WebService、Remoting等方法与Java后台进行数据交互。AMF通道是Flex与Java集成的常用方式,因为AMF可以大大减少网络传输的数据量和提高性能。在Java端,可以...
首先,HTTPService是最基础的交互方式,它基于HTTP协议,使用GET和POST方法来传输数据,类似于传统的Web表单提交。由于其通用性强,几乎所有的Web服务器都能支持。HTTPService的优点在于其简单易用,传输的数据量较...
而AMF(Action Message Format)通道则提供更高效的数据交换方式,适合于Flex与基于Adobe BlazeDS或LCDS的服务器之间进行数据交互。 本Flex工程"flexDemo"包含了一个完整的交互实例,可能包括以下几个关键部分: 1...
Flex中的HTTPService是Flex应用程序与后端服务器进行通信的一种方式,尤其适用于与Java服务交互。在选择使用HTTPService还是BlazeDS的Remote Object时,主要考虑的是灵活性和效率。Remote Object提供了更便捷的对象...
总结来说,HTTPService是Flex中一个强大且灵活的工具,它简化了客户端与服务器之间的数据交互。熟练掌握其用法,能有效提升你的Flex应用功能和用户体验。通过实际操作和实践,你可以进一步了解和掌握HTTPService的更...