flex技术分享学习

Flex 技术分享与学习

1:flex与java整合

在分享这几种配置之前,先简单的介绍一下需要用到的一些资源。
1、 MyEclipse+Flex 插件(官网下载)
2、 Tomcat6.0作为服务器(官网下载)
3、 用 BlazeDS(免费)代替 LCDS(收费)只能先使用免费的了。从 Adobe官方网站上下载下来

4、  解压BlazeDS,解压出来的文件放到java项目WEB-INF(可替换),

Flex+Java配置
第一种: Java工程和 Flex 工程独立,这种方式也是很多人使用的方式, Flex程序员和 Java
程序员相互独立的工作,这种方式网上有很多的资料,在这里就不再 赘述了。
第二种:Flex工程加入 Java 元素

 首先导入java项目,切换视图:

右键项目——添加更改项目类型——选择添加flex项目类型;切换视图

 服务器类型是 JaEE    选中(BlazeDs(B))点击下一步 切换视图

根文件夹选中tomcat 部署的项目,如果上图,即可 psmsuite为项目名称

点击完成:切换视图

这时已经整合上去了。可以马上测试一下,不过错误来了,你会看到页面会出现一个红色小错误提示,这个简单,你只需选中右键,

重建html模块,ok,就没问题了。

小提示(自动生成src目录,这时会和java项目混绕起来,没关系,跟着我做,就可以把他们区分出来)请看图片

把主源文件src 改成flex_src点击确定,你就可以看到flex_src, java文件区分出来,你在把src里面自动生成的flex  mxml  复制(cope)到flex_src,包里,即可。那么整个flexjava整合就完成了。谢谢大家的分享。

成功例子:(java struts + hibernage+spring+mysql +flex)一个超大数据查询

效果图:(psmsuite/源码)

根据多种条件查询出数据,并且实现分页功能。

其实我们已经整合了flexjava了。接下来就是很简单了。方法有多种,获取数据库里面的数据,我就提供如下这种方法,其他方法自己去摸索,下面我介绍

<mx:HTTPService id="msdsFlex" url="http://localhost:8080/website/msds/MsdsAction.action" method="post">

<mx:request xmlns="" >

<giOper></giOper>

<allcols></allcols>

<ipage></ipage>

</mx:request>

</mx:HTTPService>

使用HTTPService请求数据

<mx:HTTPService id="feedRequest" url="http://localhost:8080/website/msds/MsdsAction.action" method="post" />

返回一个jsp文件,解析好看代码:

<%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<?xml version="1.0" encoding="utf-8" ?>

<msdss>

<page>

<allcols><![CDATA[${pagebean.allcols}]]></allcols>

<cpage><![CDATA[${pagebean.cpage}]]></cpage>

<allpage><![CDATA[${pagebean.allpage}]]></allpage>

<ipage><![CDATA[${pagebean.ipage}]]></ipage>

</page>

 <c:forEach var="item" items="${msdsList}">

<msds>    

<mid><![CDATA[${item.mid}]]></mid>

<chineseName><![CDATA[${item.chineseName }]]></chineseName>

<englishName><![CDATA[${item.englishName}]]></englishName>

</msds>

</c:forEach>

</msdss>

Flex 中发送调用方法(

<mx:Panel layout="absolute" title="MSDS   2011权威3500多种" width="877" height="568" x="9" y="215">

<mx:Label x="8" y="13" text="请输入查询条件:"/>

<s:Button x="550" y="69" label="查询" id="subBtn" click="seacher(0)"/>

<mx:DataGrid x="20" y="106"  dataProvider="{msdsFlex.lastResult.msdss.msds}" height="279" width="791" id="dg" itemClick="gsShow()">

<mx:columns>

<mx:DataGridColumn headerText="化学品中文名称" dataField="chineseName"/>

<mx:DataGridColumn headerText="化学品英文名称" dataField="englishName"/>

<mx:DataGridColumn headerText="CAS.NO" dataField="casNo"/>

<mx:DataGridColumn headerText="危险品货物编号" dataField="unNo"/>

<mx:DataGridColumn headerText="分子式" dataField="molecularFormula"/>

</mx:columns>

</mx:DataGrid>

<s:TextInput x="321" y="37" id="englishName" name="englishName"/>

<s:TextInput x="530" y="37" id="casNo" name="casNo"/>

<s:TextInput x="119" y="67" id="unNo" name="unNo"/>

关键取值方法( dataProvider="{msdsFlex.lastResult.msdss.msds}")其他标签基本一样

在来一个发送方法就ok

<s:Button x="550" y="69" label="查询" id="subBtn" click="seacher(0)"/>找到seacher()方法:

//查询按钮的提交方法

private function seacher(num:Number):void

{

if(num == 0) {

msdsFlex.request.cpage = 1;

}

msdsFlex.request.chineseName=chineseName.text;

msdsFlex.request.englishName=englishName.text;

msdsFlex.request.casNo=casNo.text;

msdsFlex.request.unNo=unNo.text;

msdsFlex.request.molecularFormula=molecularFormula.text;

if("" == chineseName.text && ""==englishName.text && ""==casNo.text &&""==unNo.text &&""==molecularFormula.text) {

Alert.show("必须输入一个查询条件");

}

else

{

msdsFlex.send();

}

}

就这样,就能查出数据来了。谢谢你的分享!如有问题,上psmsuite网站,www.psmsuite.com.

2:flex安全跨域问题解决。

方法:
1.新建一个名为crossdomain.xml的文件
其内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*" to-ports="517-512" />
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

2.将文件放到根文件夹下。Ok,赶快试试吧!

参考资料:

问题1:

Flash/Flex,会涉及到跨域访问URL的安全性问题,最常见的就是出现"访问URL时遇到安全性错误",这也是人们以前常说的安全沙箱问题,解决方案是在目标域名根目录加入跨域策略文件crossdomain.xml,例如:

<?xml version="1.0"?><cross-domain-policy> <allow-access-from domain="*.techmango.com" /> </cross-domain-policy>

这表示目标源允许*.techmango.com下的资源访问该域名下的资源.

问题2:

如果涉及到Socket,跨域策略文件中需要加入to-ports,例如:

<cross-domain-policy>   <allow-access-from domain="*" to-ports="507" />   <allow-access-from domain="*.example.com" to-ports="509,516" />   <allow-access-from domain="*.example1.com" to-ports="517-521" />   </cross-domain-policy> 这个策略文件是指定允许哪些域的主机通过那些端口链接.

问题3:

如果在访问Webservice需要用到SOAPHeader验证,跨域策略文件做相应修改,例如:

<cross-domain-policy>
    <allow-access-from domain="*.chenfeisoft.com" />
    <allow-http-request-headers-from domain="*.techmango.com" headers="*"/>
</cross-domain-policy>

否则会出现DefaultHTTP错误.

问题4:

跨域访问第三方组件提供的数据,BlazeDS,也会遇到DefaultHTTP错误.这需要服务器及UI端做相应配置,例如:

[Service]

在服务器端的配置文件中,找到proxy-config.xml文件,里面有一个默认的destination节点: <destination id="DefaultHTTP"> </destination>

默认代理的destination将转向客户端指定的URL进行请求。首先你必须使用dynamic-url属性来指定允许代理的destinations.如下:

把你要访问的URL都配置到dynamic-url节点里。

<destination id="DefaultHTTP">
        <properties>
                <dynamic-url>http://cnn.com/*</dynamic-url>
                <dynamic-url>http://news.yahoo.com/*</dynamic-url>
        </properties>
</destination>
修改后,保存。
[UI]
为了Flex应用能够访问代理服务,要确保你的应用程序指向正确的service,并设置useProxy 属性为ture.如:
<mx:HTTPService url=http://cnn.com” useProxy=true” />
<mx:WebService url=http://cnn.com/api?wsdl” useProxy=true” />



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值