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了。接下来就是很简单了。方法有多种,获取数据库里面的数据,我就提供如下这种方法,其他方法自己去摸索,下面我介绍

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

 xmlns="" >

使用HTTPService请求数据

"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>${pagebean.allcols}]]>allcols>

<cpage>${pagebean.cpage}]]>cpage>

<allpage>${pagebean.allpage}]]>allpage>

<ipage>${pagebean.ipage}]]>ipage>

page>

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

<msds>    

<mid>${item.mid}]]>mid>

<chineseName>${item.chineseName }]]>chineseName>

<englishName>${item.englishName}]]>englishName>

msds>

c:forEach>

msdss>

Flex 中发送调用方法(

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

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

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

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

 headerText="化学品中文名称" dataField="chineseName"/>

 headerText="化学品英文名称" dataField="englishName"/>

 headerText="CAS.NO" dataField="casNo"/>

 headerText="危险品货物编号" dataField="unNo"/>

 headerText="分子式" dataField="molecularFormula"/>

 x="321" y="37" id="englishName" name="englishName"/>

 x="530" y="37" id="casNo" name="casNo"/>

 x="119" y="67" id="unNo" name="unNo"/>

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

在来一个发送方法就ok

 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的文件
其内容如下:



  
  
  

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

参考资料:

问题1:

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

  

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

问题2:

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

             这个策略文件是指定允许哪些域的主机通过那些端口链接.

问题3:

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


    
    

否则会出现DefaultHTTP错误.

问题4:

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

[Service]

在服务器端的配置文件中,找到proxy-config.xml文件,里面有一个默认的destination节点 

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

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


        
                http://cnn.com/*
                http://news.yahoo.com/*
        

修改后,保存。
[UI]
为了Flex应用能够访问代理服务,要确保你的应用程序指向正确的service,并设置useProxy 属性为ture.如:
http://cnn.com” useProxy=true” />
http://cnn.com/api?wsdl” useProxy=true” />



你可能感兴趣的:(flex平台)