转载: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>
分享到:
相关推荐
flex通过Http和WebService与服务器通信交互,交互后台采用java的Struts2做为处理后台.
flex 与后台交互 httpservice 实例
这是本人做的Flex4 通过HttpService与Java进行交互项目,本人测试通过。本人在此声明运行环境为:MyEclipse 8.5,JDK 6,Tomcate 6,Flex 4. 本人已经将Flex4整合到Myeclipse 8.5中去了,所以这个项目是在MyEclipse ...
Flex 使用HttpService组件发送XML数据与java交互 例子+文档
纯flex网站前台,通过httpservice、webservice进行数据交互
Flex与后台交互的方法_HTTPService_WebService_URLLoader
flex与后台交互的几种方法的代码。包括httpservice以及webservice的两种方式。
flex4出来一段时间了,去年看了一段时间flex3,后来由于暂时没有项目需求.所以flex遗忘了很多.这次使用flex4+myeclipse8.5录制了一个视频.... 2 flex 与服务器交互HTTPService 3 flex与webservice交互WebService
两天在考虑flex与后端java服务交互的问题。在采用BlazeDS的Remote Object方式,还是传统的http service方式之间徘徊了一段时间
主要介绍了使用flex中的httpservice方法与java进行交互,需要的朋友可以参考下
flexdemo示例有兴趣可以看看 1 flex 与普通java类通信RemoteObject 2 flex 与服务器交互HTTPService 3 flex与webservice交互WebService
使用的是<mx:HttpService>给后台传递数据的方法。 本文开发使用的软件: Flex3-eclipse plugin Tomcat 6.0 Microsoft access 2003 Eclipse 3.3 各个软件的安装和使用这里就不介绍了。
flex与服务器交互HTTPService; flex与webservice交互WebService。 当大家尝试使用flex与普通java类通信时,一般用RemoteObject,具体的代码段如下: package com.flex.demo; /** *第一种 功能描述:...
5.1 与HTTPService交互 30 5.2 与WEBService交互 30 5.2.1WebService简介 30 5.2.2 Flex访问WebService 32 6 BlazeDS与服务端通信 33 6.1什么是BlazeDS 33 6.2配置BlazeDS,并使之正常运作 34 6.3创建一个Java项目,...
这种方法的优点是易于使用,适用于数据量不是很大的情况,因此一般较简单的 Flex 应用都采用这种交互方式。然而,缺点是效率不是很高,在数据量较大时表现比较明显。 Webservice Webservice 是一种基于 SOAP 协议...
过年期间抽空在弄flex前端对象与后端java对象利用httpservice交互的问题。比如前端需要user list数据,构造了flex user object类。
相关技术:通过Httpservice传输技术达到flex与asp.Net交互 大家也可以通过httpservice做数据交换,就看个人爱好了, 这是最底层的数据交换也是现在乃至以后最流行的数据交换 尤其是webservice,和httpservice用法...
3.2 节通过百分比方式配置容器的布局和尺寸 3.3节. 以不同的坐标系统跟踪鼠标位置 3.4 节在容器中动态添加和移除子组件 3.5 节对容器使用基于约束的布局 3.6 节在容器内为子组件设置最大、最小尺寸 3.7 节为容器...
Flex可以使用HTTPService、WebService或RemoteObject与后台语言交互,例如使用HTTPService从服务器获取数据,使用WebService调用远程方法,使用RemoteObject与服务器进行实时通信。 10. AS3事件机制 AS3事件机制...