Flex + Hessian 学习笔记(二)

xiaoxiao2026-08-23  12

这个例子是,输入一个用户信息,并保存到服务端。第一个目的是实验一下传送对象;再一个目的是感觉Hessian例子里的用法不太舒服,又要实现mx.rpc.IResponder,又要处理AsyncToken,还要send,所以把这些封装了一下,由BaseService实现mx.rpc.IResponder,由UserService类开放服务接口(既提供java端UserService的方法),这样其它类就可以像使用普通对象一样使用UserService类。

java 代码 public class UserBean implements Serializable {          private Integer userId;                private String userName;                private String password;                private String companyName;               getter setter ...   }   java 代码 public interface UserService {          public String getUserName(Integer userId);                public List<UserBean> saveUser(UserBean userBean);    }   java 代码 public class UserServiceImpl extends HessianServlet implements UserService {          private static List<UserBean> userDataSource = new ArrayList<UserBean>();                public String getUserName(Integer userId) {            return "MyName" + userId;        }          public List<UserBean> saveUser(UserBean userBean) {            userBean.setUserId(userDataSource.size() + 1);            userDataSource.add(userBean);            return userDataSource;        }   }   xml 代码 <servlet>       <servlet-name>userService</servlet-name>       <servlet-class>myhessian.service.UserServiceImpl</servlet-class>   </servlet>    <servlet-mapping>       <servlet-name>userService</servlet-name>       <url-pattern>/userService</url-pattern>   </servlet-mapping>  

以上是服务端的java代码,下面是flex的代码

as3 代码 public class UserBean {               public var userId : int;                public var userName : String;                public var password : String;                public var companyName : String;    }   as3 代码 public class BaseService implements IResponder {               protected var resultCallbackFunction : Function;                protected var faultCallbackFunction : Function;                public function BaseService(resultCallback:Function=null, faultCallback:Function=null) {            if (resultCallback == null) {                resultCallbackFunction = defaultFunction;            } else {                resultCallbackFunction = resultCallback;           }            if (faultCallback == null) {                faultCallbackFunction = defaultFunction;            } else {                faultCallbackFunction = faultCallback;           }       }               public function result(data:Object):void {            var event:ResultEvent = data as ResultEvent;           resultCallbackFunction(event.result);       }               public function fault(data:Object):void {            var event:ResultEvent = data as ResultEvent;           faultCallbackFunction(event.result);       }               public function defaultFunction(data:Object):void {        }   }   as3 代码 public class UserService extends BaseService {               private static var _userService : HessianService;                protected static function getUserService():HessianService {            if (!_userService) {                _userService = new HessianService("userService");            }            return _userService;        }               public function UserService(resultCallback:Function=null, faultCallback:Function=null) {            super(resultCallback, faultCallback);        }               public function getUserName(userId:int):void {            var token:AsyncToken = getUserService().getUserName.send(userId);            token.addResponder(this);        }               public function saveUser(user : UserBean):void {            var token:AsyncToken = getUserService().saveUser.send(user);            token.addResponder(this);        }   }   xml 代码 <mx:Application         xmlns:mx="http://www.adobe.com/2006/mxml"         layout="absolute" >          <mx:Script>           [CDATA[              import hessian.service.UserService;              import hessian.bean.UserBean;                            public function refreshUserDataGrid(data:Object):void {                  //只能as Array,不能as ArrayCollection                  userDataGrid.dataProvider = data as Array;              }                            public function onClick():void {                  var user : UserBean = new UserBean();                  user.userName = nameInput.text;                  user.password = passwordInput.text;                  user.companyName = companyInput.text;                                    var userService : UserService = new UserService(refreshUserDataGrid);                  userService.saveUser(user);              }          ]]       </mx:Script>          <mx:Label x="10" y="10" text="Name" width="59"/>       <mx:TextInput x="77" y="8" id="nameInput"/>       <mx:Label x="10" y="36" text="Password"/>       <mx:Label x="10" y="62" text="Company"/>       <mx:TextInput x="77" y="34" id="passwordInput"/>       <mx:TextInput x="77" y="60" id="companyInput"/>       <mx:Button x="77" y="90" label="Button" click="onClick()"/>       <mx:DataGrid x="10" y="120" width="271" id="userDataGrid">           <mx:columns>               <mx:DataGridColumn headerText="ID" dataField="userId"/>               <mx:DataGridColumn headerText="Name" dataField="userName"/>               <mx:DataGridColumn headerText="Company" dataField="companyName"/>           </mx:columns>       </mx:DataGrid>          </mx:Application>   相关资源:Java 面经手册·小傅哥(公众号:bugstack虫洞栈).pdf
转载请注明原文地址: https://www.6miu.com/read-5051693.html

最新回复(0)