一直走Flash路线肯定会碰到一定的瓶颈。有时候Flash只是一个外表,事实也确实如此,我们必须给Flash一定的后台支持。现在后台程序又很多,这里我选择JSP。
好了,先来讲讲最基本的基于http的数据传递方式,get和post。在JSP里,后台服务程序从URL中分析提取环境变量的方式为GET方式。POST方式则是作为一种标准的输入,来传递变量值得。GET方式在URL中传递的变量有一定的字符限制,而POST方式则没有。所以,在你决定选择用那种方式传递你的数据时,你必须清晰地考虑到这些。
嗯,首先我们来讲讲通过GET方法发送变量,在Flash中你可以有很多方法和类支持这种传输协议。最简单的就是getURL。通过URL来传递,例如:_root.getURL("test.jsp?num=123","GET");这样num=123就传递给了test.jsp。在jsp文件中只需要通过request.getParamenter("num")获得这个字符串就可以了。
同样,Macromedia Flash也支持导入外部数据,比如load,loadVariables,loadVariablesNum方法等。你获许需要发送一个id,然后后台通过一定的逻辑运算之后返回一个数据给Flash,你就可以用以上的方法了。
很多时候往往我们不能靠单单的数组或环境变量来组织我们的数据结构。我们会选择XML。在Flash中把需要发送的数据整理成一个XML对象,然后POST给后台服务程序。我们可以用XML.send XML.sendAndLoad来发送,并在JSP中通过resquest.getInputStream()获得。接着我们就可以用SAX或DOM解析它,并进行进一步的操作了。
在ActionScript 2.0中, Macromedia加入了LoadVars类,使用LoadVars类我们可以操作类似表单提交的动作了,比如LoadVars.send(),LoadVars.sendAndLoad()方法等。JSP里的编辑就和普通接受表单一样,是不是用的很亲切呢?
这篇文章主要介绍了一个思想,更多的大家继续探索吧。
最后还要提一些应用中碰到的问题:
1、缓存问题。由于第一次的request请求返回的数据就近入了浏览器的缓存,如果第二次还是发送相同的请求的话,那么Flash导入的数据是原封不变的,所以我们每一次的请求的url必须不一样,最简单的就是加上一个随机数。例如:"test.jsp?num=123&r=" add random(10)
2、谈一下中文的问题,这对一个Flash开发者而言确实是个麻烦。但是Java很好的Unicode能力,这也是我选择它的一个原因。在JSP文档里一定要包含:<% @page contentType="text/html;charset=utf-8" % >和request.setCharacterEncoding("utf-8"); 别的就没什么了。
看到这里,希望你有新的灵感。
<转载> |