Flex与Java Servlet交互的示例分析
本篇文章给大家分享的是有关Flex与Java Servlet交互的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
为了搞清楚Flex是如何与后台进行通讯,本人在刚开始学Flex前五天可以说是碌碌无为,这个文章的目的就是为了使初学者少走弯路。
交互原理:三个字母---------XML,客户端接受从服务器端发送过来的XML数据。
工作流程:客户端很简单就一个DataGrid组件,用来显示服务器端传送过来的数据。对应的mxml文件如下:
XML 代码
﹤?xml version="1.0" encoding="UTF-8"?﹥ ﹤mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"﹥ ﹤mx:Model source="http://localhost:8080/flex/first" id="model"﹥ ﹤/mx:Model﹥ ﹤mx:Panel title="用户信息" width="776" height="281" fontSize="18"﹥ ﹤mx:DataGrid dataProvider="{model.user}" width="748" height="231"﹥ ﹤mx:columns﹥ ﹤mx:DataGridColumn dataField="name" headerText="用户"﹥ ﹤/mx:DataGridColumn﹥ ﹤mx:DataGridColumn dataField="pwd" headerText="密码"﹥ ﹤/mx:DataGridColumn﹥ ﹤mx:DataGridColumn dataField="school" headerText="现在学校"﹥ ﹤/mx:DataGridColumn﹥ ﹤/mx:columns﹥ ﹤/mx:DataGrid﹥ ﹤/mx:Panel﹥ ﹤/mx:Application﹥
在此需要注意﹤mx:Model﹥标签,source属性指定的是一个servlet映射,这个servlet的作用是利用response向客户端写入XML。
读取数据库数据,生成XML文件由两个类组成,一个为FirstServlet.java,一个为XML.java,其中前者就是一个普通的servlet,用来写XML文件,后者专门用来生成XML文件,由Java XML API操作完成。废话少说,先看看代码
FirstServlet代码摘要:
Java 代码
try { xml.init() ; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ; //*********建立数据库 名为flex*************// String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=flex" ; //**********换上你自己的用户名和密码信息************// con = DriverManager.getConnection(url, "sa", "135780") ; stmt = con.createStatement() ; //**********里面建表名为USERS 具体SQL语句见附件下载**********// result = stmt.executeQuery("select * from USERS") ; } catch(Exception e) { e.printStackTrace() ; } //重要:设置响应格式为XML格式 response.setContentType("text/xml") ; response.setCharacterEncoding("UTF-8") ; PrintWriter out = response.getWriter() ;
以上为servlet连接数据库并设置响应格式的代码,下面是写XML文件的关键代码:
Java 代码
while(result.next()) { String[] strs = new String[3] ; strs[0] = result.getString("name") ; strs[1] = result.getString("pwd") ; strs[2] = result.getString("school") ; //*****创建XMLdocument*******// xml.create(strs) ; } result.close() ; stmt.close() ; con.close() ; //*******写XML文件到客户端********// xml.output(out) ;
其中末行的xml是XML.java的一个实例,XML的一些重要方法如下:
Java 代码
/** * 把XML文档写入到输出流 * * @param out * ----指定的输出流 * @throws Exception * * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司 */ public void output(Writer writer) throws Exception{ Transformer trans = TransformerFactory.newInstance().newTransformer() ; trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8") ; Source source = new DOMSource(document) ; Result result = new StreamResult(writer) ; trans.transform(source, result) ; writer.flush() ; writer.close() ; }
Java 代码
/** * 创建XML文档 * * @param strs * -------传送过来的姓名和密码和学校参数 * * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司 */ public void create(String[] strs) { //*********级子节点******// Element first = document.createElement("user") ; root.appendChild(first) ; for(int i=0; i﹤strs.length; i++) { if(i==0) { //*******第二级子节点******// Element name = document.createElement("name") ; name.appendChild(document.createTextNode(strs[i])) ; first.appendChild(name) ; } if(i==1) { Element pwd = document.createElement("pwd") ; pwd.appendChild(document.createTextNode(strs[i])) ; first.appendChild(pwd) ; } if(i==2) { Element school = document.createElement("school") ; school.appendChild(document.createTextNode(strs[i])) ; first.appendChild(school) ; } } }
其实说到底,这个例子没有什么神秘的,只要记住,XML是Flex与后台进行数据交换的媒介,无论后台数据怎么千变万化,出口就有这一个。如果试验,可以先从简单开始,不涉及查询数据库,直接在servlet写出XML。
如果大家还有什么疑问,欢迎留言,我也是初学者,让我们共同进步。。。
程序运行方法:
STEP1: 在SQLServer2000里建一个数据库flex,然后在查询分析器导入附件所带的SQL语句.sql,生成所需表格
STEP2: 把FlexDataService安装目录下的flex.war解压到(比如说D:\a),然后把D:\a\web-inf下的flex整个目录拷贝到 WEB程序的WEB-INF下,把D:\a\web-inf\lib目录下的jar包拷贝到对应WEB程序下的lib目录下。
STEP4: 拷贝工程文件到你所建的MyEclipse工程
因为Flex与Java进行通信涉及到的文件会非常多,如果你以前会部署,那再好不过。一般情况下,根据上述步骤能部署成功。
以上就是Flex与Java Servlet交互的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。