flex java oracle_Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据...

一、建立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代码了。本文以一个用户列表为例,建立用户实体类。代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

961ddebeb323a10fe0623af514929fc1.png代码

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

961ddebeb323a10fe0623af514929fc1.png代码

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 getUserList() {

10 List list = new ArrayList();

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

961ddebeb323a10fe0623af514929fc1.png代码

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 class="flex.messaging.services.RemotingService">

4

5

6 class="flex.messaging.services.remoting.adapters.JavaAdapter"

7 default="true"/>

8

9

10

11

12

13

14 com.rocd.flex.biz.UserManager

15

16

17

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

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

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

06c8bfd004d70854ac3d5983099c3b72.png

注意Project Location的Folder要选择MyEclipse建立的Web工程的WebRoot下。Server technology选择J2EE

点击[Next]按钮进入下一页。如图

2d9204318b6ddb1f1fe0763022ebfd5d.png

注意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。代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

961ddebeb323a10fe0623af514929fc1.png代码

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;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 <?xml version="1.0" encoding="utf-8"?>

2

3 fontSize="12" initialize="init()">

4

5

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

29

30 showBusyCursor="true" />

31

32

33

34

35

36

37

38

39

40

41

42

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

04d61613a38bcfac1617184305982fed.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java重定向cookie_response请求转发和重定向,cookie

一.response:响应对象 提供的方法: void addCookie(Cookie cookie);服务端向客户端增加一个cookie对象 void sendRedirect(String location) throws IOExcetion:页面跳转的一种方法 void setContentType(String type):设置服务端响应的编码 示例重定向: login.jsp—->che…

linux java 文件夹创建失败_Linux文件夹文件创建、删除

Linux删除文件夹命令linux删除目录很简单&#xff0c;很多人还是习惯用rmdir&#xff0c;不过一旦目录非空&#xff0c;就陷入深深的苦恼之中&#xff0c;现在使用rm -rf命令即可。直接rm就可以了&#xff0c;不过要加两个参数-rf 即&#xff1a;rm -rf 目录名字删除目录、文件…

python zip函数转制_Python zip函数及用法

zip() 函数是 Python 内置函数之一&#xff0c;它可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。所谓“压缩”&#xff0c;其实就是将这些序列中对应位置的元素重新组合&#xff0c;生成一个个新的元组。和 Python 3.x …

python中sin函数在哪个模块中_python标准库math中sin函数的参数单位是角度吗_弧度 - math.h中的三角函数,参数是...

在数学和物理中&#xff0c;弧度是角的度量单位。它是由国际单位制导出的单位&#xff0c;单位缩写是rad。定义1&#xff1a;弧长等于半径的弧&#xff0c;其所对的圆心角为1弧度。(即两条射线从圆心向圆周射出&#xff0c;形成一个夹角和夹角正对的一段弧。当这段弧长正好等于…

java jvm 加载_Jvm是如何加载Java类的?

前言我们知道Java语言的类型可以分为两大类:基本类型「primitive types」和引用类型「reference types」.对于Java的基本数据类型是Java虚拟机定义好的.至于另一大类「引用数据类型」, Java将其分为四种类型:类接口数组泛型参数由于「泛型参数」在编译时期会被擦除, 因此Java虚…

python查找文件内容_python自定义查找文件内容

#!/usr/bin/env python#coding:utf8#此脚本为查找递归目录下所有文件匹配的内容import os,sys,tabdef paths(path):list_pathos.walk(path)all_file[]for p,d,fl in list_path:for f in fl:pfileos.path.join(p,f)if os.path.isdir(pfile):paths(pfile)all_file.append(pfile)r…

derby mysql 同步_[Derby]数据库操作说明

1. 创建新数据库connect jdbc:derby:mydb;createtrue;ij> connect jdbc:derby:mydb;createtrue;ij>将在当前目录下建立数据库目录 mydb;如果已经存在数据库 mydb,则提示&#xff1a;警告 01J01&#xff1a;未创建数据库"mydb"&#xff0c;而是建立到现有数据库…

lfu算法实现java_LFU五种实现方式,从简单到复杂

前言最近刷力扣题&#xff0c;对于我这种 0 基础来说&#xff0c;真的是脑壳疼啊。这个月我估计都是中等和困难题&#xff0c;没有简单题了。幸好&#xff0c;力扣上有各种大牛给写题解。看着他们行云流水的代码&#xff0c;真的是羡慕不已。让我印象最深刻的就是人称 “甜姨”…

java控制台高级_K9s Kubernetes的高级控制台

K9s Kubernetes CLI&#xff0c;以个性化方式管理您的集群&#xff01;参考&#xff1a;Why K9s&#xff1f;首先我们得面对现实——Kubernetes及其周边生态系统的运营方式正变得越来越复杂。集群管理需要大量工具加以配合。当我在集群之上进行日常运营时&#xff0c;和大家一样…

java redis id生成器_基于redis的分布式ID生成器

项目地址基于redis的分布式ID生成器。准备首先&#xff0c;要知道redis的EVAL&#xff0c;EVALSHA命令&#xff1a;原理利用redis的lua脚本执行功能&#xff0c;在每个节点上通过lua脚本生成唯一ID。生成的ID是64位的&#xff1a;使用41 bit来存放时间&#xff0c;精确到毫秒&a…

Java自动切表_java_Mybatis自动创建表和更新表结构,最近有小伙伴问我mybatis有没有 - phpStudy...

Mybatis自动创建表和更新表结构最近有小伙伴问我mybatis有没有自动创建表结构的功能&#xff0c;因为他们之前一直使用hibernate用习惯了&#xff0c;理所当然的认为&#xff0c;在实体类上配置下注解或者写写映射文件&#xff0c;系统启动后就可以自动创建表。我只能很遗憾的告…

java byte 正数最大_关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)...

先看一段推理124:0111 1100  -124:1000 0100125:0111 1101  -125:1000 0011126:0111 1110  -126:1000 0010127:0111 1111  -127:1000 0001128:0 1000 0000 -128:1000 0000从上述过程对比可以看出:128是在127的基础上加1得到,但是会造成溢出(java中byte的大小为一个字…

java不同类间调用数组_请问:JAVA中两个类中的方法都需要调用另一个类的数组进行对数组的初始化和调用。...

匿名用户1级2013-09-14 回答import java.util.ArrayList;import java.util.Iterator;import java.util.List;/*** 测试类* author Administrator**/public class Test02 {public static void main(String[] args) {MovieStore movieStore new MovieStore();DVDManage.initDVD(…

java函数只有参数类不一样_java的函数参数传递

java中只有一种参数传递方式&#xff1a;传值&#xff1b;这点和c不一样&#xff0c;c中有传值和引用两种方式。虽然java只有传值这一种传递方式&#xff0c;但是根据参数类型的不同&#xff0c;函数对参数的影响也会不一样。可以这么说&#xff1a;形参是实参的一份拷贝&#…

java缓存回收_java缓存应用 - 阿亮ing的个人空间 - OSCHINA - 中文开源技术交流社区...

缓存回收策略1.基于空间设置缓存的存储空间&#xff0c;超过容量限制按照一定的规则去移除。2.基于容量当缓存条数超过规定容量按照一定的规则去移除旧数据。3.基于时间(存活时间空闲时间)TTl(Time To Live):存活期&#xff0c;缓存数据最后更新时间到指定时间如果没有更新或创…

java mvc中重复提交_SpringMVC之——防止重复提交表单的方法(一)

这篇博文介绍第一种方法&#xff1a;判断session或其他缓存中保存的token&#xff0c;这里以session为例&#xff0c;具体大家也可以自行扩展以其他的缓存实现。这种方式比较麻烦&#xff0c;每次在提交表单时都必须传入上次的token。而且当一个页面使用ajax时&#xff0c;多个…

三层加过的注释java_spring框架中三层架构相关的注解

做了这么多年的C&#xff0c;再去学Java&#xff0c;确实发现&#xff0c;语言都是相通的&#xff0c;即使是Java的那么多生态&#xff0c;理解起来也并不费劲Spring 框架目前还在学习中&#xff0c;处于 Tourist 阶段&#xff0c;目前只求会做&#xff0c;不求原理&#xff0c…

尤其是java程序员(转载)_JAVA程序员 学习任务(转载)

1. 你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF&#xff0c;J2EEDP)以及综合模式。你应该了解UML&#xff0c;尤其是class、object、interaction以及statediagrams。2. 你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、networki…

java setfilter_Java – setFileFilter问题

我正在JFileChooser上构建一个JFileFilter,但是如果我有代码setFileFilter并且我的IDE提供了信息’JFileChooser类型中的方法setFileFilter(FileFilter)不适用于参数(new FileFilter(){},则会发生错误)”.不过我确信我之前已经用这种格式完成了它并且一切都很好.任何人都可以帮…

mysql指南_MySQL入门指南

MySQL入门指南,希望对大家用处&#xff01;&#xff01;一、SQL速成以下是一些重要的SQL快速参考&#xff0c;有关SQL的语法和在标准SQL上增加的特性&#xff0c;请查询MySQL手册。1&#xff0e;创建表表是数据库的最基本元素之一&#xff0c;表与表之间可以相互独立&#xff0…