• 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端有方法可以读取这些值.。

  • 相关阅读:
    [NC13331]城市网络
    Codeforces Round #638 (Div. 2)
    牛客练习赛62
    “科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛
    Codeforces Round #635 (Div. 2)
    Codeforces Round #631 (Div. 2)
    牛客每日一题
    Codeforces Round #627 (Div. 3)
    MySQL查看建表语句
    Oracle的number数据类型
  • 原文地址:https://www.cnblogs.com/ssh2/p/3485007.html
Copyright © 2020-2023  润新知