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,包里,即可。那么整个flex与java整合就完成了。谢谢大家的分享。
成功例子:(java struts + hibernage+spring+mysql +flex)一个超大数据查询
效果图:(psmsuite/源码)
根据多种条件查询出数据,并且实现分页功能。
其实我们已经整合了flex与java了。接下来就是很简单了。方法有多种,获取数据库里面的数据,我就提供如下这种方法,其他方法自己去摸索,下面我介绍
使用HTTPService请求数据
返回一个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 中发送调用方法(
关键取值方法( dataProvider="{msdsFlex.lastResult.msdss.msds}")其他标签基本一样
在来一个发送方法就ok了
//查询按钮的提交方法
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节点里。
修改后,保存。
[UI端]:
为了Flex应用能够访问代理服务,要确保你的应用程序指向正确的service,并设置useProxy 属性为ture.如: