如何解决Flex对象持久化问题
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要为大家展示了"如何解决Flex对象持久化问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何解决Flex对象持久化问题"这篇文章吧。关于Fl
千家信息网最后更新 2024年09月22日如何解决Flex对象持久化问题
这篇文章主要为大家展示了"如何解决Flex对象持久化问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何解决Flex对象持久化问题"这篇文章吧。
关于Flex对象持久化
关于Flex对象序列化和持久化的问题,很多人认为对象不能拷贝到服务器,其实浅度的拷贝是可以做到的。
我们来看这样一个例子:
viewplaincopytoclipboardprint? privatefunctiontest():void{ varcanvas:Canvas=newCanvas(); canvas.width=100; canvas.height=100; //保存到ByteArray varb:ByteArray=newByteArray(); b.writeObject(canvas); //取出对象 b.position=0; varo:Object=b.readObject(); varc:Canvas=objectToInstance(o,Canvas)asCanvas; trace(c.width); trace(c.height); this.addChild(c); }
◆该例子省略了保存到服务器,和从服务器中取出的过程,只是简单保存了Flex对象,然后就立即拿出ByteArray中的对象。因为中间的ByteArray是不变的(也就是说到服务器端类型变为byte[],其中的内容也不会改变),故中间过程可以忽略。
***的结果为100和100,说明拿出的Flex对象的宽和高都保持住了。
那么在中间的过程加入服务器操作,道理也应如此:
viewplaincopytoclipboardprint? privatefunctiontest():void{ varcanvas:Canvas=newCanvas(); canvas.width=100; canvas.height=100; //保存到ByteArray varb:ByteArray=newByteArray(); b.writeObject(canvas); //保存到服务器 remoteObject.Save(b); }
然后在服务器端:
viewplaincopytoclipboardprint? publicvoidSave(ByteArrayba) { //可以保存到文件 FileStreamfs=newFileStream(Path,FileMode.Createm,FileAccess.Write); fs.Write(ba.GetBuffer(),0,ba.GetBuffer().Length); fs.Close(); //===== //或者保存到数据库 newFlexObjectDAO().Save(ba.GetBuffer); }
◆这样,我们可以随时读取这个Flex对象,并处理,服务器端的读取程序我就不写了,只写Flex部分:
viewplaincopytoclipboardprint? privatefunctiontest():void{ //取出对象 remoteObject.Load(); } privatefunctionremoteObjectResult(event:ResultEvent):void{ varb:ByteArray=eent.resultasByteArray; b.position=0; varo:Object=b.readObject(); varc:Canvas=objectToInstance(o,Canvas)asCanvas; trace(c.width); trace(c.height); this.addChild(c); }
同理,也可以取出100和100。
objectToInstance方法的内容:
viewplaincopytoclipboardprint? publicstaticfunctionobjectToInstance(object:Object,clazz:Class):* { varbytes:ByteArray=newByteArray(); bytes.objectEncoding=ObjectEncoding.AMF0; varobjBytes:ByteArray=newByteArray(); objBytes.objectEncoding=ObjectEncoding.AMF0; objBytes.writeObject(object); vartypeInfo:XML=describeType(clazz); varfullyQualifiedName:String=typeInfo.@name.toString().replace(/::/,"."); registerClassAlias(fullyQualifiedName,clazz); varlen:int=fullyQualifiedName.length; bytes.writeByte(0x10);//0x10isAMF0for"typedobject(classinstance)" bytes.writeUTF(fullyQualifiedName); bytes.writeBytes(objBytes,1); bytes.position=0; varresult:*=bytes.readObject(); returnresult; }
以上是"如何解决Flex对象持久化问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
对象
服务器
服务
内容
问题
篇文章
过程
例子
拷贝
学习
帮助
也就是
也就是说
只是
序列
数据
数据库
文件
方法
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库计划备份
荆州网络安全维护哪家好
迅雷 推荐静态服务器
谁家做搜索软件开发的
软件开发大专福建
软件开发aop
我的世界服务器后台老是尝试重连
网站查询服务器商
计算机三级网络技术第三题
正定信息化软件开发专业服务
数据库修改文字乱码修改环境变量
网络安全修炼手册
怎么查看数据库中表的结构
计算机网络技术笔记本电脑使用
外文数据库如何下载
x服务器 linux
软件开发的新技术有哪些
网络安全防火墙ppt
db2导入txt数据库
软件开发需求调研的重要性
数据库关闭文件格式表示
30米箱梁张拉设计数据库
山东网络安全博览
村游网络技术有限公司怎么样
内网服务器端口
闵行区好的软件开发有什么
网络安全秘钥在哪
数据库登录权限怎么设置
灵武app软件开发价格
医学论文投稿的数据库