Flex + Hessian 学习笔记(一)

来源:互联网 发布:女生喜欢多大尺寸 知乎 编辑:程序博客网 时间:2024/05/29 10:30
Hessian是Caucho开发的一种二进制Web Service协议。他们的开源实现采用Apache许可。详情请浏览http://hessian.caucho.com/

废话就不多说了,下面是一个Flex + Hessian 的小程序,直接看代码吧。
java 代码
 
  1. //java服务端接口  
  2. public interface MyHessianService {  
  3.   
  4.     public String getUserName(Integer userId);  
  5. }  
java 代码
 
  1. import com.caucho.hessian.server.HessianServlet;  
  2.   
  3. //java服务端接口实现类  
  4. public class MyHessianServiceImpl extends HessianServlet implements  
  5.         MyHessianService {  
  6.   
  7.     public String getUserName(Integer userId) {  
  8.         return "MyName" + userId;  
  9.     }  
  10.   
  11. }  
web.xml 代码
 
  1. <servlet>  
  2.     <servlet-name>myservice</servlet-name>  
  3.     <servlet-class>myhessian.service.MyHessianServiceImpl</servlet-class>  
  4. </servlet>  
  5.   
  6. <servlet-mapping>  
  7.     <servlet-name>myservice</servlet-name>  
  8.     <url-pattern>/myservice</url-pattern>  
  9. </servlet-mapping>  

服务端就上面这些,下面是flex的代码

xml 代码
 
  1. <mx:Application   
  2.     xmlns:mx="http://www.adobe.com/2006/mxml"   
  3.     layout="absolute"   
  4.     implements="mx.rpc.IResponder"  
  5.     xmlns:hessian="hessian.mxml.*">  
  6.   
  7.     <mx:Script>  
  8.         [CDATA[  
  9.             import mx.controls.Alert;  
  10.             import mx.rpc.events.ResultEvent;  
  11.             import mx.rpc.AsyncToken;  
  12.               
  13.             public function result(data:Object):void {  
  14.                 var event:ResultEvent = data as ResultEvent;  
  15.                 userName.text = event.result as String;  
  16.             }  
  17.               
  18.             public function fault(data:Object):void {  
  19.                 Alert.show("error");  
  20.             }  
  21.               
  22.             public function onClick():void {  
  23.                 var userId : NumberNumber = Number(userIdInput.text);  
  24.                 //getUserName 就是java服务端 MyHessianServiceImpl 中的 getUserName 方法  
  25.                 var token:AsyncToken = myHessianService.getUserName.send(userId);  
  26.                 token.addResponder(this);  
  27.             }  
  28.         ]]  
  29.     </mx:Script>  
  30.   
  31.     <hessian:HessianService id="myHessianService" destination="myservice" showBusyCursor="true"/>  
  32.   
  33.     <mx:Label x="10" y="10" text="UserID"/>  
  34.     <mx:TextInput id="userIdInput" x="61" y="8"/>  
  35.     <mx:Button x="10" y="36" label="getUserName" click="onClick()"/>  
  36.     <mx:Label id="userName" x="122" y="38" text="" width="99" fontWeight="bold" fontSize="11"/>  
  37.       
  38. </mx:Application>  

输入一个userID, 服务端返回userName
注意需要实现mx.rpc.IResponder接口
原创粉丝点击