`
xpp02
  • 浏览: 1048905 次
社区版块
存档分类
最新评论

Java与Flex学习笔记(5)----Flex与Java通信之HttpService方式

阅读更多

 

    Flex用RemoteObject方式与Java通信是最常用的方式,这是一种最直观的方式。当然Flex也可以用HttpService与服务器类如servlet通信,这也是本次学习的重点。


         这次学习是在上节的基础上进行的。本节学习用到的LoginEvent.as,LoginModule.mxml文件代码如上节所示。

好了,新建一个servlet类LoginServlet.java,代码如下所示:


  1. package com.yqsn.servlet;  
  2.    
  3.    
  4. import java.io.IOException;  
  5. import java.io.PrintWriter;  
  6.    
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.http.HttpServlet;  
  9. import javax.servlet.http.HttpServletRequest;  
  10. import javax.servlet.http.HttpServletResponse;  
  11.    
  12. public class LoginServlet extends HttpServlet {  
  13.     @Override  
  14.     protected void service(HttpServletRequest req, HttpServletResponse resp)  
  15.            throws ServletException, IOException {  
  16.        // TODO Auto-generatedmethod stub  
  17.        req.setCharacterEncoding("utf-8");  
  18.        resp.setCharacterEncoding("utf-8");  
  19.        PrintWriter out=resp.getWriter();  
  20.        String username=req.getParameter("username");  
  21.        String passworld=req.getParameter("passworld");  
  22.        //System.out.println(username+":"+passworld);  
  23.        if(username.equals("admin")&& passworld.equals("123")){  
  24.            out.print(true);  
  25.        }else{  
  26.            out.print(false);  
  27.        }  
  28.     }  
  29. }  



 

 

 

        这个servlet在web.xml中的配置如下所示:


 

  1. <servlet>  
  2.     <servlet-name>LoginServlet</servlet-name>  
  3.     <servlet-class>com.yqsn.servlet.LoginServlet</servlet-class>  
  4.     </servlet>  
  5. <servlet-mapping>  
  6.     <servlet-name>LoginServlet</servlet-name>  
  7.     <url-pattern>/LoginServlet</url-pattern>  
  8.   </servlet-mapping>  



 

       将MyEclipse切换到flash视图,新建一个application文件HttpServiceDemo.mxml,代码如下所示:


 

  1. <?xmlversionxmlversion="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
  3.               xmlns:s="library://ns.adobe.com/flex/spark"  
  4.               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">  
  5.      
  6.     <fx:Script>  
  7.        <![CDATA[ 
  8.            import com.flex.ases.LoginEvent; 
  9.            import com.flex.ases.LoginMess; 
  10.            import com.flex.module.LoginModule; 
  11.            
  12.            import mx.controls.Alert; 
  13.            import mx.managers.PopUpManager; 
  14.            import mx.rpc.events.FaultEvent; 
  15.            import mx.rpc.events.ResultEvent; 
  16.            private var loginModule:LoginModule=new LoginModule(); 
  17.            [Bindable] 
  18.            private var username:String; 
  19.            [Bindable] 
  20.            private varpassworld:String; 
  21.            protected function login_clickHandler(event:MouseEvent):void 
  22.            { 
  23.               // TODOAuto-generated method stub 
  24.                PopUpManager.addPopUp(loginModule,this,true); 
  25.                PopUpManager.centerPopUp(this.loginModule); 
  26.                loginModule.addEventListener(LoginEvent.LOGIN_EVENT,loginHander); 
  27.            } 
  28.            public function loginHander(event:LoginEvent):void{ 
  29.               //varobj:Object=event.loginMess as Object; 
  30.               username=event.loginMess['username']; 
  31.               passworld=event.loginMess['passworld']; 
  32.               httpServiceSend.send(); 
  33.            } 
  34.            
  35.            protected function httpServiceSend_faultHandler(event:FaultEvent):void 
  36.            { 
  37.               // TODOAuto-generated method stub 
  38.               Alert.show(event.fault.message as String,"提示"); 
  39.               
  40.            } 
  41.            
  42.            protected function httpServiceSend_resultHandler(event:ResultEvent):void 
  43.            { 
  44.               // TODOAuto-generated method stub 
  45.               var result:Boolean=event.result as Boolean; 
  46.               if(result==true){ 
  47.                   Alert.show(username+",欢迎您回来!","提示"); 
  48.                   aaa.text=username+",欢迎您回来!"; 
  49.                   login.label=""; 
  50.                   bbb.text=""; 
  51.                   
  52.               }else{ 
  53.                   Alert.show("对不起,用户名或密码不存在!","提示"); 
  54.               } 
  55.               //Alert.show("成功了!"); 
  56.            } 
  57.            
  58.        ]]>  
  59.     </fx:Script>  
  60.      
  61.     <fx:Declarations>  
  62.        <!-- Place non-visualelements (e.g., services, value objects) here -->  
  63.        <s:HTTPService id="httpServiceSend"  url="http://localhost:8000/JavaAndFlexDemo/LoginServlet" useProxy="false"fault="httpServiceSend_faultHandler(event)"result="httpServiceSend_resultHandler(event)" >  
  64.            <s:request >  
  65.               <username>{username}</username>  
  66.                <passworld>{passworld}</passworld>  
  67.            </s:request>  
  68.        </s:HTTPService>  
  69.     </fx:Declarations>  
  70.     <s:Label x="200" y="150" width="182" height="27" fontSize="18" id="aaa" text="您还没有登陆,现在就" verticalAlign="middle"/>  
  71.     <mx:LinkButton x="393"  y="150" width="57"  height="27" label="登陆" id="login" fontSize="18"click="login_clickHandler(event)"/>  
  72.     <s:Label x="459" y="150" width="37" height="27" id="bbb" fontSize="18" text="吧!" verticalAlign="middle"/>  
  73. </s:Application>  



 

 

         从代码中我们可以看出,我们先定义一个HttpServlet发送请求httpServiceSend,然后通过下面这种方式存值:


 

  1. <s:request >  
  2.               <username>{username}</username>  
  3.               <passworld>{passworld}</passworld>  
  4.            </s:request>  



 

         这种方式很简单,我们在后台通过request. getParameter(“参数名”)取值就可以了,当然我们也可以在loginHander(event:LoginEvent)函数中通过下面方式存值并发送请求:


  1. public functionloginHander(event:LoginEvent):void{  
  2.               //varobj:Object=event.loginMess as Object;  
  3.               username=event.loginMess['username'];  
  4.               passworld=event.loginMess['passworld'];  
  5.               var obj:Object=new Object;  
  6.               obj.username=username;  
  7.               obj.passworld=passworld;  
  8.               httpServiceSend.send(obj);  
  9.            }  



 

 

    运行结果是一样的,你可以试试。


    好了,程序算是完成了,现在开始验收结果。


 

打开服务器并部署项目,运行felx页面RemoteObjectDemo.mxml,如下所示:




 

        当我们点击“登陆”按钮后,弹出module页面,如下所示:



 


      当我们输入的用户名和密码都正确时则提示你登陆正确:





 

       输入错误则提示你输入不正确:




 

      可以看出,我们输入的用户名与密码已经用httpservice方式发送到后台并且成功接受了并将结果返回给前台了。


       好了,就学习这么多,下节将学习WebService方式。

更多信息请查看 java进阶网 http://www.javady.com/index.php/category/thread

分享到:
评论

相关推荐

    flex学习笔记

    ### Flex 学习笔记知识点详解 #### 一、Flex 技术概述 - **定义**:Flex 是一种用于构建和部署跨浏览器、跨平台的丰富互联网应用程序 (RIA) 的开源框架。 - **特点**: - 强大的 UI 构建能力:允许开发者创建高度...

    Flex学习笔记1

    Flex学习笔记1 - 容器布局对象状态的切换和数据绑定 在 Flex 应用程序中,容器布局对象状态的切换是非常常见的需求。例如,在购物车应用程序中,我们可能需要在不同的状态之间切换,例如从商品浏览状态到购物车状态...

    Flex与Java交互通讯视频详解

    10. **学习资源**:提供的“Flex与Java通讯-1.exe”和“Flex与Java通讯-2.exe”很可能是教学视频,而“flex连接java.TXT”可能是配套的代码示例或笔记,帮助学习者深入理解并实践Flex与Java的交互技术。 以上是关于...

    Flex学习笔记,入门材料

    ### Flex学习笔记:ActionScript与Flex开发入门 #### 1. ActionScript核心概念 ##### 1.1 类和对象(Class and Object) 类是对象的模板,定义了一组具有相同特性和行为的对象的共同属性和方法。在ActionScript中...

    Flex + Hessian 学习笔记(二)

    "swf"文件"HessianFlexClient.swf"是一个已经编译好的Flex应用程序,它可能是这个学习笔记中的示例应用。SWF是Flash Player和Adobe AIR所执行的文件格式,它包含了编译后的ActionScript代码和资源。用户可以通过这个...

    Flex新手教程_入门级学习笔记

    ### Flex新手教程_入门级学习笔记 #### ActionScript核心概念 **ActionScript(简称AS)** 是一种面向对象的编程语言,主要用于开发Flex应用程序。掌握AS的基础知识对于学习Flex至关重要。 ##### 类和对象 (Class...

    Flex MVC框架 Cairngorm 学习笔记

    由于它是Bindable的,因此当模型中的数据发生变化时,与之绑定的视图能够自动更新,实现了数据的实时同步。 2. **Service Locator**: Service Locator是用于定位服务和数据访问对象的组件,它定义了与数据源(如...

    Flex For JSP.jar

    3. 异步通信:通过HTTPService或WebService组件,Flex可以实现异步与服务器通信,提高用户体验,因为用户不必等待整个页面刷新。 4. 动态内容加载:Flex支持动态内容加载,可以随时更新和修改页面部分,无需重新加载...

    《BlazeDS开发指南》学习笔记

    客户端利用Flex SDK中的组件(如RemoteObject、HTTPService、Producer、Consumer)与服务端通信,同时,HTML、JavaScript和Ajax客户端库也可用于构建与BlazeDS通信的前端。 #### 二、服务端集成步骤 为了在J2EE ...

Global site tag (gtag.js) - Google Analytics