J2EE项目整合FLEX项目.docx
《J2EE项目整合FLEX项目.docx》由会员分享,可在线阅读,更多相关《J2EE项目整合FLEX项目.docx(15页珍藏版)》请在冰豆网上搜索。
J2EE项目整合FLEX项目
J2EE项目整合FLEX项目
应一个朋友请求,给他写一个J2EE与FLEX的整合DEMO,前些日子项目紧,没来得及,现在有点时间,呵呵,耽搁了这么久,先对这位朋友说个对不起啦!
写了这么多,于是我顺便贴我的空间里吧,校内日志我也摘抄了一份!
我用的环境是MyEclipse6.0+JDK5.0+Tomcat5.5+Flex3.0BuilderForEclipsePlugin+LCDS
MyEclipse6.0的安装,不说了
JDK5.0的安装,不说了
Tomcat5.5也不说了
LCDS可以到下载地址(官方):
要注册Adobe账号,不过是免费使用的
FlexBuilder3下载
去网上找一个FB3_WWEJ_Plugin().exe,安装完成后,在你的MyEclipse中Help->SoftwareUpdates->ManageConfiguration->AddanExtensionLocation指向你FB3_WWEJ_Plugin().exe的安装路径就可以了!
或在你的Eclipse的安装目录下,有个links文件夹,在里面新建一个com.adobe.flexbuilder.feature.core.link文件,里面写着X:
/ProgramFiles/Adobe/FlexBuilder3Plug-in,“X”表示你安装FlexBuilder3Plug-in的盘符!
1.首先创建一个Web项目,如图所示:
2.然后把这个项目部署到Tomcat服务器上的,我用的是Tomcat5.5.。
3.接下来,如果你已把LCDS安装好了的话,那么你就到LCDS文件夹下面把lcds下的WEB-INF里的lib,flex两个文件夹考到你的FlexDemo项目里的WEB-INF下。
4.接下来就是向现有的项目中添加FLEX特性了。
回到你的MyEclipse中在你的项目上右击->FlexProjectNature->addFlexProjectNature,如图所示:
点Next
注意了!
!
!
!
!
这里的Rootfolder要指向你Tomcat下的Webapps里的项目下面,
RootURL是你用来调试用的,localhost后面的FlexDemo名子要和上面Rootfolder里的FlexDemo要相同,
Contextroot这里也是的,
outputfolder这里要指向你MyEclipse项目里的WebRoot下面,这样就好了,如图所示:
这里点一下ValidateConfiguration进行校验一下,就可以了!
!
然后点Finish完成!
接下来就是配置环境了,对于初学者来说,这很麻烦也很乱,不过不要紧,你一点点理清了,也不是件难事!
呵呵,俺就是这样过来的!
回到你的MyEclipse中在你的项目上右击->Properties
会出现下面图形:
点FlexBuildPath选项,在Sourcepath选项卡中,点AddFolder在弹出的对话框中写上flex_src。
这表示所有的FLEX文件都放在这里,这个文件夹就是FLEX的源文件夹!
如同JAVA里src一样!
写完后点OK就可以了,然后在下面的Mainsourcefolder也改成flex_src,不自己写也行,你可点后面的Browse找到原项目里的flex_src也可以,不过你要事先要建好了才行哦!
下面的Outputfolder你在前面已经配置好了,所以这里就不用改了,如果事前没有配置好,那在这里也可以配置,点后面的Browse浏览到你项目里的WebRoot文件夹就可以了,意思就是编译后文件都放到这里!
到这里,Sourcepath里东东就搞定了!
下面我们来看下一个选项卡吧:
我们会看到SDK会有小红叉,这不要紧,你先选中它,然后点Remove,将其移除,过会我会在下面的配置里再把它配好!
这样FlexBulidPath就配置好了!
接下来再选中“FlexCompiler”选项卡,会出现如下图示:
只要把选中“UsedefaultSDK(Currently“FLEX3”)”,然后点一下“Apply”应用一下就OK了!
不信你可以再回到FlexBuildPath里看看上面的SDK已经加进去了!
现在部署一下你的项目吧,如果没有开启,那再开启WEB服务器,开启完成后,你会发现在
可以选中,右击,选中“recreateHTMLTemplates”.你再刷新一下项目,你会看到项目里新增了一个“html-templates”文件夹,现时在WebRoot下面也会出现你FlexDemo.mxml编译后生成的FlexDemo.html文件了,哈哈
接下来要写代码了
先在index.jsp里面随便写点吧
ThisismyJSPpage.
HelloWorld!
!
gotoFlexDemo
然后在FlexDemo.mxml也随便写点吧:
xmlversion="1.0"encoding="utf-8"?
>
Applicationxmlns:
mx="layout="absolute">
Buttonx="178"y="150"label="Button"/>
Buttonx="277"y="150"label="Button"/>
Buttonx="221"y="180"label="Button"/>
TextAreax="182"y="98"/>
Application>
好,我们先来看看能不能实现这个链接!
最后确认一下你的WEB服务器有没有开启,如果开启了,那请你找开IE,在地址栏里写上
http:
//localhost/FlexDemo
如果你设置的端口号是8080,那要加上了,我用了80端口啦,所以不用写了,呵呵…………
修改FlexDemo.mxml代码,进行数据交互:
xmlversion="1.0"encoding="utf-8"?
>
Applicationxmlns:
mx="layout="absolute">
RemoteObjectid="RO"destination="QueryData">
methodname="getData"result="queryResultHandler_1(event)"fault="faultEvent(event)"/>
methodname="getDataByName"result="queryResultHandler_2(event)"fault="faultEvent(event)"/>
RemoteObject>
Script>
[CDATA[
importmx.events.*;
importmx.rpc.events.ResultEvent;
[Bindable]
privatevarCData:
String;
privatefunctionfaultEvent(e:
Event):
void{
ta.text="通讯失败,请稍后重试.";
}
privatefunctionchange_1(e:
Event):
void{
RO.getData();
}
privatefunctionchange_2(e:
Event):
void{
RO.getDataByName(taname.text.toString());
}
publicfunctionqueryResultHandler_1(event:
ResultEvent):
void{
varresult:
String=String(event.result);
CData=result;
}
publicfunctionqueryResultHandler_2(event:
ResultEvent):
void{
varresult:
String=String(event.result);
CData=result;
}
publicfunctionclearText():
void{
ta.text="";
taname.text="";
}
]]>
Script>
Buttonx="110"y="113"label="getString"click="change_1(event);"/>
TextAreaid="ta"x="110"y="61"width="209"text="{CData}"/>
Buttonx="192"y="113"label="getStringByName"click="change_2(event)"/>
Buttonx="110"y="143"label="ClearTextArea"width="209"click="clearText()"/>
TextAreaid="taname"x="192"y="172"height="28"width="127"/>
Labelx="110"y="173"text="SayHelloTo:
"height="27"width="89"/>
Application>
添加JAVA代码:
包结构为com.Demo.java,com.DemoDAO.java
Com.Demo.java代码为:
packagecom;
publicclassDemo{
publicStringgetData(){
System.out.println("infunctionone");
DemoDAODAO=newDemoDAO();
returnDAO.getData();
}
publicStringgetDataByName(Stringname){
System.out.println("infunctiontwo");
DemoDAODAO=newDemoDAO(name);
returnDAO.getDataByName();
}
}
Com.DemoDAO.java代码为:
packagecom;
publicclassDemoDAO{
privateStringname;
publicDemoDAO(){
super();
}
publicDemoDAO(Stringname){
super();
this.name=name;
}
publicStringgetData(){
return"HelloWorld!
!
!
^_^";
}
publicStringgetDataByName(){
return"Hello"+this.name+"!
!
!
^_^";
}
}
上面两段代码一个实现了直接从后台取数据然后显示到前台页面,一个是从前台获取原始数据然后经后台处理后,再传到前台页面显示!
修改项目中的WebRoot->WEB-INF->Flex->Remoting-config.xml文件为:
xmlversion="1.0"encoding="UTF-8"?
>
class="flex.messaging.services.RemotingService">
将我这些代码都考进去,然后编译一下,不行就再部署一下也行,然后再重新打开IE测试一下吧!