flex java oracle_Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据...
一、建立Flex與Java交互的工程。
本文中講到的交互是利用Blazeds的,因為這個是免費的,呵呵,我是窮人。
首先就是去下載Blazeds的壓縮包,這個可以從官網(wǎng)或者CSDN、JavaEye上下到。解壓縮這個包,將里面的Blazeds.war解壓,后面建立工程時要使用。
在MyEclipse中建立一個web工程,名為FlexTest。(注意:這個工程的JDK一定是1.5或以上版本,本文使用6.0)
將剛才解壓的Blazeds.war包中的“META-INF”與“WEB-INF”文件夾以及文件夾中的內(nèi)容拷貝到工程的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
注意,由于這個實體類需要當(dāng)做Java代碼中方法的返回值傳遞給Flex中的AS代碼,所以需要繼承Serializable接口,否則將導(dǎo)致異常的發(fā)生。
然后,在建立一個供Flex調(diào)用的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 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
這里就不連接數(shù)據(jù)庫去操作了,因為本文重點放在Flex調(diào)用Java上,所以寫個樁數(shù)據(jù)用以測試。
寫完了這兩個類,就需要在WebRoot/WEB-INF/flex/remoting-config.xml中配置用以調(diào)用這個Java類的信道了。具體代碼如下:
代碼
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
其中destination就是信道,properties是可以配置多個Java類,source是配置要調(diào)用Java類的包路徑。
到此,Java部分的代碼就寫完了。下面是Flex中的代碼。
在Flex Builder中創(chuàng)建一個Flex工程。名稱為FlexApp。如圖所示
注意Project Location的Folder要選擇MyEclipse建立的Web工程的WebRoot下。Server technology選擇J2EE
點擊[Next]按鈕進入下一頁。如圖
注意Server location中Root folder要選擇Java Web工程的WebRoot路徑。Root URL是Java web工程的訪問路徑,由于使用的是Tomcat服務(wù)器,工程名為FlexTest,所以路徑是http://localhost:8080/FlexTest/,而
Context root則是Java Web項目的工程名。完成后點擊那個[Validate Configuration]進行驗證,如果窗口上方顯示如上圖所示的“黃三角”就說明可以進行下一步操作了。
順利建立完Flex工程后,需要注意是否報錯,如果報錯,請注意調(diào)整Flex SDK的版本。
沒問題后,就要創(chuàng)建一個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類關(guān)聯(lián)起來。這樣就可以利用類型轉(zhuǎn)換來將Java對象轉(zhuǎn)換為AS對象了。
現(xiàn)在讓我們在Flex中調(diào)用這個Java代碼吧。代碼如下:
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
啟動Tomcat服務(wù)器后運行這個Flex程序,如下圖所示:
我對Flex與Java交互這塊還不是很熟悉,所以有什么不對的地方,或者有更簡單的方式,請大家給出建議。
總結(jié)
以上是生活随笔為你收集整理的flex java oracle_Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdfs中Exception in cr
- 下一篇: java smp_什么是SMP系统