技術(shù)前沿 深入剖析Tomcat和JSP與Flex結(jié)合
本文和大家重點(diǎn)討論一下Flex結(jié)合的概念,主要包括Flex結(jié)合tomcat和Flex結(jié)合JSP兩大部分內(nèi)容,相信通過(guò)本文的學(xué)習(xí)你對(duì)Flex結(jié)合的概念一定會(huì)有深刻的認(rèn)識(shí)。
Flex結(jié)合
最近一直在做有關(guān)JSP開(kāi)發(fā)的網(wǎng)站,重復(fù)的登陸驗(yàn)證頁(yè)面,重復(fù)的語(yǔ)法以及重復(fù)的跳轉(zhuǎn)頁(yè)面,熟悉的不能再熟悉的struts構(gòu)建流程。
做項(xiàng)目的期間,還自己學(xué)習(xí)了HIBERNATE,ajax等等,所以在寫JSP代碼的同時(shí),也考慮到了JSP可以不可以和特效Flex結(jié)合起來(lái),于是在工作完成的時(shí)候,自己會(huì)去看一些Flex的東西,很有好的界面,很炫的組件,真是被Flex所深深吸引。
1.Flex結(jié)合tomcat
Flex只是個(gè)運(yùn)行庫(kù)或者說(shuō)是webapplication,用來(lái)處理mxml類型的文件,其運(yùn)行庫(kù)就是Flex.war,所以它可以部署到任何一個(gè)兼容的jsp服務(wù)器上:比如Tomcat,weblogic、websphere、Jrun,Jboss等,而Coldfusion目前也是運(yùn)行庫(kù)或者說(shuō)是webapplication,用來(lái)處理cfml類型的文件,其運(yùn)行庫(kù)就是cfusion.war,所謂standalone版本的coldfusion只是把jrun和cfusion.war一起打包安裝而已,所以就沒(méi)有Flex和Coldfusion結(jié)合之說(shuō)了。
所以要想tomcat做Flex的服務(wù)器,很簡(jiǎn)單的說(shuō)安裝完FlexDadaServices,目前名字叫Adobe_LiveCycle_Data_Services,我本人安裝的版本是(Adobe_LiveCycle_Data_Services_ES_2.5.1)
需要的話可以共享給大家,你也可以自己去下載,下載完不用去找序列號(hào),因?yàn)槲也盍税胩煲矝](méi)查到,默認(rèn)可以有60天的試用期。
下一步需要做的就是把Flex項(xiàng)目下的Flex.war和samples.war拷貝到tomcat下的webapp目錄里,考完后,tomcat會(huì)自動(dòng)部署文件,不需操作,這樣輸入項(xiàng)目路徑:http://localhost:8080/samples就可以看到里面的Flex程序了,就是這么簡(jiǎn)單。
2.Flex結(jié)合JSP
其實(shí)Flex里夾雜了ajax異步調(diào)用的技術(shù),因?yàn)楸旧鞟CTIONSCRIPT就和JAVASCRIPT有著異曲同工之妙。我做了一個(gè)例子是參考手冊(cè)上面的,不過(guò)自己改了一下,大概的程序就是這樣的,首頁(yè)當(dāng)然是Flex服務(wù)器來(lái)解析hxml,然后后臺(tái)通過(guò)jsp文件交互數(shù)據(jù)庫(kù),然后把數(shù)據(jù)動(dòng)態(tài)的封裝成xml格式,最后在把xml標(biāo)簽與Flex程序綁定在一起,就可以了。這樣當(dāng)運(yùn)行Flex前端程序的時(shí)候,后臺(tái)就會(huì)把綁定好的數(shù)據(jù)顯示到了Flex的組件里。
我的mxml代碼:
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"creationComplete="feedRequest.send()
- "backgroundGradientColors="[#000000,#000000]">
- <mx:HTTPServiceidmx:HTTPServiceid="feedRequest"url="http://localhost:8080/test/index.jsp"useProxy="false">
- <mx:requestxmlnsmx:requestxmlns="">
- <directory>{test.text}</directory>
- </mx:request>
- </mx:HTTPService>
- <mx:Panelidmx:Panelid="blog"width="359"height="520"title="{feedRequest.lastResult.rss.channel.title}"verticalCenter="188.5"horizontalCenter="179">
- <mx:DataGrididmx:DataGridid="dgPosts"dataProvider="{feedRequest.lastResult.rss.channel.item}"width="340"height="167">
- <mx:columns>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="題目"dataField="title"/>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="路徑"dataField="url"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:TextAreawidthmx:TextAreawidth="388"height="129"htmlText="{dgPosts.selectedItem.description}"/>
- <mx:LinkButtonlabelmx:LinkButtonlabel="查看詳細(xì)"click="navigateToURL(newURLRequest(dgPosts.selectedItem.url));"/>
- <mx:Labeltextmx:Labeltext="選擇ID號(hào)"/>
- <mx:TextInputidmx:TextInputid="test"width="115"height="23"/>
- <mx:Labeltextmx:Labeltext="{test.text}"/>
- <mx:Buttonlabelmx:Buttonlabel="登陸"id="Submit"click="feedRequest.send();"/>
- </mx:Panel>
- <mx:Imagewidthmx:Imagewidth="717"height="151"top="31"horizontalCenter="0">
- <mx:source>file:///C|/DocumentsandSettings/Administrator/桌面/banner.gif</mx:source>
- </mx:Image>
- <mx:MenuBarxmx:MenuBarx="188"y="203"width="539"height="45"></mx:MenuBar>
- </mx:Application>
注釋:
(1).application里creationComplete="feedRequest.send()"這一屬性是每次程序運(yùn)行時(shí),調(diào)用httpservice里的Send()方法,在這個(gè)程序里實(shí)際上是請(qǐng)求http://localhost:8080/test/index.jsp,把得到的數(shù)據(jù)以xml形式返回,把內(nèi)容綁定到DataGrid的組件上。
(2).dataProvider="{feedRequest.lastResult.rss.channel.item}"此句的語(yǔ)法,應(yīng)該是,得到最后的返回結(jié)果,按照rss,channel,item此三層標(biāo)簽去綁定所遍歷的數(shù)據(jù)。
- <mx:columns>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="題目"dataField="title"/>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="路徑"dataField="url"/>
- </mx:columns>
以上代碼就是創(chuàng)建分別叫題目和路徑的2個(gè)列,title和url即為遍歷出來(lái)的信息源標(biāo)簽。
(3).click="navigateToURL(newURLRequest(dgPosts.selectedItem.url));"linkbutton的屬性,強(qiáng)調(diào)一點(diǎn)的是dgPosts是datagrid中所產(chǎn)生的選項(xiàng),而navigateToURL(newURLRequest(url))此句就是另外打開(kāi)一個(gè)url。
【編輯推薦】
- 評(píng)點(diǎn)Flex結(jié)合J2EE的開(kāi)發(fā)與架構(gòu)
- Flex安全沙箱問(wèn)題解決方法
- 技術(shù)前沿 看Flex客戶端緩存技術(shù)如何使用
- 解析Flex全屏模式設(shè)置方法
- Flex內(nèi)存泄露解決方法和內(nèi)存釋放優(yōu)化原則