Flash与数据库交互技术的帮助文档
——作者:王禹稼、李寅
前言:
该项技术对于个人的要求不是很高,简单的应用无需团队合作,但是作为一种现存的技术还是有必要了解一下它的,它本身并不是单独存在的,而是依靠多个技术结合而成的,主要涉及到的技术有Flash动画制作、ActionScript3.0编程、JSP、Servlet、HTML、XML、JDBC、JavaSE中dom4j类的使用。总体来说技术含量一般,但是比较麻烦的是涉及的技术比较多,协调开发就会遇到许多意想不到的障碍,为了解决这些问题,才编撰了这篇文档。网上有几种方式,本文档只是列举一种,只完成一次交互工作,仅供参考。
开发意义:
Flash与数据库的进行数据交互有其存在的意义,例如:在有些项目中,一些应用需要动态的展示某种过程变化,或是想让画面看起来更美观人性化并且还需要显示底层数据。面对这种要求我们就需要考虑使用这项技术了,首先Flash动画制作对个人的要求并不是很高,因为A
dobe公司的 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的风格转向了O
OP,方法和属性可以用AS的类来封装,而且扩充了API,摒弃了一些不良的编程格式(不允许再AS语句中出现影片剪辑控制语句),但是由于这次开发的时间紧迫就没有再细研究AS3的编程规范,而是沿用AS2的格式摸索着写得。下面介绍几个重要的语句:
import flash.events.*; 使用dom4j解析xml文件// 导入类,关键字是“import” import flash.*; var param:Object = root.loaderInfo.parameters; //这个是从JSP/HTML页面中获取参数 var xmlURL:String = param["xmlURL"]; //通过一个Key而取得Value var XML_URL:String=xmlURL; //XML文件的URL var myXML:XML = new XML(); //new 一个XML对象 System.useCodePage = true; //这句话很重要,是编码转化,AS3还是只识别UTF-8 var myXMLURL=new URLRequest(XML_URL); //封装请求 var myLoader=new URLLoader(myXMLURL); //封装读取对象 myLoader.addEventListener("complete", xmlLoaded); //注册,与Java类似 myXML.ignoreWhite=true; //忽略空白数据 function xmlLoaded(event){ //事件发生时所调用的方法 myXML=XML(myLoader.data); //将loader读取的数据封装为XML对象 XMLString()); //在控制台输出XML对象的内容 var bahe:XMLList = myXML.elements("楼梓庄闸"); //获取子节点对象 = bahe.elements("UPZ").child("*"); //获取标签中的内容,同时赋给 = bahe.elements("Q").child("*"); //(接上)动态文本框 } |
语法上基本跟Java没什么太大的区别,流程控制也相同,有兴趣的可以试一试。上面的代码对于一次交互的情况基本上够用了,唯一需要注意的是声明变量的关键字是“var”,AS3.0也是严格区分大小写的,而变量类型是写在变量名后的(变量名:类型)。
AS是在动画播放到其所在的那一帧时才运行的,无论是在舞台场景下还是在影片剪辑的场景下都一样编写,需要注意的是测试只要“ctrl+enter”就可以,发布的话,设置发布的路径和相关参数即可。
3、Servlet的编写:
Servlet的代码量不是很大,主要是获取参数,调用持久层的方法,调用XML生成的方法,之后添加参数重定向到JSP页面,还有就是编码是UTF-8。
首先是从request中获取参数,这个参数是业务相关的,之后根据这个参数做数据库的访问或是转发不同页面,用途视情况而定。这里主要提一下将参数重定向到JSP的时候一定要用绝对路径,因为最后生成的页面中要加载swf文件,而且这个swf还要获取参数,如果用相对路径有可能会无法加载,而且原因尚不明确,为了避免不必要的麻烦,还是都是用绝
对路径的好,不光是Servlet,其他用到路径(URL)的时候最好都用绝对路径,而且特别注意一定要是重定向到JSP页面,否则加载不了swf文件。
String serverPath = ServerName() +":"+ ServerPort(); String filePath = Session()//将XML保存在工程路径下,这个很重要 .getServletContext() .getRealPath("")+"/static/"; String name = Parameter("name"); XmlParse dom4j=new XmlParse(filePath);//自定义的生成XML文件的类 ate(filePath); HttpSession session = Session(); String xmlURL = ""+serverPath +"/byh/l"; session.setAttribute("name", name); session.setAttribute("xmlURL", xmlURL); String requestPath = ""+serverPath//注意一定是绝对路径 +"/byh/static/b.jsp"; response.sendRedirect(requestPath); |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论