Flash与数据库交互帮助文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Flash与数据库交互技术的帮助文档
——作者:王禹稼、李寅
前言:
该项技术对于个人的要求不是很高,简单的应用无需团队合作,但是作为一种现存的技术还是有必要了解一下它的,它本身并不是单独存在的,而是依靠多个技术结合而成的,主要涉及到的技术有Flash动画制作、ActionScript3.0编程、JSP、Servlet、HTML、XML、JDBC、JavaSE中dom4j类的使用。
总体来说技术含量一般,但是比较麻烦的是涉及的技术比较多,协调开发就会遇到许多意想不到的障碍,为了解决这些问题,才编撰了这篇文档。
网上有几种方式,本文档只是列举一种,只完成一次交互工作,仅供参考。
开发意义:
Flash与数据库的进行数据交互有其存在的意义,例如:在有些项目中,一些应用需要动态的展示某种过程变化,或是想让画面看起来更美观人性化并且还需要显示底层数据。
面对这种要求我们就需要考虑使用这项技术了,首先Flash动画制作对个人的要求并不是很高,因为Adobe公司的Flash已经经历了数个版本的更新,无论是从功能上还是操作的人性化上来说都已经十分的成熟了,因此学习起来不会花费很多的时间;
如果Flash想要与外界交流,单靠本身的ActionScript脚本语言是不够的,因为ActionScript3.0目前对数据库的支持还是不够好,所以就要考虑间接地方式了。
正文:
一、开发流程总览:
Flash与数据库交互的方式有很多,本文档只选择一种:Flash通过ActionScript解析XML文件获取数据,而XML文件则是由Servlet生成在服务器端的工程路径下,该XML文件的内容就是通过JDBC查出来的数据,而ActionScript访问XML文件的URL 是JSP页面动态的给Flash以参数的形式传入的。
根据以上说明,开发就可以分工进行了,美工主要负责Flash的制作,AcrionScript 的编写视情况而定,美工本身有能力的可以全权负责,这样便于开发,再者就可以让程序员来完成,只需要获得的美工提供动态显示数据的元件的实例名称即可,再有就是HTML页面的编写,视情况而定,也不是必须的;程序员主要是负责Servlet、JDBC以及JSP页面的编写工作。
而最终完成效果,就是用户通过单击HTML页面,发送一个请求,这个请求中包含有相关的信息,方便服务器端知道要操作哪些数据或是由JSP页面显示哪些Flash;
服务器端Servlet接到请求后,根据request中param获得参数,交给业务Bean处理这个参数,以便查询数据;之后将获得的查询数据以一定的格式写到XML文件中,这里用到了dom4j类;在XML输出完毕后再通过Servlet将request重定向到显示Flash的JSP,之前要把XML的URL和其他相关数据存到Session中,以便JSP获取;待重定向到JSP页面后,解析Session中数据,把XML文件的URL以参数的形式传给swf文件(Flash的不可编辑的可演示文件);swf通过JSP页面生成的HTML文件中的标签获得XML文件的URL,最终通过解析XML文件获得并显示相关的数据,实现整个过程。
二、各项技术具体应用:
1、Flash动画制作:
根据客户的要求制作相应的演示动画,具体制作技术网上都可以查到,本文档只是简述。
这里的关键工作就是处理能够动态显示数据的元件,主要是用动态文本框(见图1.1)。
这个文本框可大可小,可单行显示可多行显示,视情况而定。
最重要就是确定这个元件的实例名称(见图1.2),这个关系到ActionScript的编写工作,而且必须是唯一,以免冲突。
图1.1 动态文本框
图1.2 实例名称
2、ActionScript的编写:
首先要确定代码的书写位置是哪一帧,然后单击那一帧,打开“动作”编辑窗口(见图2.1),在工具栏->窗口->动作。
图2.1 ActionScript书写位置
下面就正式介绍ActionScript3.0(以下简称AS3)的编写,首先3.0开始AS的风格转向了OOP,方法和属性可以用AS的类来封装,而且扩充了API,摒弃了一些不良的编程格式(不允许再AS语句中出现影片剪辑控制语句),但是由于这次开发的时间
紧迫就没有再细研究AS3的编程规范,而是沿用AS2的格式摸索着写得。
下面介绍几个重要的语句:
上面的代码对于一次交互的情况基本上够用了,唯一需要注意的是声明变量的关键字是“var”,AS3.0也是严格区分大小写的,而变量类型是写在变量名后的(变量名:类型)。
AS是在动画播放到其所在的那一帧时才运行的,无论是在舞台场景下还是在影片剪辑的场景下都一样编写,需要注意的是测试只要“ctrl+enter”就可以,发布的话,设置发布的路径和相关参数即可。
3、Servlet的编写:
Servlet的代码量不是很大,主要是获取参数,调用持久层的方法,调用XML生成的方法,之后添加参数重定向到JSP页面,还有就是编码是UTF-8。
首先是从request中获取参数,这个参数是业务相关的,之后根据这个参数做数据库的访问或是转发不同页面,用途视情况而定。
这里主要提一下将参数重定向到JSP 的时候一定要用绝对路径,因为最后生成的页面中要加载swf文件,而且这个swf还要获取参数,如果用相对路径有可能会无法加载,而且原因尚不明确,为了避免不必要的麻烦,还是都是用绝对路径的好,不光是Servlet,其他用到路径(URL)的时候最好都用绝对路径,而且特别注意一定要是重定向到JSP页面,否则加载不了swf文件。
4、访问数据库的相关功能的编写:
这里主要JDBC的相关知识,我就不再重复了,程序员都很熟的,而且在这里不是最关键的技术,最关键的Flash与JSP的交互和Flash对XML文件的解析。
5、生成XML文件功能的编写:
这里涉及到一个类dom4j,顾名思义是文档相关的实现类,这里主要介绍几个重要的方法:
仔细研究,用到的上面都已经写到了,要是涉及到并发访问的问题那就麻烦了,必须重新设计一下结构,这里就不在介绍了
6、JSP页面的编写:
这里主要的就是swf文件的加载和向swf文件传递参数,当然编码还是UTF-8。
这
需要着重注意的地方已经标出来了,首先<1>和<2>是一定要一致的,这是确定swf 文件位置的属性,而且必须是绝对路径,切记!<3>就是向swf文件传的参数,注意“name”
值的大小写,参数书写如同get方式传参的格式“Key1=V alue1&Key2=V alue2……”,多个参数用“&”分隔。
7、测试:
在完成以上工作之后就进入测试阶段,首先是将以上的全部内容部署在服务器,先是用本地方式访问,测试功能的完整性,看看各个组件是否能正常运作;之后用同局域网内的终端访问,测试该模块是否能够正常的使用,以及各个组件的路径是否正确。
三、Q&A:
1、问:测试时动态文本框内的数据不变是怎么回事?
答:可能是在制作文本框的时候,就已经为其添加上了值,只要将其清空即可。
2、问:ActionScript在编译的时候老报“无法找到XXX类”?
答:注意下图2.1中提到的ActionScript的版本问题,图中已经注明,设置成3.0。
3、问:swf读取到的数据存在乱码?
答:注意ActionScript代码中“eCodePage = true;”这句话的位置,一定要是在封装请求之前的,在别的位置会报错。
4、问:“eCodePage = true;”这句话老师报错?
答:同上,注意这句话的位置。
5、问:在网页上只是显示Flash动画但是没有数据?
答:这个问题的原因有很多:第一,检查所有路径,看看是不是用的绝对路径;第二,检查ActionScript中XML的URL地址是否正确;第三,检查Servlet是不是重定向到JSP页面的,还有就是参数是不是在Session里,如果是在request里那么重定向之后参数是不存在的;第四,检查XML文件中的内容是否被是所需要的信息;第五,检查JDBC代码中所查找出的数据是否正确。
6、问:页面上无法显示Flash?
答:下载更新Adobe Flash 浏览器插件,然后检查所有路径是否正确,是否是使用的绝对路径。
四、总述:
本文档只能解决比较简单的Flash与DB交互的问题,客户的要求通常变化无常,只能不断的满足他们,所以这个技术以后可能还会经常用。
现在这个技术的版本是第一版,以后还会更新,需要解决的问题还是很多的,必须经过不断的摸索,这就需要大家共同的努力了。
五、尚待解决的问题:
1、首先就是并发访问的问题,这个应该是最常见的,目前公司所做的项目大都是市政规划方面的,应用人群有限,并发问题不是十分的棘手,但是这不代表不会出问题。
现存的这个版本没有考虑这个问题,主要是对ActionScript这个语言还不是很熟悉,但是明确的是各个影片剪辑在舞台同一帧下运行是以线程方式运行的,所以如果都同时访问同一个文件很
有可能会出错,这是目前需要解决的。
2、还有一个小问题,那就是在Flash商城swf文件的过程中可能会出现容量翻倍的现象,本来只有几十KB的文件,很可能在多次编译生成的过程中突然扩容,少则几MB,这个问题还没有眉目,虽然只是容量变大,但是放到网上供他人访问的话,必然会增加一些读取的时间,也是不可以忽略的。