我的系統(tǒng)是Windows2003,服務(wù)器使用的是TOMCAT,當(dāng)然,JDK是必須的,TOMCAT裝的時(shí)候會(huì)自動(dòng)尋找到JAVA虛擬機(jī)的目錄(我這里是J:\Program Files\Java\jre1.5.0)
裝好TOMCAT后,接著安裝FLEX,我裝過1.0和1.5,不過不知道什么問題,用TOMCAT+FLEX1.0總是不成功,因此這里選擇安裝FLEX1.5。安裝的時(shí)候不用選擇安裝JRUN,就直接裝FLEX即可。
你可以在安裝的時(shí)候輸入注冊(cè)碼,或者也可以在安裝好后用命令提示符進(jìn)入flex/bin目錄下輸入
licensetool -install 注冊(cè)碼 ../flex.war
licensetool -install 注冊(cè)碼 ../samples.war
對(duì)flex.war運(yùn)行這個(gè)命令即可,上面的第二條命令是對(duì)示例代碼中FLEX程序代碼(JAVA文件)進(jìn)行注冊(cè)
注冊(cè)完畢后(你如果想堅(jiān)持試用的話,也可以跳過這一步),用WINRAR將flex.war和samples.war解壓縮到flex和samples文件夾內(nèi),然后將這兩個(gè)文件夾復(fù)制到“Tomcat 5.5安裝目錄\webapps\”下(profiler.war也可以這么做)
接著啟動(dòng)TOMCAT,在瀏覽器內(nèi)輸入
http://127.0.0.1:8080/samples/explorer/explorer.mxml
如果成功看到示例頁面的話,就說明已經(jīng)安裝成功了,
要注意一點(diǎn):以后你寫的FLEX程序必須放在flex/或者samples/目錄下才能得以執(zhí)行編譯
(你可以瀏覽下這個(gè)頁面,F(xiàn)LEX的大多數(shù)WEB元素都在里面了)
編寫FLEX應(yīng)用程序
要編寫FLEX的代碼(MXML文件)首先需要安裝MM的Flex Builder,它提供了可視化的編程界面。當(dāng)然,你對(duì)自己有信心的話,也可以采用Ultra Edit等能編輯XML的編輯器來完成代碼。
Flex Builder的使用和大多數(shù)可視化的程序編輯器很類似,一般開發(fā)者很快就可以上手的,另外它還能完成Dreamweaver的大多數(shù)編輯功能,你可以用它來開發(fā)其他的各種靜態(tài)動(dòng)態(tài)網(wǎng)頁。
Flex提供了豐富的WEB組件并且支持編寫FLASH中運(yùn)用到的大多數(shù)ActionScript,詳細(xì)的用法可以參照所提供的示例程序。
目前學(xué)習(xí)過程中遇到的一些問題和解決方法
1。對(duì)中文的支持
在這里建議使用utf-8編碼,它對(duì)中文支持良好,不過要注意你在保存文件的時(shí)候也需要將文件保存為utf-8的格式(Flex Builder會(huì)根據(jù)你的選擇<?xml version="1.0" encoding="utf-8"?>進(jìn)行保存,其他的編輯器中需要自己選擇一下)。如果堅(jiān)持要使用gb2312的話,則以記事本為例,要保存為ANSI的格式,但不推薦這么做。
如果文件的保存格式和所用的編碼格式不用,則FLEX解釋的時(shí)候會(huì)發(fā)生錯(cuò)誤。
另外,與其他程序交互時(shí)的中文問題會(huì)在下面提到。
2。連接數(shù)據(jù)庫
因?yàn)镕LEX是用XML作為接口的表示層(這里是相對(duì)于給出數(shù)據(jù)的接口層而言),所以理論上支持所有數(shù)據(jù)庫,只要接口層能輸出XML格式的數(shù)據(jù)即可。一般我們使用ASP,JSP等輸出XML。
首先要注意的是,在TOMCAT目錄\webapps\flex\WEB-INF\flex下有個(gè)flex-config.xml的文件,里面保存的FLEX的配置信息,其中<web-service-proxy>和<http-service-proxy>下有個(gè)<whitelist>,其中<unnamed>下的<url></url>標(biāo)簽內(nèi)添入的就是相應(yīng)服務(wù)能訪問的url信息,在下面的注釋中我們可以詳細(xì)了解其填法。
我這里使用的是ASP,關(guān)鍵代碼如下
sXml="<?xml version=""1.0"" encoding=""utf-8""?>"&vbCrLf
sXml=sXml&"<sResult>"&vbCrLf
if not (rs.Eof and rs.Bof) then
do while not rs.Eof
sXml=sXml&"<course>"&vbCrLf
sXml=sXml&"<rl>"&rs("rl")&"</rl>"&vbCrLf
sXml=sXml&"<xf>"&rs("xf")&"</xf>"&vbCrLf
sXml=sXml&"<sksj>"&rs("sksj")&"</sksj>"&vbCrLf
sXml=sXml&"<kxxq>"&rs("kxxq")&"</kxxq>"&vbCrLf
sXml=sXml&"<jsm>"&rs("jsm")&"</jsm>"&vbCrLf
sXml=sXml&"<jsh>"&rs("jsh")&"</jsh>"&vbCrLf
sXml=sXml&"<kcm>"&rs("kcm")&"</kcm>"&vbCrLf
sXml=sXml&"<kch>"&rs("kch")&"</kch>"&vbCrLf
sXml=sXml&"</course>"&vbCrLf
rs.MoveNext
loop
end if
sXml=sXml+"</sResult>"&vbCrLf
response.ContentType="text/xml;Charset=utf-8"
response.write sXml
注意需將ASP文件也必須保存為utf-8的格式,而我這里使用的ACCESS數(shù)據(jù)庫也是Unicode編碼的,所以是一致的。
在MXML中,連接數(shù)據(jù)庫有多種方法,我這里使用的是HTTPService,代碼如下:
<mx:HTTPService id="chk1" url="‘>http://127.0.0.1/search_u.asp" result="List1()" showBusyCursor="true" method="GET">
<mx:request>
<s_where>{s_where1.selectedItem.data}</s_where>
<s_method>kch</s_method>
<out_format>1</out_format>
<s_value>{s_value1.text}</s_value>
</mx:request>
</mx:HTTPService>
3。和數(shù)據(jù)庫進(jìn)行交互
在上面的代碼中,url填入的是需要交互的、輸出XML代碼的文件(接口層),<mx:request>中<s_method>kch</s_method>就是類似HTML里表單中<input name="s_method" value="kch>在ASP中可以用request("s_method")取得s_method的值,此處<s_where>{s_where1.selectedItem.data}</s_where>是取得s_where1下拉列表中選中的值。
注意:
1)method="GET",我在使用POST的中文時(shí)候,ASP程序會(huì)得到亂碼,而用GET就會(huì)正常的得到中文的值
2)resultFormat也不用填入任何值,不用寫這個(gè)屬性,當(dāng)然你需要得到返回結(jié)果為TEXT的時(shí)候可以填如TEXT,不過這里我是返回給datagrid,所以不用填入這個(gè)屬性
4。返回?cái)?shù)據(jù)給DATAGRID
代碼如下:
<mx:DataGrid id="datagrid1">
<mx:columns>
<mx:Array>
<mx:DataGridColumn width="75" columnName="kch" headerText="課程號(hào)"/>
<mx:DataGridColumn width="140" columnName="kcm" headerText="課程名"/>
<mx:DataGridColumn width="70" columnName="jsh" headerText="教師號(hào)"/>
<mx:DataGridColumn width="70" columnName="jsm" headerText="教師名"/>
<mx:DataGridColumn width="70" columnName="kxxq" headerText="開課校區(qū)"/>
<mx:DataGridColumn width="140" columnName="sksj" headerText="上課時(shí)間"/>
<mx:DataGridColumn width="40" columnName="xf" headerText="學(xué)分"/>
<mx:DataGridColumn width="40" columnName="rl" headerText="容量"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>
其中columnName就是你要在這一列顯示的XML中的哪類數(shù)據(jù)。
另外,這里不建議直接指定dataProvider,因?yàn)镈ATAGRID在只有一條數(shù)據(jù)的時(shí)候不會(huì)顯示,所以需要用一個(gè)函數(shù)將返回的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為數(shù)組,這樣就能顯示了,代碼如下:
<mx:Script>
<![CDATA[
function List1() {
var resultArray1:Array = mx.utils.ArrayUtil.toArray(chk1.result.sResult.course);
datagrid1.dataProvider = resultArray1;
}
</mx:Script>
在id為chk1的HTTPService被send()后,返回?cái)?shù)據(jù)調(diào)用List1() 函數(shù)轉(zhuǎn)換成數(shù)組,同時(shí)指定給datagrid1.dataProvider,這樣DATAGRID就能正確顯示數(shù)據(jù)了。
進(jìn)行連接數(shù)據(jù)庫的按鈕代碼如下:
<mx:Button label="找課" id="button1" click="chk1.send()>
另外,給個(gè)簡(jiǎn)單的FLEX+ASP的應(yīng)用
TEST.MXML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="‘ target=_blank>http://www.macromedia.com/2003/mxml">
<mx:TextInput id="aaa" />
<mx:HTTPService id="chk" url="‘>http://127.0.0.1/a.asp" showBusyCursor="true" method="GET">
<mx:request>
<s>{aaa.text}</s>
</mx:request>
</mx:HTTPService>
<mx:Button label="查詢" click="chk.send()"/>
<mx:Label text="{chk.result}" />
</mx:Application>
-----------------------------------------------------------------------------------
a.asp:注意要保存為utf-8的格式
<%
s=request("s")
if s="中國(guó)" then
response.write "China"
elseif s="China" then
response.write "中國(guó)"
else
response.write s
end if
%>
聯(lián)系客服