`
uuuufkue
  • 浏览: 3358 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

使用BlazeDS实现Java和Flex通信之hello world

阅读更多

 

新的项目对用户体验及用户互动要求较高,决定选用Flex作为前端的展现技术,整体框架仍然是Flex+Spring+Hibernate(考虑采用seam中)。作为入门,先从经典的Hello world开始,暂时不考虑Flex与Spring、Hibernate的集成。

Flex要实现与Java集成,开源项目BlazeDSGraniteDSFlamingo都提供了相应的解决方案,考虑到BlazeDS是Adobe官方的开源项目,因此采用BlazeDs作为Flex与Java通信的基础框架。什么是BlazeDS呢,看看官方的介绍:

BlazeDS is the server-based Java remoting and web messaging technology that enables developers to easily connect to back-end distributed data and push data in real-time to Adobe® Flex® and Adobe AIR™ applications for more responsive rich Internet application (RIA) experiences.

开发工具采用Eclipse+Flex Builder 3 Plug-in方式,不采用Flex Builder 3。先安装Eclipse,再安装Flex Builder 3 Plug-in,相关的安装配置不再赘述。

1、下载BlazeDS

下载BlazeDS Turnkey :http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip

由于BlazeDS Turnkey中包含BlazeDS的使用例子,对于入门熟悉Flex及BlazeDS都有较好的参考价值,因此建议下载BlazeDS Turnkey。

关于blazeds-turnkey 的目录说明:

docs:BlazeDS Javadoc

resources:BlazeDS的相关支持包,包括clustering(采用jgroups)、BlazeDS与ColdFusion 集成的配置文件、BlazeDS的配置文件、BlazeDS与AJAX集成的桥、Flex的SDK、Flex的java library、BlazeDS与Tomcat、Jboss、Websphere等security集成的支持包。

sampledb:hsqldb的启动脚本及样例数据库

tomcat:Tomcat 包

blazeds.war:最小化的BlazeDS 文件,可以作为空白项目来建立BlazeDS 应用程序。

sample.war:BlazeDS的demo例子(所谓的testdrive)。

ds-console.war :BlazeDS的部署管理程序。

2、建立Java Web Project

File->New->Web Project 建立Java helloworld项目

blazeds1 在helloworld/src下,新建com.yeeach.HelloWorldService类,内容如下:

package com.yeeach;

public class HelloWorldService {
public String hello(String var1) {
return “hello ” + var1;
}
public String world(String var1) {
return “world ” + var1;
}
}

3、建立helloworld的BlazeDS开发环境

3.1、拷贝blazeds.war下的WEB-INF到helloworld的目录下,覆盖原有的WEB-INF

3.2、在helloworld下建立flex-src目录(与src同级),用于存放flex的相关代码

blazeds2 helloworld/src:用于存放项目的java代码

helloworld/flex-src:用于存放项目flex的相关代码

helloworld/WebRoot/WEB-INF/flex:存放flex的相关配置文件

3.3、设置Flex Project Nature

blazeds3

blazeds4

blazeds5

3.4、在helloworld/flex-src下,新建MXML Application :helloworld.mxml  ,内容如下:

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”
http://www.adobe.com/2006/mxml”
layout=”vertical”>
<mx:RemoteObject destination=”com.yeeach.HelloWorldService”
id=”helloWorldService”>
<mx:method name=”hello”
result=”sayHelloResult(event)”/>
<mx:method name=”world”
result=”sayWorldResult(event)”/>
</mx:RemoteObject>
<mx:HBox>
<mx:Label text=”输入:”/>
<mx:TextInput id=”inputStr”/>
<mx:Button label=”say hello”
click=”sayHello(event);”/>
<mx:Button label=”say world”
click=”sayWorld(event);”/>
</mx:HBox>
<mx:HBox>
<mx:Label text=”结果:”/>
<mx:TextArea id=”result”/>
</mx:HBox>

<mx:Script>

<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;

function sayHello(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.hello(inputVar);

}

function sayWorld(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.world(inputVar);

}

private function sayHelloResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}

private function sayWorldResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
]]>
</mx:Script>
</mx:Application>

3.5、修改remoting-config.xml,增加对destination的说明

<destination id=”com.yeeach.HelloWorldService”>
<properties>
<source>com.yeeach.HelloWorldService</source>
</properties>
</destination>

3.6、设置Flex Build Path等相关属性

1)右键->Properties,设置Flex Build Path属性,将Main source folder修改为flex-src,然后点击“OK”

2)右键->Properties,设置Flex Applications属性,添加flex-src下的其他Application,然后点击“OK”

如果需要添加flex-src子目录下的其他Application(例如helloworld/flex-src/com/yeeach/helloworld1.mxml),目前从UI界面似乎无法正确添加,可以直接修改.actionScriptProperties,在<applications></applications>中间增加相应的Application

<applications>
<application path=”helloworld.mxml”/>

<application path=”com/yeeach.com/helloworld1.mxml”/>
</applications>

3)右键->Properties,设置Flex Compiler属性,将Flex SDK version 修改为“Use default”或“Use a specific SDK”,指向正确的Flex SDK;确认“Additional compiler arguments”配置参数正确,然后点击“OK”

blazeds6 4)右键->Properties,设置Flex Server属性,配置为正确的参数,然后点击“OK”

blazeds7

3.7、部署helloworld 应用到Tomcat

通过http://127.0.0.1:8080/helloworld/helloworld.swf来访问我们的hello world

3.8、分析helloworld.mxml

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”
http://www.adobe.com/2006/mxml”
layout=”vertical”>
<mx:RemoteObject destination=”com.yeeach.HelloWorldService”
id=”helloWorldService”>

//此处的destination=”com.yeeach.HelloWorldService”与remoting-config.xml中的id=”com.yeeach.HelloWorldService”完全匹配

//id=”helloWorldService”用来在actionscript中标识destination=”com.yeeach.HelloWorldService”,后面的helloWorldService.hello(inputVar)等都使用此id;

<mx:method name=”hello”
result=”sayHelloResult(event)”/>

//mx:method 声明java类com.yeeah.com.HelloWorldService中的hello方法及响应结果回调函数sayHelloResult
<mx:method name=”world”
result=”sayWorldResult(event)”/>
</mx:RemoteObject>
<mx:HBox>
<mx:Label text=”输入:”/>
<mx:TextInput id=”inputStr”/>
<mx:Button label=”say hello”
click=”sayHello(event);”/>
<mx:Button label=”say world”
click=”sayWorld(event);”/>
</mx:HBox>
<mx:HBox>
<mx:Label text=”结果:”/>
<mx:TextArea id=”result”/>
</mx:HBox>

<mx:Script>

<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;

function sayHello(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.hello(inputVar);

}

function sayWorld(event:Event):void
{
var inputVar:String=inputStr.text;
helloWorldService.world(inputVar);

}

private function sayHelloResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}

private function sayWorldResult(event:ResultEvent):void
{
result.text=event.result.toString();
Alert.show(event.result.toString(), "返回结果");
}
]]>
</mx:Script>
</mx:Application>

分享到:
评论

相关推荐

    使用BlazeDS实现Java和Flex通信

    ### 使用BlazeDS实现Java和Flex通信 #### 一、BlazeDS简介 BlazeDS是一种基于服务器端的Java远程调用(Remoting)及Web...总之,使用BlazeDS可以有效提升RIA应用的性能和用户体验,是连接Java与Flex的有力工具之一。

    用BlazeDS实现Java和Flex通信

    ### 使用BlazeDS实现Java与Flex通信的关键知识点 #### 一、引言 随着Web技术的发展,前后端的通信方式也变得越来越多样化。其中,Flex作为一种流行的应用开发框架,经常被用于构建丰富的互联网应用程序(RIA)。...

    Java+Flex+BlazeDS HelloWorld例子

    这篇名为"Java+Flex+BlazeDS HelloWorld例子"的博客文章,很可能是对如何使用这些技术进行基本的示例演示。通过阅读这篇文章,我们可以学习到如何配置和运行一个简单的Java和Flex应用,以及BlazeDS在其中的角色。 1...

    Flex和java通信之 helloworld

    ### Flex和Java通信之 HelloWorld 实现详解 #### 一、背景与目的 随着现代Web应用对用户体验和交互性的要求不断提高,选择合适的技术栈至关重要。在众多前端技术中,Flex 因其丰富的图形处理能力和良好的跨平台...

    Flex与Java通信采用blazeDS的方式的例子helloworld

    总结,这个“Hello, World”例子展示了Flex与Java通信的基本流程:在Flex中通过RemoteObject调用Java服务,Java服务返回数据,BlazeDS负责数据的传输和转换。实际开发中,我们可以将此模式扩展到更复杂的数据交换...

    BlazeDS 整合 Flex HelloWorld 示例

    BlazeDS 整合 Flex HelloWorld 示例是一个初学者入门教程,主要介绍了如何在JavaEE环境中集成BlazeDS和Flex,创建一个简单的远程调用服务。BlazeDS是一个开源项目,提供了与Adobe Flex之间的实时数据交互,使得Flex...

    flex3集成BlazeDS的HelloWorld

    此外,"Flex3与BlazeDS HelloWorld 详解.doc"可能是提供更详细步骤和解释的文档,包括如何配置BlazeDS、创建Flex3应用、编写服务器端代码,以及如何调试和解决可能出现的问题。而"blazedsServerApp"可能是一个示例...

    flex+blazeds+java 第一个Hello程序

    我们的目标是创建一个简单的“Hello, World”程序,展示Flex、BlazeDS和Java如何协同工作。首先,我们需要设置开发环境,包括安装Flex SDK、配置IDE(如Flash Builder或IntelliJ IDEA)、下载并部署BlazeDS服务。 4...

    Flex通过BlazeDS与JAVA通信之HelloWord(图解)

    在本文中,我们将探讨如何使用Flex通过BlazeDS与Java进行通信,并以“HelloWorld”为例进行详细步骤的解析。Flex是一种用于构建富互联网应用程序(RIA)的框架,而BlazeDS是Adobe提供的一个开放源代码服务器端技术,...

    Flex通过BlazeDS与JAVA通信

    通过配置 BlazeDS、编写 Java 服务以及在 Flex 中设置 RemoteObject,你可以构建出复杂的富互联网应用程序(RIA),实现客户端和服务器之间的双向通信。这个简单的 "HelloWorld" 示例展示了基础的设置步骤,为更复杂...

    用一个HelloWorld例子手把手教会你使用FLEX BlazeDS

    ### 使用HelloWorld示例详解FLEX BlazeDS应用开发 #### 一、BlazeDS简介 BlazeDS是一款由Adobe开源的服务器端Java技术,主要用于实现Java应用程序与运行在客户端(如浏览器中的Flex应用)之间的远程调用和消息传递...

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    BlazeDS 是一款开源的服务器端技术,由 Adobe 提供,主要用于实现 Java 应用程序与 Flex 客户端之间的通信。它利用 AMF(Action Message Format)协议,这是一种二进制格式,相比基于文本的协议如 XML,AMF 提供了更...

    flex与java通过BlazeDs进行交互

    BlazeDS是一个开源项目,由Adobe提供,它充当了Flex客户端和Java后端服务器之间的通信桥梁。BlazeDS允许双向数据交换,使得Flex UI能够实时更新后端数据,并将后端服务的功能暴露给Flex应用。 在配置Flex与Java通过...

    java与flex通信

    使用Flex的`mx:RemoteObject`组件,指定目的地(destination)为之前在Java端配置的`hello`,这样就可以在Flex MXML代码中直接调用`HelloWorld`类的`sayHello()`方法。同时,需要编写处理结果的回调函数,将服务器...

    blazeDS war包及Flex结合blazeDS的入门程序

    它能够实现Java应用服务器和Flex客户端之间的通信,通过AMF(Action Message Format)协议来简化数据交换过程。BlazeDS可以作为一个独立的应用运行在任何支持Servlet容器的服务器上,例如Tomcat。 #### 二、安装与...

    java+flex+blazeds配合例子

    BlazeDS是Adobe提供的一个开源服务器端组件,它充当Java和Flex之间的通信桥梁,实现了基于AMF(Action Message Format)的高效数据传输。 Java是全球广泛使用的编程语言,尤其在企业级应用开发中占有重要地位。它...

Global site tag (gtag.js) - Google Analytics