打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
FLEX从安装到第一个带数据库连接的WEB应用程序
安装:

 

我的系统是Windows2003,服务器使用的是TOMCAT,当然,JDK是必须的,TOMCAT装的时候会自动寻找到JAVA虚拟机的目录(我这里是J:\Program Files\Java\jre1.5.0)

装好TOMCAT后,接着安装FLEX,我装过1.0和1.5,不过不知道什么问题,用TOMCAT+FLEX1.0总是不成功,因此这里选择安装FLEX1.5。安装的时候不用选择安装JRUN,就直接装FLEX即可。
你可以在安装的时候输入注册码,或者也可以在安装好后用命令提示符进入flex/bin目录下输入
licensetool -install 注册码 ../flex.war
licensetool -install 注册码 ../samples.war
对flex.war运行这个命令即可,上面的第二条命令是对示例代码中FLEX程序代码(JAVA文件)进行注册
注册完毕后(你如果想坚持试用的话,也可以跳过这一步),用WINRAR将flex.war和samples.war解压缩到flex和samples文件夹内,然后将这两个文件夹复制到“Tomcat 5.5安装目录\webapps\”下(profiler.war也可以这么做)

接着启动TOMCAT,在浏览器内输入
http://127.0.0.1:8080/samples/explorer/explorer.mxml
如果成功看到示例页面的话,就说明已经安装成功了,
要注意一点:以后你写的FLEX程序必须放在flex/或者samples/目录下才能得以执行编译
(你可以浏览下这个页面,FLEX的大多数WEB元素都在里面了)


编写FLEX应用程序

要编写FLEX的代码(MXML文件)首先需要安装MM的Flex Builder,它提供了可视化的编程界面。当然,你对自己有信心的话,也可以采用Ultra Edit等能编辑XML的编辑器来完成代码。

Flex Builder的使用和大多数可视化的程序编辑器很类似,一般开发者很快就可以上手的,另外它还能完成Dreamweaver的大多数编辑功能,你可以用它来开发其他的各种静态动态网页。

Flex提供了丰富的WEB组件并且支持编写FLASH中运用到的大多数ActionScript,详细的用法可以参照所提供的示例程序。


目前学习过程中遇到的一些问题和解决方法

1。对中文的支持
在这里建议使用utf-8编码,它对中文支持良好,不过要注意你在保存文件的时候也需要将文件保存为utf-8的格式(Flex Builder会根据你的选择<?xml version="1.0" encoding="utf-8"?>进行保存,其他的编辑器中需要自己选择一下)。如果坚持要使用gb2312的话,则以记事本为例,要保存为ANSI的格式,但不推荐这么做。
如果文件的保存格式和所用的编码格式不用,则FLEX解释的时候会发生错误。
另外,与其他程序交互时的中文问题会在下面提到。

2。连接数据库
因为FLEX是用XML作为接口的表示层(这里是相对于给出数据的接口层而言),所以理论上支持所有数据库,只要接口层能输出XML格式的数据即可。一般我们使用ASP,JSP等输出XML。
首先要注意的是,在TOMCAT目录\webapps\flex\WEB-INF\flex下有个flex-config.xml的文件,里面保存的FLEX的配置信息,其中<web-service-proxy>和<http-service-proxy>下有个<whitelist>,其中<unnamed>下的<url></url>标签内添入的就是相应服务能访问的url信息,在下面的注释中我们可以详细了解其填法。
我这里使用的是ASP,关键代码如下
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数据库也是Unicode编码的,所以是一致的。
在MXML中,连接数据库有多种方法,我这里使用的是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。和数据库进行交互
在上面的代码中,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的中文时候,ASP程序会得到乱码,而用GET就会正常的得到中文的值
2)resultFormat也不用填入任何值,不用写这个属性,当然你需要得到返回结果为TEXT的时候可以填如TEXT,不过这里我是返回给datagrid,所以不用填入这个属性

4。返回数据给DATAGRID
代码如下:
<mx:DataGrid id="datagrid1">
<mx:columns>
<mx:Array>
<mx:DataGridColumn width="75" columnName="kch" headerText="课程号"/>
<mx:DataGridColumn width="140" columnName="kcm" headerText="课程名"/>
<mx:DataGridColumn width="70" columnName="jsh" headerText="教师号"/>
<mx:DataGridColumn width="70" columnName="jsm" headerText="教师名"/>
<mx:DataGridColumn width="70" columnName="kxxq" headerText="开课校区"/>
<mx:DataGridColumn width="140" columnName="sksj" headerText="上课时间"/>
<mx:DataGridColumn width="40" columnName="xf" headerText="学分"/>
<mx:DataGridColumn width="40" columnName="rl" headerText="容量"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>
其中columnName就是你要在这一列显示的XML中的哪类数据。
另外,这里不建议直接指定dataProvider,因为DATAGRID在只有一条数据的时候不会显示,所以需要用一个函数将返回的数据强制转换为数组,这样就能显示了,代码如下:
<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()后,返回数据调用List1() 函数转换成数组,同时指定给datagrid1.dataProvider,这样DATAGRID就能正确显示数据了。
进行连接数据库的按钮代码如下:
<mx:Button label="找课" id="button1" click="chk1.send()>
另外,给个简单的FLEX+ASP的应用

 

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="中国" then
response.write "China"
elseif s="China" then
response.write "中国"
else
response.write s
end if
%>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Flex RemoteObject 简单应用Demo
Flex 截屏实现(Flex画面快照截图及显示又一方式)
Flex与.NET互操作(三):基于WebService的数据访问(下)
InfoQ: Flex与JSON及XML的互操作
理解 Flex itemRenderer - 第 1 部分: 内联渲染器 - czx338...
Flex与JavaScript交互的DataGrid例子 - Flex - ※一路风尘※
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服