温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Flex与Java Servlet交互的示例分析

发布时间:2021-11-20 17:06:37 来源:亿速云 阅读:115 作者:柒染 栏目:编程语言

本篇文章给大家分享的是有关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交互的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI