首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

FLEX 与旧有开发语言(C#PHP,JAVA)之间的通信方法

2012-10-31 
FLEX 与现有开发语言(C#,PHP,JAVA)之间的通信方法?mx:Application xmlns:mxhttp://www.adobe.com/2006/

FLEX 与现有开发语言(C#,PHP,JAVA)之间的通信方法

?

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="onInit()" xmlns="*" layout="absolute" backgroundGradientColors="[#ffffff, #c0c0c0]">
<mx:Script>
<![CDATA[
public function onInit():void
{
userRequest.send();
}
]]>
</mx:Script>
<mx:HTTPService id="userRequest" url="request.php" useProxy="false" method="POST">
<mx:request xmlns="">
<username>{username.text}</username><emailaddress>{emailaddress.text}</emailaddress>
</mx:request>
</mx:HTTPService>
<mx:Form x="22" y="10" width="356">
<mx:HBox>
<mx:Label text="Username"/>
<mx:TextInput id="username"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="Email Address"/>
<mx:TextInput id="emailaddress"/>
</mx:HBox>
<mx:Button label="Submit" click="userRequest.send()"/>
</mx:Form>
<mx:DataGrid id="dgUserRequest" x="22" y="128" dataProvider="{userRequest.lastResult.users.user}">
<mx:columns>
<mx:DataGridColumn headerText="User ID" dataField="userid"/>
<mx:DataGridColumn headerText="User Name" dataField="username"/>
</mx:columns>
</mx:DataGrid>
<mx:TextInput x="22" y="292" id="selectedemailaddress" text="{dgUserRequest.selectedItem.emailaddress}"/>
</mx:Application>

?

php代码:

<?php
/* Thanks to Pete Mackie for the code below */

Define(’DATABASE_SERVER’, ’localhost’);
Define(’DATABASE_USERNAME’, ’root’);
Define(’DATABASE_PASSWORD’, ’root’);
Define(’DATABASE_NAME’, ’flextest’);

# Connect to the database
$mysqli = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);

# Check connection
if (mysqli_connect_errno()) {
?? printf("MySQL connect failed: %s\n", mysqli_connect_error());
?? exit();
}

# Quote variable to make safe
function quote_smart($value) {
??????? global $mysqli;
??????? # Stripslashes
??????? if (get_magic_quotes_gpc())
??????????????? $value = stripslashes($value);

??????? # Quote if not integer
??????? if (!is_numeric($value))?????????
??????????????? $value = $mysqli->real_escape_string($value);
??????? return $value;
}

if (!empty($_POST) && $_SERVER[’REQUEST_METHOD’] == ’POST’) {
??????? if ($_POST[’emailaddress’] && $_POST[’username’]) {
??????????????? # Add the user
????????? $query = sprintf("Insert INTO users VALUES (’’, ’%s’, ’%s’)", quote_smart($_POST[’username’]), quote_smart($_POST[’emailaddress’]));
??????????????? if (!@$mysqli->query($query)) {
??????????????????????? printf("’flextest’ user database query insert error: %s\n", $mysqli->error);
??????????????????????? $mysqli->close();
??????????????????????? exit();
??????????????? }
??????? }
}

# Return a list of all the users
if (!$result=@$mysqli->query("Select * from users")) {
??????? printf("’flextest’ user database query select error: %s\n", $mysqli->error);
??????? $mysqli->close();
??????? exit();
}

$xml_return = "<users>";
while ($user = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
??????? $xml_return .=
??????? "<user><userid>".$user[’userid’]."</userid><username>".$user[’username’]."</username><emailaddress>".$user[’emailaddress’]."</emailaddress></user>\n";
}
$xml_return.= "</users>";
$mysqli->close();
echo $xml_return;
?>

?

?

?3.FLEX与JAVA之间的通信

?

这里介绍一种方法:使用BlazeDS实现Java和Flex通信

BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。这篇文章中,我讲述一种方法(也许不是最好的)使得我能够成功地利用 BlazeDS 和 Flex 建立一个简单的程序。使用的 IDE 是 eclipse, 而并非 Flex Builder. 下面我将逐步介绍怎么实现这个简单的程序。

1. 安装 JDK 和 Tomcat, 并且实现成功配置。

2. 安装 Flex SDK. 详细请见官方文档

3. 下载 BlazeDS , 如果你使用的是 turnkey 版本(建议下载此版本)里面实际上包含了 Tomcat 服务器了。

下面介绍只安装 BlazeDS 的 web application 版本(但是仍然下载的是 Turnkey 版本)。

下载的 zip 包里面包含了:

blazeds.war: 主要的 BlazeDS war 文件,用来建立你的 BlazeDS 应用程序。

Sample.war 就是 BlazeDS 例子了。

Ds-console.war ,简单的 BlazeDS 部署管理程序。

每一个 war 程序都是独立的,假如你使用 J2EE 的 web 应用程序选项,那么你必须有一个 J2EE 应用服务器或者 servlet 容器。比如使用 Tomcat. 而且必须把刚才的三个 war 文件部署在 Tomcat_Home ( tomcat 安装目录)下的 webapps 目录下。然后重启 Tomcat 服务器,在浏览器输入: http://localhost:8080/samples 如果看到显示页面代表就成功了。如果你的应用程序需要使用 HSWLDB 数据库,那么也拷贝 .zip 文件中的 sampledb 目录到 webapps 目录下,然后启动数据库。启动方法很简单:到 sampledb 目录下,执行 startdb.bat 就可了 (windows OS) 。 提示:可以的话,在你的 Eclipse 目录下,找到 eclipse.ini 把最大内存数改成 512.

4. ( 可选 ) 配置 Tomcat 的用户角色。即在 Tomcat_Home/conf/tomat-users.xml 添加以下语句:

Java代码?

<role rolename= "manager" /><user username= "abhi"? password= "abhi"? roles= "manager" />???

<role rolename="manager"/><user username="abhi" password="abhi" roles="manager"/>?

5.????利用 Eclipse 建立 Flex Project 。工程名字叫做 BlazeApp.????

FLEX 与旧有开发语言(C#PHP,JAVA)之间的通信方法?

Application Type 选择 web application, 服务器选择 J2EE. 关联 WTP, 至于代码文件保存目录自定义。 Next 。

6.设置 J2EE 服务器。

我们选择 Tomcat, 可能需要手动配置 (new) 。然后选择 flex war 文件,即我们放在 webapps 目录下的 blazeds.war.然后 next.

FLEX 与旧有开发语言(C#PHP,JAVA)之间的通信方法

7.???接着,默认设置,也可自定义。?

FLEX 与旧有开发语言(C#PHP,JAVA)之间的通信方法?

接着 next. 其实到这里已经完成了 project 建立.

8.???接下来你可以在 eclipse 中可以看到整个工程的所有文件以及配置。在开发之前,可能需要修改 context root 配置。点击 BlazeApp 右键,选择属性,然后见到如图 , 修改 context root 值为 BlazeApp. (默认的是 WebContent, 好像不更改也可以。自行测试 … )。

?

9.??创建 Java 文件。

点击 src 文件夹,然后创建 java class. 类的包为 hello, 名字为 HelloWorld.

Java代码

?package? hello;????
public?? class? HelloWorld {???
public? String sayHelloTo(String str) {???
System.out.println( "Hello "? + str);???????
????? return?? "Hello "? + str; }???????
}

package hello; public class HelloWorld {public String sayHelloTo(String str) {System.out.println("Hello " + str); return "Hello " + str; } }?

10.???在 BlazeApp.mxml 文件中新建一个 text 和一个按钮,来显示从 HelloWorld 传回来的信息。

Xml代码

<? xml?? version = "1.0"?? encoding = "utf-8" ?>?????
< mx:Application?? xmlns:mx = "http://www.adobe.com/2006/mxml"?? viewSourceURL = "srcview/index.html" >?????
< mx:Script >?????
? <![CDATA[ import mx.rpc.events.FaultEvent;???
?? import mx.rpc.events.ResultEvent;???
????? [Bindable]???
????? private var helloResult:String;???
????? private function sayHelloTo():void {???
??????? ro.sayHelloTo(inputText.text);???
??????? }???
?????? private function resultHandler(event:ResultEvent):void {???
helloResult = event.result as String;???
???????????? } ]]>?? </ mx:Script >?????
???????? < mx:RemoteObject?? id = "ro"?? destination = "helloworld"?? result = "resultHandler(event)"?? />?????
????????? < mx:HBox?? width = "100%" >?????
??????????? < mx:TextInput?? id = "inputText" />?????
??????????? < mx:Button?? label = "Submit"?? click = "sayHelloTo()" />?????
???????? </ mx:HBox >?????
??????? < mx:Label?? text = "{helloResult}" />?????
???? </ mx:Application >

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; [Bindable] private var helloResult:String; private function sayHelloTo():void { ro.sayHelloTo(inputText.text); } private function resultHandler(event:ResultEvent):void { helloResult = event.result as String; } ]]> </mx:Script> <mx:RemoteObject id="ro" destination="helloworld" result="resultHandler(event)" /> <mx:HBox width="100%"> <mx:TextInput id="inputText"/> <mx:Button label="Submit" click="sayHelloTo()"/> </mx:HBox> <mx:Label text="{helloResult}"/> </mx:Application>?

11.???定义 remote object 使你的 flex 程序能够调用 java 类。

首先来配置 /WEB-INF/flex/remoting-config.xml 文件,添加以下粗体部分来新增一个destionation—HelloWorld 类。

Xml代码

?<? xml?? version = "1.0"?? encoding = "UTF-8" ?>???
< service?? id = "remoting-service"?????
???? class = "flex.messaging.services.RemotingService" >???
??
???? < adapters >???
???????? < adapter-definition?? id = "java-object"?? class = "flex.messaging.services.remoting.adapters.JavaAdapter"?? default = "true" />???
???? </ adapters >???
??
???? < default-channels >???
???????? < channel?? ref = "my-amf" />???
???? </ default-channels >???
< STRONG > < destination?? id = "helloworld" >?????
????? < properties >?????
????????? < source > hello.HelloWorld </ source >?????
??????? </ properties >?????
? </ destination > </ STRONG >???
??
??
??
</ service >???

?12. 配置结束。

然后选择 BlazeApp 项目,选择在服务器上执行。即浏览地址为: http://localhost:8080/BlazedApp/BlazedApp.html 如果你能在输入框输入字段之后,点击按钮能返回 Hello,XXX 的信息,就代表成功了。

如图:??
?FLEX 与旧有开发语言(C#PHP,JAVA)之间的通信方法

?

?

热点排行