首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex与Java通讯之HttpService方式

2014-01-13 
Flex与Java通信之HttpService方式Flex用RemoteObject方式与Java通信是最常用的方式,这是一种最直观的方式。

Flex与Java通信之HttpService方式

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

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

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

123456789101112131415161718192021222324252627package?com.it161.servlet;import?java.io.IOException;import?java.io.PrintWriter;??import?javax.servlet.ServletException;import?javax.servlet.http.HttpServlet;import?javax.servlet.http.HttpServletRequest;import?javax.servlet.http.HttpServletResponse;??publicclass?LoginServlet?extends?HttpServlet?{????@Override????protectedvoid?service(HttpServletRequest?req,?HttpServletResponse?resp)???????????throws?ServletException,?IOException?{???????//?TODO?Auto-generatedmethod?stub???????req.setCharacterEncoding("utf-8");???????resp.setCharacterEncoding("utf-8");???????PrintWriter?out=resp.getWriter();???????String?username=req.getParameter("username");???????String?passworld=req.getParameter("passworld");???????//System.out.println(username+":"+passworld);???????if(username.equals("admin")&&passworld.equals("123")){???????????out.print(true);???????}else{???????????out.print(false);???????}????}}

?

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

12345678<servlet>?????<servlet-name>LoginServlet</servlet-name>?????<servlet-class>com.yqsn.servlet.LoginServlet</servlet-class>????</servlet><servlet-mapping>????<servlet-name>LoginServlet</servlet-name>????<url-pattern>/LoginServlet</url-pattern>??</servlet-mapping>

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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<?xmlversion="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?com.flex.ases.LoginEvent;???????????import?com.flex.ases.LoginMess;???????????import?com.flex.module.LoginModule;??????????????????????import?mx.controls.Alert;???????????import?mx.managers.PopUpManager;???????????import?mx.rpc.events.FaultEvent;???????????import?mx.rpc.events.ResultEvent;???????????privatevar?loginModule:LoginModule=new?LoginModule();???????????[Bindable]???????????private?var?username:String;???????????[Bindable]???????????private?varpassworld:String;???????????protectedfunction?login_clickHandler(event:MouseEvent):void???????????{??????????????//?TODOAuto-generated?method?stub???????????????PopUpManager.addPopUp(loginModule,this,true);???????????????PopUpManager.centerPopUp(this.loginModule);???????????????loginModule.addEventListener(LoginEvent.LOGIN_EVENT,loginHander);???????????}???????????publicfunction?loginHander(event:LoginEvent):void{??????????????//varobj:Object=event.loginMess?as?Object;??????????????username=event.loginMess['username'];??????????????passworld=event.loginMess['passworld'];??????????????httpServiceSend.send();???????????}??????????????????????protectedfunction?httpServiceSend_faultHandler(event:FaultEvent):void???????????{??????????????//?TODOAuto-generated?method?stub??????????????Alert.show(event.fault.message?as?String,"提示");?????????????????????????}??????????????????????protectedfunction?httpServiceSend_resultHandler(event:ResultEvent):void???????????{??????????????//?TODOAuto-generated?method?stub??????????????var?result:Boolean=event.result?as?Boolean;??????????????if(result==true){??????????????????Alert.show(username+",欢迎您回来!","提示");??????????????????aaa.text=username+",欢迎您回来!";??????????????????login.label="";??????????????????bbb.text="";????????????????????????????????}else{??????????????????Alert.show("对不起,用户名或密码不存在!","提示");??????????????}??????????????//Alert.show("成功了!");???????????}??????????????????]]>????</fx:Script>????????<fx:Declarations>???????<!--?Place?non-visualelements?(e.g.,?services,?value?objects)?here?-->???????<s:HTTPService?id="httpServiceSend"??url="http://localhost:8000/JavaAndFlexDemo/LoginServlet"?useProxy="false"fault="httpServiceSend_faultHandler(event)"result="httpServiceSend_resultHandler(event)"?>???????????<s:request>??????????????<username>{username}</username>??????????????<passworld>{passworld}</passworld>???????????</s:request>???????</s:HTTPService>????</fx:Declarations>????<s:Label?x="200"?y="150"?width="182"?height="27"?fontSize="18"?id="aaa"?text="您还没有登陆,现在就"?verticalAlign="middle"/>????<mx:LinkButton?x="393"??y="150"?width="57"??height="27"?label="登陆"?id="login"?fontSize="18"click="login_clickHandler(event)"/>????<s:Label?x="459"?y="150"?width="37"?height="27"?id="bbb"?fontSize="18"?text="吧!"?verticalAlign="middle"/></s:Application>

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

1234<s:request?>??????????????<username>{username}</username>??????????????<passworld>{passworld}</passworld>???????????</s:request>

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

123456789public?functionloginHander(event:LoginEvent):void{??????????????//varobj:Object=event.loginMess?as?Object;??????????????username=event.loginMess['username'];??????????????passworld=event.loginMess['passworld'];??????????????var?obj:Object=new?Object;??????????????obj.username=username;??????????????obj.passworld=passworld;??????????????httpServiceSend.send(obj);???????????}

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

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

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

Flex与Java通讯之HttpService方式

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

Flex与Java通讯之HttpService方式

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

Flex与Java通讯之HttpService方式

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

Flex与Java通讯之HttpService方式

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

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

原创文章,转载请注明出处:http://www.it161.com/article/webDetail?articleid=140111230433

更多原创内容,请访问:http://www.it161.com/

热点排行