自从呼叫中心项目开始,不知不觉,学习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. "com.microsoft.jdbc.sqlserver.SQLServerDriver") ;
4. //*********建立数据库 名为flex*************//
5. "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=flex"
6. //**********换上你自己的用户名和密码信息************//
7. "sa", "135780") ;
8. stmt = con.createStatement() ;
9. //**********里面建表名为USERS 具体SQL语句见附件下载**********//
10. "select * from USERS") ;
11. catch(Exception e) {
12. e.printStackTrace() ;
13. }
14. //重要:设置响应格式为XML格式
15. "text/xml") ;
16. "UTF-8") ;
17. PrintWriter out = response.getWriter() ;
以上为servlet连接数据库并设置响应格式的代码,下面是写XML文件的关键代码:
java 代码
1. while(result.next()) {
2. new String[3] ;
3. 0] = result.getString("name") ;
4. 1] = result.getString("pwd") ;
5. 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
11. Transformer trans = TransformerFactory.newInstance().newTransformer() ;
12. "UTF-8") ;
13. new
14. new
15. trans.transform(source, result) ;
16. writer.flush() ;
17. writer.close() ;
18. }
java 代码
1.
2. /**
3.
4. * 创建XML文档
5. *
6. * @param strs
7. * -------传送过来的姓名和密码和学校参数
8. *
9. * 编写者:王景辉 湖南农业大学&湖南爱瑞洁投资管理公司
10. */
11. public void
12. //******第一级子节点******//
13. "user") ;
14. root.appendChild(first) ;
15.
16. for(int i=0; i<strs.length; i++) {
17. if(i==0) {
18. //*******第二级子节点******//
19. "name") ;
20. name.appendChild(document.createTextNode(strs[i])) ;
21. first.appendChild(name) ;
22. if(i==1) {
23. "pwd") ;
24. pwd.appendChild(document.createTextNode(strs[i])) ;
25. first.appendChild(pwd) ;
26. if(i==2) {
27. "school") ;
28. school.appendChild(document.createTextNode(strs[i])) ;
29. first.appendChild(school) ;
30. }
31. }
32. }