最近由于工作需要开始看Flex的书籍,下面讲讲Flex作为UI然后后台使用Java作为服务器的三种方式,

(1)安装JDK,Tomcat,MyEclipse

(2)安装Flex Builder

(3)在MyEclipse中新建一个Java Web工程,这个工程可以使用SSH架构

(4)代开Flex Builder新建一个Web工程,注意在选择地下的服务器的时候,我们选择”J2EE“服务器,然后选择打出文件的包,导出到原先建的那个java Web工程目录下,这样Flex和Java的工程就搭建好了,下面介绍如何通信


1.使用remoteObject来通信,这种通信适合于Flex和Java之间有很大的数据交互,首先我们需要下载BlazeDS,然后将解压的文件放到WEB-INF文件夹覆盖Java Web工程下的WEB-INF文件夹

(1)新建一个Java类 FlexToJava

public class FlexToJava{
public String pritStr(String felxParam){
return "I am Java Server,Flex Input parameters is"+flexParam ;
}
}

(2)在WEB-INF文件夹的remoting-config.xml文件添加

<destination id="javaObject">
        <properties>
            <source>com.test.FlexToJava</source> <!--这个类得路径-->
        </properties>
    </destination>(3)在Flexbuilder中新建一个application
<?xml version="1.0" encoding="utf-8"?>    
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"     
               xmlns:s="library://ns.adobe.com/flex/spark"     
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">    
     
    <fx:Script>    
        <![CDATA[    
            import mx.controls.Alert;    
            import mx.rpc.events.ResultEvent;    
             
            protected function myFlex_resultHandler(event:ResultEvent):void{    
                var name:String=event.result as String;    
                Alert.show(name);    
            }    
            protected function button1_clickHandler(event:MouseEvent):void   
            {      
                flexObject.pritStr(txtName.text);    
            }    
        ]]>    
    </fx:Script>    
     
    <fx:Declarations>    
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->    
        <s:RemoteObject id="flexObject" destination="javaOvject" result="myFlex_resultHandler(event)"/>    
    </fx:Declarations>    
    <s:Button x="209" y="135" label="按钮" click="button1_clickHandler(event)"/>    
    <s:TextInput x="166" y="81" id="txtName"/>    
    <s:Label x="10" y="81" text="请输入内容:" fontSize="15" fontWeight="bold" fontFamily="中易黑体"/>    
</s:Application>


2.使用HTTPService使得Flex和Java进行通信

(1)首先我在Java端写一个Servlet

public class JavaServlet extends HttpServlet{
public void doPost(requst,response){
response.getWriter.print("I am Java Server") ;
}
public void doGet(request,response){
doPost(request,response) ;
}
}

(2)在Web.xml中配置Servlet的访问路径,比如说是/java_servlet

(3)在Flex中新建一个application

<!--flex 与java交互-->

<s:HTTPService id="service" fault="service_faultHandler(event)" result="service_resultHandler(event)" url="http://localhost:8080/flexdemo/java_servlet">
            
        </s:HTTPService>

result:是处理返回的函数,faul: 是处理出错的函数。

3.Flex与WebService进行交互

<!--flex与webservice交互这里调用一个天气预报的webservice-->
        <s:WebService id="ws" 
                      wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl" 
                      fault="ws_faultHandler(event)" 
                      result="ws_resultHandler(event)" 
                      showBusyCursor="true">
            <!-- 第二种调用webservice的方法<s:operation>-->
            <!-- <s:operation name="getWeatherbyCityName"> webservice中的方法名-->
            <s:operation name="getWeatherbyCityName">
                <!--传递的参数-->
                <s:request>
                    <!--参数名称必须与webservice中定义的参数名一致否则调用不成功报错-->
                    <theCityName>
                        {city.text}
                    </theCityName>
                </s:request>
            </s:operation>
            
        </s:WebService>