flex4连接java web services步骤

(注:这是我将自己网易上的文章搬过来了,前一阵子在网易博客写的,感觉还是博客园好一些,网易博客地址:http://flex4.blog.163.com/  )

下面记录完整的flex4连接java web services步骤:

1、打开MyEclipse8.5 ,新建Web project项目,名称自定义,我这里写为Demo ,如下图:
点击“Finish”,继续下一步。
2、下载 BlazeDS第三方工具,下载地址为http://opensource.adobe.com/wiki/display/blazeds/download ,这是用来连接java和flex的第三方工具,开源免费的。(附件一)
     解压后的文件夹打开,将blazeds.war文件用RAR解压后,复制WEB-INF文件夹到你刚刚新建的工程文件夹下,替换原有的WEB-INF文件夹(先删除原先的,再粘贴刚刚复制的,不要合并文件夹) ,然后在MyEclipse8.5中刷新项目,整个项目结构如下图:
 
然后在src上定义新的包com.demo.tee   ,并且在包内新建Hee类
 
 
然后打开WEB-INF--->flex----remoting-config.xml文件,在现有代码下面添加如下配置
<destination id="Hee">
     <properties>
      <source>com.demo.tee.Hee</source>
     </properties>
    </destination>
<!-- 
 id="Hee",这个Hee就是我们刚刚新建的那个类名,这个名字至关重要
-->

配置后如下图

 

继续下一步,在刚刚新建的类中编写如下代码:

package com.demo.tee;
public class Hee {
 /**
  * 我们模拟一个简单的登录过程,flex端会通过BlazeDS插件连接java的这个方法完成验证,login方法会返回
  * 验证结果,下面简单的代码不再解释,会程序的都可以看懂
  * @param user
  * @param pass
  * @return
  */
 public String login(String user,String pass){
  if(user.equals("admin")&&pass.equals("admin")){
   return "OK";
  }else{
   return "NO";
  }
 }
}
然后将此web应用发布到tomcat服务器上,发布过程同往常一样,不详述3、在falsh builder4.5中新建flex项目,名称自定义,我这里写为TestDemo,应用程序类型默认为WEB,SDK默认,



点击“下一步”,服务器类型选择“java”,勾选“使用远程对象访问服务”,选中“BlazeDS” ,根文件夹选你tomcat---》webapp文件夹夹下新发布的Demo文件夹,并且修改相应的根URL以及上下文根目录
 
 
这个时候启动你的tomcat,点击“验证配置”,看顶部提示
 
 
这样表示配置成功,点击完成,继续下一步
编辑器默认会打开TestDemo.mxml  编辑此文件代码如下
<?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:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 <!-- id="test",表示在flex中我们可以用test来调用java代码Hee类中的一些方法  -->
 <!--  destination="Hee"中的Hee对应上面XML中配置的Hee -->
  <s:RemoteObject id="test" destination="Hee" result="resultHandler(event)" endpoint="/Demo/messagebroker/amf">
   
  </s:RemoteObject>
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;
   import mx.controls.Alert;
   //调用java服务器端的方法
   private function login():void{
    //通过RemoteObject的对象test,直接调用java端的登录方法Login()
    test.login(loginusername.text,loginpassword.text);
   }
   //调用成功后处理事件
   private function resultHandler(event:ResultEvent):void{
    //显示java服务器返回的结果
    var helloResult:String=event.result as String;
    /**
     * 如果服务器返回OK,则跳转页面
     * */
    if(event.result.valueOf()=="OK"){
     ExternalInterface.call("function()  " +
      "{window.location.href='http://localhost:8080/Demo/Demo-debug/Index.html';}   ");  
    }else{
     Alert.show(helloResult,"提示信息");
    }
   }
   
  ]]>
 </fx:Script>
 <s:layout>
  <s:HorizontalLayout horizontalAlign="center" verticalAlign="middle">
   
  </s:HorizontalLayout>
 </s:layout>
 <s:Panel id="loginpanel" x="116" y="46" width="521" height="282" color="#2148ED" fontFamily="中易宋体"
    fontSize="20" fontWeight="bold" title="系统登录">
  <s:Button id="loginbtn" x="147" y="200" width="80" height="40" label="登录" color="#050505"
      fontSize="21" click="login()"/>
  <s:Button id="quxiaobtn" x="262" y="200" width="80" height="40" label="取消" color="#030303"
      fontSize="21"/>
  <s:TextInput id="loginusername" x="166" y="97" width="183" height="29" fontSize="22" fontWeight="bold"/>
  <s:TextInput id="loginpassword" x="168" y="142" width="183" height="29" displayAsPassword="true" fontSize="22" fontWeight="bold"
      enter="login()"/>
  <s:Label id="usernamelabel" x="76" y="100" width="81" height="22" color="#040404" text="用户名:"/>
  <s:Label id="passwordlabel" x="76" y="147" width="81" height="24" color="#020202" text="口    令:"/>
 </s:Panel>
</s:Application>

然后在和TestDemo.mxml同级默认包下新建Index.mxml 在里面随便放入一个按钮即可,重启你的tomcat服务器,

在TestDemo.mxml源码上面点击右键选择debug模式运行该程序,如果登录成功,则会跳转到只有一个按钮“success”的页面,如果失败就会弹出提示框,我们在java代码中定义的用户名密码均为admin,下面两个截图第一个演示失败,第二个演示成功



用123做用户,提示失败,下面是正确的用户名,会跳转到有success按钮的页面



至此,一个例子成功完成。
 
PS:
1、在调试的过程中,如果检查了很多遍,一个简单的代码经过修改后运行起来报错,不管怎么改都还是之前的错误界面,这个时候建议先清理一下IE缓存,然后重启   tomcat服务器,在做WEB项目的时候这个是常识,现在我们做的又多了flex,那么记得也更新一下flex,方法是在项目上右键,选择“属性”,然后选择“服务   器技术”,然后点击一下“验证设置”,然后点击“确定”,这个时候flex会整体刷新一次,我有好多问题都是因为这个导致的。
2、遇到问题冷静,要会找问题,对于编程来说,google相对要比百度好用的多,google的搜索结果更加准确一些。
3、其实java端返回的数据是JSON格式的,上述例子中尽管我只返回了一个OK,它也会被BlazeDS封装为JSON数据,当我们要返回多个值的时候可以这样写
public String message(){
 String mess="{\"name\":\"lisi\",\"age\":22}";
 return mess;
} 

 

写为JSON格式的数据就可以了,在flex端有方法可以读取这些值.。

posted on 2013-12-21 12:46  下一行code  阅读(452)  评论(0编辑  收藏  举报

导航