`

Flex与Java Servlet交互实例

阅读更多

自从呼叫中心项目开始,不知不觉,学习Flex已经十天有余了!现在已经基本进入状态,今天本人在此班门弄斧,发一个利用Flex与后台的Servlet进行通讯的例子,希望对一些刚学习Flex的新手有所帮助。为了搞清楚Flex是如何与后台进行通讯,本人在刚开始学Flex前五天可以说是碌碌无为,今天发这个帖子的目的就是为了让后面的兄弟少走弯路。

交互原理:三个字母---------XML,客户端接受从服务器端发送过来的XML数据。

本例工作流程:客户端很简单就一个DataGrid组件,用来显示服务器端传送过来的数据。对应的mxml文件如下:

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>     
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">     
  3.     <mx:Model source="http://localhost:8080/flex/first" id="model">     
  4.               
  5.     </mx:Model>     
  6.     <mx:Panel title="用户信息" width="776" height="281" fontSize="18">     
  7.         <mx:DataGrid dataProvider="{model.user}" width="748" height="231">     
  8.             <mx:columns>     
  9.                 <mx:DataGridColumn dataField="name" headerText="用户">     
  10.                           
  11.                 </mx:DataGridColumn>     
  12.                 <mx:DataGridColumn dataField="pwd" headerText="密码">     
  13.                           
  14.                 </mx:DataGridColumn>     
  15.                 <mx:DataGridColumn dataField="school" headerText="现在学校">     
  16.                           
  17.                 </mx:DataGridColumn>     
  18.             </mx:columns>     
  19.         </mx:DataGrid>     
  20.     </mx:Panel>     
  21. </mx:Application>    

在此需要注意<mx:Model>标签,source属性指定的是一个servlet映射,这个servlet的作用是利用response向客户端写入XML。

读取数据库数据,生成XML文件由两个类组成,一个为FirstServlet.java,一个为XML.java,其中前者就是一个普通的servlet,用来写XML文件,后者专门用来生成XML文件,由Java XML API操作完成。废话少说,先看看代码

FirstServlet代码摘要:

java 代码
  1. try {      
  2.             xml.init() ;      
  3.             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ;      
  4.             //*********建立数据库 名为flex*************//      
  5.             String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=flex" ;      
  6.             //**********换上你自己的用户名和密码信息************//      
  7.             con = DriverManager.getConnection(url, "sa""135780") ;      
  8.             stmt = con.createStatement() ;      
  9.             //**********里面建表名为USERS  具体SQL语句见附件下载**********//      
  10.             result = stmt.executeQuery("select * from USERS") ;      
  11.         } catch(Exception e) {      
  12.             e.printStackTrace() ;      
  13.         }      
  14.         //重要:设置响应格式为XML格式      
  15.         response.setContentType("text/xml") ;      
  16.         response.setCharacterEncoding("UTF-8") ;      
  17.         PrintWriter out = response.getWriter() ;    

以上为servlet连接数据库并设置响应格式的代码,下面是写XML文件的关键代码:

java 代码
  1. while(result.next()) {      
  2.                 String[] strs = new String[3] ;      
  3.                 strs[0] = result.getString("name") ;      
  4.                 strs[1] = result.getString("pwd") ;      
  5.                 strs[2] = result.getString("school") ;      
  6.                 //*****创建XMLdocument*******//      
  7.                 xml.create(strs) ;      
  8.             }      
  9.             result.close() ;      
  10.             stmt.close() ;      
  11.             con.close() ;      
  12.             //*******写XML文件到客户端********//      
  13.             xml.output(out) ;    

其中末行的xml是XML.java的一个实例,XML的一些重要方法如下:

java 代码
  1. /**    
  2.      * 把XML文档写入到输出流    
  3.      *     
  4.      * @param out    
  5.      *       ----指定的输出流    
  6.      * @throws Exception    
  7.      *     
  8.      * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司    
  9.      */     
  10.     public void output(Writer writer) throws Exception{      
  11.         Transformer trans = TransformerFactory.newInstance().newTransformer() ;      
  12.         trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8") ;      
  13.         Source source = new DOMSource(document) ;      
  14.         Result result = new StreamResult(writer) ;      
  15.         trans.transform(source, result) ;      
  16.         writer.flush() ;      
  17.         writer.close() ;      
  18.     }    

 

java 代码
  1. /**    
  2.      * 创建XML文档    
  3.      *     
  4.      * @param   strs     
  5.      *       -------传送过来的姓名和密码和学校参数    
  6.      *     
  7.      * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司    
  8.      */     
  9.     public void create(String[] strs) {      
  10.         //******第一级子节点******//      
  11.         Element first = document.createElement("user") ;      
  12.         root.appendChild(first) ;      
  13.               
  14.         for(int i=0; i<strs.length; i++) {      
  15.             if(i==0) {      
  16.                 //*******第二级子节点******//      
  17.                 Element name = document.createElement("name") ;      
  18.                 name.appendChild(document.createTextNode(strs[i])) ;      
  19.                 first.appendChild(name) ;      
  20.             } if(i==1) {      
  21.                 Element pwd = document.createElement("pwd") ;      
  22.                 pwd.appendChild(document.createTextNode(strs[i])) ;      
  23.                 first.appendChild(pwd) ;      
  24.             } if(i==2) {      
  25.                 Element school = document.createElement("school") ;      
  26.                 school.appendChild(document.createTextNode(strs[i])) ;      
  27.                 first.appendChild(school) ;      
  28.             }      
  29.         }      
  30.     }    

代码很乱?找不到头绪?没有关系,我会把源代码把放到附件里供大家下载。

其实说到底,这个例子没有什么神秘的,只要记住,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进行通信涉及到的文件会非常多,如果你以前会部署,那再好不过。一般情况下,根据上述步骤能部署成功。如果部署出现了什么问题,或者不明白的告知本人,本人会以最快的速度为大家解答。

  • MyEclipse.rar (1.6 MB)
  • 描述: 工程文件和SQL文件
  • 下载次数: 11631
分享到:
评论
14 楼 strawren 2008-10-10  
很好,但是这个传输的内容是XML的,相对来说比较简单些,如果传输的是remote object或者流媒体应用,那该怎样做呢?
13 楼 jkfzero 2008-08-14  
如果通过remote object交互,java类型怎么转换为as类型?
12 楼 jkfzero 2008-08-13  
奇怪,不是一个地方呀?
11 楼 Wallian_hua 2008-07-28  
文章不错。。。
10 楼 mhqawjh 2008-07-10  
呵呵,有什么问题在这里交流吧! 发站内短信也可以。QQ一般不上
9 楼 shengdianjisi 2008-07-09  
很感谢你的文章,对我有很大帮助,但是我这里按照你的写法来配置而且运行的是你的程序,为什么出错呢?提示错误为:
严重: StandardWrapper.Throwable
flex.messaging.config.ConfigurationException: Please specify a valid 'services.configuration.file' in web.xml.

严重: Servlet /flexTest threw load() exception
java.lang.ClassNotFoundException: flex2.server.j2ee.MxmlServlet

严重: Servlet /flexTest threw load() exception
java.lang.ClassNotFoundException: flex2.server.j2ee.SwfServlet

严重: Servlet /flexTest threw load() exception
java.lang.ClassNotFoundException: flex.server.j2ee.filemanager.FileManagerServlet

希望您能够帮我解决解决,我是刚接手这个东东哦.我的QQ是:345910534
8 楼 hegang3 2008-06-20  
写得很好。有很大的提示作用。多谢楼主,希望能有更多彩的文章。
7 楼 buyajun 2008-06-10  
楼主 有没有 QQ
在线交流? 我的 85155953
6 楼 mhqawjh 2008-06-08  
没错。servlet返回的就是一段XML。
这段XML数据是供Flex的DataGrid使用的!
5 楼 zp0123 2008-06-08  
我照你说的方法试了一下,访问/first这个servlet地址怎么出来的是一段xml呢?
该怎么访问?
4 楼 yexin218 2008-05-31  
FlexDataService 我不明白这个。这个需要另外安装吗?我好像都没有找到
3 楼 RyanPoy 2008-05-13  
这个样子的话.那还是一个请求一次服务端的连接.
即:一个请求刷新一次.
有没有好的不需要重新刷新的交互方式?
2 楼 804e 2008-04-01  
收下,多谢
1 楼 hgq0011 2008-02-27  
请问lz你用户的数据是中文的话,在页面中能正常显示吗?
我试过是乱码?请问怎么解决?
另外,在页面显示中文看上去很别扭,有没有办法设置字体呢?
谢谢!

相关推荐

    Flex与Java的交互

    Flex与Java的交互是跨平台应用开发中的常见技术组合,允许前端用户界面(UI)与后端业务逻辑进行高效沟通。在本文中,我们将深入探讨如何使用Flex 4与Java进行通信,并通过三种不同的方法实现这一目标:RemoteObject...

    Flex+Java Servlet文件上传实例

    总的来说,这个"Flex+Java Servlet文件上传实例"是一个典型的前后端交互案例,展示了如何利用Flex构建用户友好的文件选择和上传界面,然后通过Java Servlet在服务器端处理上传请求。开发者可以通过这个实例学习到...

    flex flex和 java交互

    通过这个入门实例,开发者可以快速理解Flex与Java交互的基本原理,并为进一步的复杂项目开发奠定基础。在实际的企业级应用中,这种交互模式常用于构建用户友好的前端界面,同时利用Java的强大后端处理能力,实现数据...

    Flex与Servlet之间数据的交互

    三、Flex与Servlet交互原理 Flex与Servlet的数据交互主要通过AMF(Action Message Format)协议完成,这是一种高效的二进制格式,能够快速传输对象和数据。Flex客户端通过HTTP或HTTPS协议向Servlet发送AMF请求,...

    Flex在myeclipse下如何配置以及用serverlet的交互

    提供的文档如《如何学习flex.doc》、《MyEclipse下配置Flex.doc》、《整合Flex和Java--配置篇.pdf》和《Flex与Java Servlet交互实例.rar》将提供更详细的步骤和示例,帮助你深入理解和实践这一过程。

    Flex与Java交互

    在Flex与Java的交互中,Servlet充当了中间件的角色,处理Flex发送的AMF(Action Message Format)或XML数据,并将处理结果返回给Flex。这种方式使得Flex和Java之间能够高效地交换数据。 在部署方面,...

    flex+servlet简单实例

    这些服务允许Servlet容器处理AMF请求,与Flex客户端进行交互。 4. **数据交换**:在Flex客户端与Servlet之间,可以通过Flex的HTTPService或WebService组件发起HTTP请求。这些组件可以发送XML或AMF数据,并接收来自...

    flex4与Java通信实例

    在本实例中,我们探讨了三种Flex4与Java交互的方式:通过RemoteObject、HTTPService以及WebService。 1. Flex 与普通 Java 类通信 - RemoteObject 在Flex中,RemoteObject组件用于与Java服务端的普通类进行通信。...

    Flex + Java 最佳实例(附工程)

    本实例旨在为初学者和开发者提供一个直观的学习平台,通过实际项目案例,深入理解Flex与Java的集成开发。 一、Flex简介 Flex是一个基于ActionScript 3.0的开发框架,用于构建具有动态图形、动画和数据可视化的RIA。...

    flex4与Java交互.docx

    总结起来,Flex 4与Java的交互是通过BlazeDS或类似的中间件实现的,这使得ActionScript(Flex的编程语言)能够与Java进行无缝集成。RemoteObject适用于直接调用Java对象的方法,HTTPService适用于通用的HTTP请求,而...

    flex连接java数据库实例

    在本实例中,我们将深入探讨如何使用Flex与Java进行交互,以便将数据提交到数据库。这个过程通常涉及几个关键步骤,包括设置环境、建立连接、编写ActionScript代码和Java服务器端处理。 1. **环境配置**: - 安装...

    flex4与Java交互.pdf

    在本文中,我们将深入探讨Flex 4与Java交互的三种主要方式:通过RemoteObject与普通Java类通信、使用HTTPService与服务器交互以及通过WebService与Web服务通信。这些技术在开发富互联网应用程序(RIA)时,允许前端...

    java flex入门实例

    在本实例中,Flex Builder 3将被用于创建Flex前端界面,编写ActionScript代码,并与后端Java服务进行交互。 3. **BlazeDS**:BlazeDS是Adobe提供的一个开源项目,它作为一个数据和服务中间件,允许Flex应用与Java...

    flex+java文件上传完整实例

    在IT行业中,文件上传是常见的功能之一,尤其是在Web应用程序中。本示例“flex+java文件...这个实例对于学习和理解Flex与Java之间的文件上传交互具有很高的参考价值,同时也可直接应用于实际项目中,大大节省开发时间。

    flex+java+mysql登录

    在"flex+java+mysql登录"这个场景中,我们主要探讨的是如何使用Flex客户端与Java后台进行通信,以及通过Java处理数据库交互来实现用户登录功能。 1. Flex数据库操作:Flex中的数据访问通常通过 BlazeDS 或 LCDS ...

Global site tag (gtag.js) - Google Analytics