Flex4_WebService组件
一、Java端:
1、新建WebServiceProject,在项目名称中输入:FlexWebService,下面Framework选择XFire,点击完成。
2、新建包:com.th.services ,包上右击新建-->其它-->Web Services-->Web Service(在Strategy中选择:Create web service from java class(Bottom-up scenario),将下面的Create new Java bean 选中)-->下一步(Web service name:FlexService,Java package选择刚建的包)-->完成!自动生成了类和接口,和普通项目不同之处在于多了一个“WebServices”文件夹及下面的“services.xml”文件。
services.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <!-- 将来Flex调用的服务名称 --> <name>FlexService</name> <serviceClass>com.th.services.IFlexService</serviceClass> <implementationClass> com.th.services.FlexServiceImpl </implementationClass> <style>wrapped</style> <use>literal</use> <scope>application</scope> </service></beans>
3、为IFlexService接口及实现添加登录方法:
package com.th.services; public class FlexServiceImpl implements IFlexService { public String login(String userName, String userPwd) { String result="-1"; if("admin".equals(userName) && "123".equals(userPwd)){ result="0"; } return result; } }
4、部署运行项目,浏览器地址:http://localhost:8090/FlexWebService/services/FlexService?wsdl 如果看到的是一堆XML,说明创建成功!
二、Flex端
<?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" initialize="init()"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; private function init():void{ btn_login.addEventListener(MouseEvent.CLICK,login); } //登录 private function login(event:MouseEvent):void{ // WebService对象.方法名.send(); webSer.login.send(); } //返回处理 private function resultLoginHandle(event:ResultEvent):void{ var result:int=int(event.result.toString()); switch(result){ case 0: Alert.show("登录成功!","提示"); break; default: Alert.show("用户名或密码错误!","提示"); break; } } private function faultLoginHandle(event:FaultEvent):void{ //返回错误处理 } ]]> </fx:Script> <fx:Declarations> <s:WebService id="webSer" wsdl="http://localhost:8090/FlexWebService/services/FlexService?wsdl" showBusyCursor="true"> <!--name指的是Service中的方法名,必须和服务端方法名一致--> <s:operation name="login" result="resultLoginHandle(event)" fault="faultLoginHandle(event)"> <s:request> <!--方法参数列表,顺序,个数与服务器端要一致--> <in0>{txt_userName.text}</in0> <in1>{txt_userPwd.text}</in1> </s:request> </s:operation> <!--有多个方法,继续如上添加 <s:operation>节点即可--> </s:WebService> </fx:Declarations> <s:Panel x="37" y="40" width="250" height="200" title="登录"> <s:Label x="37" y="28" text="用户名:"/> <s:Label x="37" y="61" text="密 码:"/> <s:TextInput id="txt_userName" x="82" y="24"/> <s:TextInput id="txt_userPwd" x="83" y="56" displayAsPassword="true"/> <s:Button x="83" y="115" label="登录" id="btn_login"/> </s:Panel> </s:Application>