http://www.cnblogs.com/RocD-DuPeng/articles/1751040.html

一、建立Flex与Java交互的工程。

  本文中讲到的交互是利用Blazeds的,因为这个是免费的,呵呵,我是穷人。

  首先就是去下载Blazeds的压缩包,这个可以从官网或者CSDN、JavaEye上下到。解压缩这个包,将里面的Blazeds.war解压,后面建立工程时要使用。

  在MyEclipse中建立一个web工程,名为FlexTest。(注意:这个工程的JDK一定是1.5或以上版本,本文使用6.0)

  将刚才解压的Blazeds.war包中的“META-INF”与“WEB-INF”文件夹以及文件夹中的内容拷贝到工程的WebRoot下。WEB-INF中包含有Flex的配置文件以及Blazeds需要的Jar包。这时我们就可以在这个工程中写入Java代码了。本文以一个用户列表为例,建立用户实体类。代码如下:

代码

 1 package com.rocd.flex.entity;
2
3  import java.io.Serializable;
4
5 public class UserBean implements Serializable {
6 private String userName;
7 private String password;
8 private int age;
9 private String email;
10
11 public String getUserName() {
12 return userName;
13 }
14
15 public void setUserName(String userName) {
16 this.userName = userName;
17 }
18
19 public String getPassword() {
20 return password;
21 }
22
23 public void setPassword(String password) {
24 this.password = password;
25 }
26
27 public int getAge() {
28 return age;
29 }
30
31 public void setAge(int age) {
32 this.age = age;
33 }
34
35 public String getEmail() {
36 return email;
37 }
38
39 public void setEmail(String email) {
40 this.email = email;
41 }
42 }
43

  注意,由于这个实体类需要当做Java代码中方法的返回值传递给Flex中的AS代码,所以需要继承Serializable接口,否则将导致异常的发生。

  然后,在建立一个供Flex调用的Java类。代码如下

代码

 1 package com.rocd.flex.biz;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.rocd.flex.entity.UserBean;
7
8 public class UserManager {
9 public List<UserBean> getUserList() {
10 List<UserBean> list = new ArrayList<UserBean>();
11 for (int i = 0; i < 10; i++) {
12 UserBean user = new UserBean();
13 user.setUserName("用户" + i);
14 user.setPassword("123");
15 user.setAge(20 + i);
16 user.setEmail("user" + i + "@aaa.com");
17 list.add(user);
18 }
19 return list;
20 }
21 }
22

  这里就不连接数据库去操作了,因为本文重点放在Flex调用Java上,所以写个桩数据用以测试。

  写完了这两个类,就需要在WebRoot/WEB-INF/flex/remoting-config.xml中配置用以调用这个Java类的信道了。具体代码如下:

代码

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <service id="remoting-service"
3 class="flex.messaging.services.RemotingService">
4 <adapters>
5 <adapter-definition id="java-object"
6 class="flex.messaging.services.remoting.adapters.JavaAdapter"
7 default="true"/>
8 </adapters>
9 <default-channels>
10 <channel ref="my-amf"/>
11 </default-channels>
12 <destination id="UserManager">
13 <properties>
14 <source>com.rocd.flex.biz.UserManager</source>
15 </properties>
16 </destination>
17 </service>

  其中destination就是信道,properties是可以配置多个Java类,source是配置要调用Java类的包路径。

  到此,Java部分的代码就写完了。下面是Flex中的代码。

  在Flex Builder中创建一个Flex工程。名称为FlexApp。如图所示

  注意Project Location的Folder要选择MyEclipse建立的Web工程的WebRoot下。Server technology选择J2EE
点击[Next]按钮进入下一页。如图

  注意Server location中Root folder要选择Java Web工程的WebRoot路径。Root URL是Java web工程的访问路径,由于使用的是Tomcat服务器,工程名为FlexTest,所以路径是http://localhost:8080/FlexTest/,而
Context root则是Java Web项目的工程名。完成后点击那个[Validate Configuration]进行验证,如果窗口上方显示如上图所示的“黄三角”就说明可以进行下一步操作了。

  顺利建立完Flex工程后,需要注意是否报错,如果报错,请注意调整Flex SDK的版本。

  没问题后,就要创建一个AS的类,用来接收Java程序的返回值了,也就是那个UserBean。代码如下:

代码

package com.rocd.flex.entity
{
[Bindable]
[RemoteClass(alias="com.rocd.flex.entity.UserBean")]
public class UserBean
{
public var userName:String;
public var password:String;
public var age:int;
public var email:String;
}
}

  这里[Bindable]是可绑定的,[RemoteClass(alias="com.rocd.flex.entity.UserBean")]是和Java代码中的UserBean类关联起来。这样就可以利用类型转换来将Java对象转换为AS对象了。

  现在让我们在Flex中调用这个Java代码吧。代码如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
3 fontSize="12" initialize="init()">
4 <mx:Script>
5 <![CDATA[
6 import com.rocd.flex.entity.UserBean;
7 import mx.collections.ArrayCollection;
8 import mx.rpc.events.ResultEvent;
9
10 private function init():void
11 {
12 UserManager.getUserList();
13 UserManager.addEventListener(ResultEvent.RESULT,getUserList);
14 }
15
16 private function getUserList(event:ResultEvent):void
17 {
18 var userList:ArrayCollection = ArrayCollection(event.result);
19 var userList_FlexData:ArrayCollection = new ArrayCollection();
20 for (var i:int = 0; i < userList.length; i++)
21 {
22 var user:UserBean = UserBean(userList.getItemAt(i));
23 userList_FlexData.addItem(user);
24 }
25 dataGrid.dataProvider = userList_FlexData;
26 }
27 ]]>
28 </mx:Script>
29 <mx:RemoteObject id="UserManager" destination="UserManager"
30 showBusyCursor="true" />
31
32 <mx:Panel x="32" y="20" width="399" height="285" layout="absolute" title="用户列表">
33 <mx:DataGrid x="0" y="0" width="379" height="243" id="dataGrid">
34 <mx:columns>
35 <mx:DataGridColumn headerText="用户名" dataField="userName"/>
36 <mx:DataGridColumn headerText="年龄" dataField="age"/>
37 <mx:DataGridColumn headerText="Email" dataField="email"/>
38 </mx:columns>
39 </mx:DataGrid>
40 </mx:Panel>
41 </mx:Application>
42

  启动Tomcat服务器后运行这个Flex程序,如下图所示:

  我对Flex与Java交互这块还不是很熟悉,所以有什么不对的地方,或者有更简单的方式,请大家给出建议。

 
 
标签: FlexJavaBlazeds

Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据的更多相关文章

  1. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  2. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  3. 【转】Java魔法堂:String.format详解

    Java魔法堂:String.format详解     目录     一.前言    二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六. ...

  4. java线程池的使用与详解

    java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html   ...

  5. BaseAdapter自定义适配器——思路详解

    BaseAdapter自定义适配器——思路详解 引言: Adapter用来把数据绑定到扩展了AdapterView类的视图组.系统自带了几个原生的Adapter. 由于原生的Adapter视图功能太少 ...

  6. Java 反射 设计模式 动态代理机制详解 [ 转载 ]

    Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...

  7. Java 中的异常和处理详解

    Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...

  8. java程序运行时内存分配详解

    java程序运行时内存分配详解 这篇文章主要介绍了java程序运行时内存分配详解 ,需要的朋友可以参考下   一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个 ...

  9. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

随机推荐

  1. 简单配置和使用Maven

    1,下载Maven 从:https://maven.apache.org/download.cgi 其实两个都一样, 2,安装过程 解压你下载的包,随意放哪里都可以 ,假设 我放在了 D:\JavaT ...

  2. AT指令获取基站信息

    AT+CREG 网络注册和漫游    命令发送(command):     AT+CREG=<mode>     命令响应(Response):     +CREG :<mode&g ...

  3. Chrome Devtools简介

    Chrome开发工具(又称DevTools),是一套内嵌在chrome浏览器内部的web编写和调试工具.DevTools提供给web开发人员深入地访问浏览器内部和web应用的机会.DevTools可以 ...

  4. MSSQL-实用小工具

    1.创建查询辅助表 create table nums (n int not null) alter table nums add constraint PK_NUMS primary key clu ...

  5. ecstore-lnmp环境下crontab不执行原因

    因为lnmp.org默认禁止了proc_open函数,需要开启 开启后 lnmp restart ==== contab还是用crontab -e好,有些用www用户的似乎执行不了

  6. Effective Java学习笔记

    创建和销毁对象 第一条:考虑用静态工厂方法替代构造器 For example: public static Boolean valueOf(boolean b){ return b ? Boolean ...

  7. DHTMLX-Grid

    DHTMLX - Grid 介绍 dhtmlxGrid是一个灵活的.易于使用的JavaScript网格组件,可以创建DHTML表与丰富的编辑- sensing,固定的多行页眉和页脚,可调整大小的.可拖 ...

  8. C指针详解(经典,非常详细)

    前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优 ...

  9. 快速开发一个PHP电影爬虫

    今天来做一个PHP电影小爬虫.我们来利用simple_html_dom的采集数据实例,这是一个PHP的库,上手很容易.simple_html_dom 可以很好的帮助我们利用php解析html文档.通过 ...

  10. 错误: 未能从 xmlsocket://127.0.0.1:5840 中加载策略文件

    看看你是否使用了MonsterDebugger,如果是这样的话, 因为那个 MonsterDebugger 没有启动 删掉MonsterDebugger的代码吧