使用FLEX4 和 JAVA進行通訊 並和JAVA內建的對象進行互動 十分的方便
多了不說 進入正題
測試環境
1. 使用 FLEX4
2. 伺服器 TOMCAT6
3. BlazeDS 4.5
下載BlazeDS後 解壓blazeds.war中的檔案
拷貝WEB-INF/LIB中的檔案 到工程的WEB-INF/LIB 中
拷貝FLEX檔案夾 到工程的WEB-INF中
修改WEB.XML檔案 增加如下代碼
<display-name><br /> BlazeDS<br /> </display-name><br /> <description><br /> BlazeDS Application<br /> </description></p><p> <!-- Http Flex Session attribute and binding listener support --><br /> <listener><br /> <listener-class><br /> flex.messaging.HttpFlexSession<br /> </listener-class><br /> </listener></p><p> <!-- MessageBroker Servlet --><br /> <servlet><br /> <servlet-name><br /> MessageBrokerServlet<br /> </servlet-name><br /> <servlet-class><br /> flex.messaging.MessageBrokerServlet<br /> </servlet-class><br /> <init-param><br /> <param-name><br /> services.configuration.file<br /> </param-name><br /> <param-value><br /> /WEB-INF/flex/services-config.xml<br /> </param-value><br /> </init-param><br /> <load-on-startup><br /> 1<br /> </load-on-startup><br /> </servlet></p><p> <!-- begin rds<br /> <servlet><br /> <servlet-name>RDSDispatchServlet</servlet-name><br /> <display-name>RDSDispatchServlet</display-name><br /> <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class><br /> <init-param><br /> <param-name>useAppserverSecurity</param-name><br /> <param-value>true</param-value><br /> </init-param><br /> <load-on-startup>10</load-on-startup><br /> </servlet></p><p> <servlet-mapping id="RDS_DISPATCH_MAPPING"><br /> <servlet-name>RDSDispatchServlet</servlet-name><br /> <url-pattern>/CFIDE/main/ide.cfm</url-pattern><br /> </servlet-mapping><br /> end rds --></p><p> <servlet-mapping><br /> <servlet-name><br /> MessageBrokerServlet<br /> </servlet-name><br /> <url-pattern><br /> /messagebroker/*<br /> </url-pattern><br /> </servlet-mapping></p><p> <welcome-file-list><br /> <welcome-file><br /> index.html<br /> </welcome-file><br /> <welcome-file><br /> index.htm<br /> </welcome-file><br /> </welcome-file-list>
在JAVA工程中建立一個bean
package com.bean;</p><p>public class PS_supervisory_GGSN<br />{<br /> private String day;<br /> private String hour;<br /> private String city;</p><p> public String getHour()<br />{<br />return hour;<br />}<br />public void setHour(String hour)<br />{<br />this.hour = hour;<br />}<br />public String getDay()<br />{<br />return day;<br />}<br />public void setDay(String day)<br />{<br />this.day = day;<br />}</p><p>public String getCity()<br />{<br />return city;<br />}<br />public void setCity(String city)<br />{<br />this.city = city;<br />}</p><p>}
然後建立一個方法 返回資料
package com.dao;</p><p>import java.util.ArrayList;<br />import java.util.List;</p><p>import com.bean.PS_supervisory_GGSN;</p><p>public class PS_Dao<br />{<br />public PS_Dao()<br />{</p><p>}</p><p>public List<PS_supervisory_GGSN> getList()<br />{<br />List<PS_supervisory_GGSN> list = new ArrayList<PS_supervisory_GGSN>();</p><p>PS_supervisory_GGSN bean1 = new PS_supervisory_GGSN();</p><p>bean1.setCity("瀋陽");<br />bean1.setDay("2010-10-10");<br />bean1.setHour("9");</p><p>list.add(bean1);</p><p>PS_supervisory_GGSN bean2 = new PS_supervisory_GGSN();<br />bean2.setCity("大連");<br />bean2.setDay("2010-10-22");<br />bean2.setHour("4");</p><p>list.add(bean2);</p><p>PS_supervisory_GGSN bean3 = new PS_supervisory_GGSN();<br />bean3.setCity("鞍山");<br />bean3.setDay("2010-12-02");<br />bean3.setHour("22");</p><p>list.add(bean3);</p><p>return list;<br />}<br />}
接下來再設定檔中 假如如下代碼 檔案地址WEB-INF/flex/remote-config.xml
<destination id="PS_Dao"><br /> <properties><br /><source>com.dao.PS_Dao</source><br /> </properties><br /></destination>
最後建立一個FLEX工程 伺服器端採用 J2EE 並加入BlazeDS支援
建立一個MXML程式檔案 代碼如下
<?xml version="1.0" encoding="utf-8"?><br /><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"<br /> xmlns:s="library://ns.adobe.com/flex/spark"<br /> xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"><br /><fx:Script><br /><!--[CDATA[<br />import mx.collections.ArrayCollection;<br />import mx.controls.Alert;<br />import mx.events.FlexEvent;<br />import mx.rpc.events.ResultEvent;</p><p>[Bindable]<br />private var m:ArrayCollection = new ArrayCollection();</p><p>protected function button1_clickHandler(event:MouseEvent):void<br />{<br />Re.getList();<br />}</p><p>protected function Re_resultHandler(event:ResultEvent):void<br />{<br />m = event.target.getList.lastResult as ArrayCollection;<br />}</p><p>]]--><br /></fx:Script><br /><fx:Declarations><br /><!-- 將非可視元素(例如服務、值對象)放在此處 --><br /><s:RemoteObject id="Re" destination="PS_Dao" result="Re_resultHandler(event)"></p><p></s:RemoteObject><br /></fx:Declarations><br /><s:Button x="50" y="51" label="按鈕" click="button1_clickHandler(event)"/><br /><mx:DataGrid x="50" y="95" dataProvider="{m}"><br /><mx:columns><br /><mx:DataGridColumn headerText="城市" dataField="city"/><br /><mx:DataGridColumn headerText="日期" dataField="day"/><br /><mx:DataGridColumn headerText="小時數" dataField="hour"/><br /></mx:columns><br /></mx:DataGrid></p><p></s:Application><br />
這裡用到了一個ArrayCollection來暫存資料並通過DataGrid進行呈現
網路監視器查看 僅僅使用了 1k的資料流量