`
zfw198787
  • 浏览: 7186 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Flex使用Blazeds与Java交互及自定义对象转换详解

 
阅读更多
一、建立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+blazeds+java企业门户网站完整源码

    总之,这个“Flex+blazeds+java企业门户网站完整源码”是一个很好的学习资源,可以帮助开发者掌握如何利用Flex构建富用户体验的Web应用,并通过BlazeDS实现与Java后端的有效交互,进而构建高效、功能强大的企业级...

    Flex + blazeds + Java入门搭建与简单应用

    《Flex + BlazeDS + Java 入门搭建与简单应用详解》 在当今的Web开发领域,富互联网应用程序(Rich Internet Applications, RIA)已经成为提升用户体验的重要手段。Flex作为Adobe公司推出的RIA开发框架,搭配...

    Flex+Blazeds与Java_Web_Project整合(图解)

    《Flex+Blazeds与Java Web Project整合详解》 在当今的互联网开发中,富互联网应用(RIA)已经成为提升用户体验的重要手段。Flex作为Adobe提供的一个强大的RIA开发框架,结合Blazeds,可以实现与Java后端的无缝对接...

    flex+blazeds+java 第一个Hello程序

    《Flex + BlazeDS + Java:构建第一个“Hello”程序详解》 在IT行业中,富互联网应用程序(Rich Internet Applications,简称RIA)的开发是一项重要的技术挑战。Flex作为Adobe提供的开源框架,用于创建具有交互性和...

    flex集成blazeDS开发java web

    BlazeDS 能够与 Java 对象进行远程交互,调用 POJOs、Spring 服务和 EJB 方法,并且支持消息传递,允许双向通信。 2. AMF 协议 AMF 是一种轻量级的二进制数据格式,用于 Flash Player 和服务器之间的数据交换。与 ...

    flex+blazeDS配置指南

    《Flex+BlazeDS配置详解》 在现代Web开发中,富互联网应用程序(RIA)的交互性和用户体验成为了关键。Flex作为Adobe开发的RIA框架,以其强大的图形界面设计和丰富的交互功能受到广泛欢迎。而BlazeDS是Adobe提供的一...

    Flex与Java交互通讯视频详解

    Flex与Java交互通讯是Web开发中的一个重要话题,它涉及到客户端与服务器端的高效协同工作。Flex,作为Adobe的开源框架,主要用于构建富互联网应用程序(RIA),而Java则是一种广泛使用的后端开发语言,能提供强大的...

    Flex与java交互

    ### Flex与Java交互详解 #### 一、引言 随着技术的发展,前端开发与后端服务之间的交互变得越来越重要。Flex作为一种流行的富互联网应用程序(RIA)框架,与Java结合使用时能够实现强大的功能。本文将详细介绍如何...

    Flex Blazeds入门教程

    LCDS支持实时消息传输、对象映射、远程方法调用、PDF生成等功能,简化了Flex与后端系统的交互。虽然LCDS是商业产品,但在个人和小规模项目中有免费版本可用。 3. **Blazeds**:Blazeds是Adobe从LCDS中剥离出的开源...

    Myeclipse8.5+flex4.5+Blazeds+SSH环境搭建

    9. **配置 Blazeds**:Blazeds 的配置涉及设置 Java 远程对象(Remote Objects, RO)和消息传递服务,使 Flex 客户端能够与 Java 服务器端进行数据交换。`remoting-config.xml` 文件用于定义目的地(destination),...

    Flex之BlazeDS文档

    ### Flex之BlazeDS文档详解 #### 一、BlazeDS概述 ##### 1.1 引言 在Flex开发中,与服务器进行通信是非常重要的环节。传统的HTTPService、WebService、URLLoader及FileReference等组件虽然能够实现基本的通信功能...

    MyEclipse 8.5+Flex+BlazeDs通信

    【MyEclipse 8.5 + Flex + BlazeDs 通信详解】 在开发富互联网应用程序(RIA)时,MyEclipse 8.5、Adobe Flex 和 BlazeDs 的组合是一种常见的技术选择。MyEclipse 是一个强大的集成开发环境(IDE),特别适合于 ...

    flex+blazeds搭建环境步骤

    ### 搭建Flex与BlazeDS环境的步骤详解 #### 步骤一:下载并配置BlazeDS - **下载BlazeDS.war包**:首先,需要从Adobe官方网站或其他可信赖的资源下载BlazeDS的war文件。 - **放置war包**:将下载的war文件放置于...

    Flex+Blazeds与J2ee整合

    ### Flex+Blazeds与J2ee整合 #### 背景介绍 随着技术的发展,企业级应用开发中,前端与后端之间的交互变得尤为重要。Adobe Flex作为一种强大的RIA(Rich Internet Applications)技术,允许开发者创建丰富的用户...

Global site tag (gtag.js) - Google Analytics