由于Flex只是一种客户端技术其本身并不能直接同数据库交互,在实际的应用开发过程中Flex提供了如URLRequest、HTTPService、RemoteObject、WebService等类以实现同服务器的通讯和数据交互,下面做一些介绍和实例解析:
本示例用到的开发工具和组件:jdk1.6、eclipse3.0、 FlexBuilder3.0、 blazeds-turnkey-3.3.0.9885(已包含Tomcat)
1、安装JDK至指定目录下如:C:/Program Files/Java/jdk1.6.0_16
2、解压blazeds-turnkey-3.3.0.9885.zip 将tomcat目录拷贝至:D:/Program Files/tomcat
3、配置或加入我的电脑环境变量:
- JAVA_HOME C:/Program Files/Java/jdk1.6.0_16
- CATALINA_BASE D:/Program Files/tomcat
- CATALINE_HOME D:/Program Files/tomcat
- CLASSPATH %JAVA_HOME%/lib;%CATALINA_HOME%/lib/servlet-api.jar
- Path %JAVA_HOME%/bin;%JAVA_HOME%/lib;
4、查看Tomcat服务器配置信息:
查看D:/Program Files/tomcat/conf/server.xml文件
找到 <Connector port="8400" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="9400" />
配置的端口信息为“8400”
5、手动方式启动TomCat检查是否配置成功(当然你也可以在Eclipse中安装TomCat插件控制Tomcat):
启动命令行“cd D:/Program Files/tomcat/bin”定位至Tomcat Bin目录
运行“startup.bat”启动TomCat看到如下(启动成功):
浏览器中输入:“http://localhost:8400/”如下(恭喜JAVA环境+BlazeDS+Tomcat配置成功):
6、建立开发文件夹,拷贝BlazeDS配置文件和用到的配置文件及类库“WEB-INF”至站点目录:
找到blazeds.war个改后缀为RAR解压找到“WEB-INF”文件夹拷贝至"WebSite"下目录结构如:
这样做的目的是将JAVA项目同Flex项目Web站点目录分开互不干扰(使用eclipse的Flex开发插件有时会报莫名的错误,Flex开发还是建议用FlexBuilder)
7、在Eclipse中新建java项目并将编译路径链接至“../WebSite/WEB-INF/classes”目录下如图:
8、发布WebSite至TomCat:
在“D:/Program Files/tomcat/conf/server.xml”文件<Host>节点中新增如下<Context>节点重启TomCat(执行第5步骤运行“shutdown.bat”再运行“startup.bat”)
- <Host name="localhost" appBase="webapps"
-
unpackWARs="true" autoDeploy="true"
-
xmlValidation="false" xmlNamespaceAware="false">
-
<Context path="/WebSite" docBase="E:/学习/BlazeDs/WebSite" debug="0" reloadable="true" crossContext="true" />
-
</Host>
9、新建FLEX 服务器为J2EE的“myBlazeDSFlex”项目至"E:/学习/BlazeDs/Flex"目录
10、配置服务器及Flex输出目录至“webSite/flex"下,并“Validate Configuration”通过(如图):
11、你也可以手动设置Felx项目属性(如图)来配置J2EE服务器:
12、在eclipse中编写完成Java类及方法 并编译:
UserBean类:
- package myBlazeDS;
-
public class UserBean {
-
private String _name;
-
private int _age;
-
private String _address;
-
public UserBean(String name,int age,String address)
- {
-
this._name = name;
-
this._age = age;
-
this._address = address;
- }
-
-
public void setName(String name)
- {
-
this._name = name;
- }
-
public String getName()
- {
-
return this._name;
- }
-
-
public void setAge(int age)
- {
-
this._age = age;
- }
-
public int getAge()
- {
-
return this._age;
- }
-
-
public void setAddress(String address)
- {
-
this._address = address;
- }
-
public String getAddress()
- {
-
return this._address;
- }
- }
外部接口类BlazeDSService:
- package myBlazeDS;
-
-
public class BlazeDSService {
-
public String GetBlazeService(String user)
- {
-
return user +":欢迎使用Java BlazeDS同Flex交互";
- }
-
public UserBean GetUserInfo(String name,int age,String address)
- {
-
return new UserBean("User:" + name, age,address + " China");
- }
- }
13、配置“E:/学习/BlazeDs/WebSite/WEB-INF/flex/remoting-config.xml”增加(如图):
- <destination id="FirstBlazeService">
-
<properties>
-
<source>
- myBlazeDS.BlazeDSService
-
</source>
-
<scope>application</scope>
-
</properties>
-
</destination>
14、在Flex引入RemoteObject 指定destination属性加入调用方法<mx:method>节点如:
- <mx:RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">
-
<mx:method name="GetBlazeService" fault="onBlazeDSFalut(event)" />
-
<mx:method name="GetUserInfo" result="getUserBean(event)" fault="onBlazeDSFalut(event)" />
-
</mx:RemoteObject>
15、完整体Flex页面代码:
- <?xml version="1.0" encoding="utf-8"?>
-
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
-
<mx:RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">
-
<mx:method name="GetBlazeService" fault="onBlazeDSFalut(event)" />
-
<mx:method name="GetUserInfo" result="getUserBean(event)" fault="onBlazeDSFalut(event)" />
-
</mx:RemoteObject>
-
<mx:Canvas width="653" height="190" x="10" backgroundColor="#297E8D" fontSize="15">
-
<mx:Script>
- <!--[CDATA[
- import mx.rpc.events.FaultEvent;
- import mx.rpc.events.ResultEvent;
- import mx.controls.Alert;
- import mx.core.UIComponent;
- import mx.core.BitmapAsset;
- import mx.core.ByteArrayAsset;
- private function onCallJava():void
- {
- myJavaService.GetBlazeService(nameInput.text);
- }
- private function onCallBean():void
- {
- myJavaService.GetUserInfo(txtName.text,int(txtAge.text),txtAddress.text);
-
- }
- private function getUserBean(e:ResultEvent):void
- {
- var o:*=e.result as Object;
-
vtxtName.text = o.name;
-
vtxtAge.text = o.age;
-
vtxtAddress.text = o.address;
- }
- private function onBlazeDSFalut(e:FaultEvent):void
- {
- Alert.show(e.message.toString());
- }
-
]]-->
-
</mx:Script>
-
<mx:TextInput id="nameInput" x="108" y="18" width="145"/>
-
<mx:Button label="Call Java" click="onCallJava();" x="274" y="18" fillAlphas="[1.0, 1.0]"/>
-
<mx:TextArea text="{myJavaService.GetBlazeService.lastResult}" x="397" height="34" width="246" y="19"/>
-
<mx:Label x="10" y="61" width="632" height="2"/>
-
<mx:Label x="10" y="80" text="UserName:"/>
-
<mx:Label x="10" y="117" text="UserAge:"/>
-
<mx:Label x="10" y="150" text="Address:"/>
-
<mx:TextInput x="108" y="78" id="txtName" width="146"/>
-
<mx:TextInput x="107" y="115" id="txtAge" width="147"/>
-
<mx:TextInput x="107" y="148" id="txtAddress" width="147"/>
-
<mx:Button x="272" y="112" label="Call Bean" id="btnCallBean" click="onCallBean();"/>
-
<mx:Text x="397" y="80" width="246" id="vtxtName"/>
-
<mx:Text x="397" y="117" width="246" id="vtxtAge"/>
-
<mx:Text x="397" y="150" width="246" id="vtxtAddress"/>
-
</mx:Canvas>
-
</mx:Application>
-
16、DEMO完成后目录结构如图:
17、DEMO功能完成最终效果如图:源码下载:
flex还可以通过如XMLSocket FMS 二进制套接字等同服务器交互,就不再赘述了本系列课程到此告一段落!
分享到:
相关推荐
flex3(remoteobject+datagrid+.....)+java+oracle源代码
flex4出来一段时间了,去年看了一段时间flex3,后来由于暂时没有项目需求.所以flex遗忘了很多.... 1 flex 与普通java类通信RemoteObject 2 flex 与服务器交互HTTPService 3 flex与webservice交互WebService
flex使用 RemoteObject 与java进行json格式的数据交互
不过,针对 Java EE 开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与 Flex 前端交换数据,这种方式是 Java EE 应用程序集成 Flex 的首选。 BlazeDS 是 Adobe LifeCycle Data Services 的...
MyEclipse:做Java开发都应该知道MyEclipse是比较好的J2EE项目的开发及部署工具的,我们主要用它来部署Flex和Java结合的项目。6.0是适合Eclipse3.3版的。他自带了一个Tomcat服务器 FB3:相比FB2,他在LCDS工程上做...
两个项目,flex + java + RemoteObject,实现一个简单的RemoteObject通信案例
eclipse3.7 + flash builder 4.5插件 + tomcat6.X调试通过,一个flex remoteobject简单例子(BlazeDS)。实际导入后指定flex server--java settings--blazeds.war的路径
NULL 博文链接:https://yjck.iteye.com/blog/765169
这个小例子是使用Java作为服务端、Flex做前台,对一个xml文件的读取和写入。 环境:MyEclipse6.0.1+Flex3插件版,jdk1.6,tomcat6.0,dom4j1.6.1,lcds.war, 使用技术:1.Java+flex,及其对象的转换。 2.Java方面...
使用封装后的RemoteObject和java通信,以blazeds做为第三方软件,上传的是一个Demo实例
1、修改apache-tomcat-6.0.14\bin\catalina.bat文件中的JAVA_HOME的值,指向你所装的jdk的目录;我用的是jdk1.6,后台的java类也是用这个版本编译的; 2、启动tomcat 3、输入地址:...
当大家尝试使用flex与普通java类通信时,一般用RemoteObject,具体的代码段如下: package com.flex.demo; /** *第一种 功能描述:该类用来实现flex与普通java类中的方法通信 * @author Administrator */ ...
<br> 本教程通过图文介绍和对一些关键性的地方进行解释,让大家了解如何新建Flex的LCDS工程,并利用工具快速整合和部署J2EE项目和LCDS项目,掌握了简单的请求RemoteObject和配置的方法,初步掌握LCDS的应用之一...
FLEX使用RemoteObject方式和后台童心
介绍flex使用RemoteObject技术
remoteObject-java简单CURD例子.rar
入门教程,图文并茂 主要介绍如何建立FlexLCDS工程,及相关配置。 主要如何用remoteObject来连接实现Flex与Java的通信 自己是初学者,看着觉得挺容易上手的,就推荐下了。
flex中RemoteObject与java的通信,其中有详细的步骤和代码,照着做能实现功能,对初学者很有用
flex中actionscript动态调用remoteobject类,很简单的一个例子,后面可以扩充,动态调用java的方法,可在java方法中放个switch,返回不同的结果集