溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flex與Java Servlet交互的示例分析

發(fā)布時(shí)間:2021-11-20 17:06:37 來源:億速云 閱讀:109 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關(guān)Flex與Java Servlet交互的示例分析,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

為了搞清楚Flex是如何與后臺(tái)進(jìn)行通訊,本人在剛開始學(xué)Flex前五天可以說是碌碌無為,這個(gè)文章的目的就是為了使初學(xué)者少走彎路。

交互原理:三個(gè)字母---------XML,客戶端接受從服務(wù)器端發(fā)送過來的XML數(shù)據(jù)。

工作流程:客戶端很簡單就一個(gè)DataGrid組件,用來顯示服務(wù)器端傳送過來的數(shù)據(jù)。對(duì)應(yīng)的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="現(xiàn)在學(xué)校"﹥                                                   ﹤/mx:DataGridColumn﹥                    ﹤/mx:columns﹥                ﹤/mx:DataGrid﹥            ﹤/mx:Panel﹥        ﹤/mx:Application﹥

在此需要注意﹤mx:Model﹥標(biāo)簽,source屬性指定的是一個(gè)servlet映射,這個(gè)servlet的作用是利用response向客戶端寫入XML。

讀取數(shù)據(jù)庫數(shù)據(jù),生成XML文件由兩個(gè)類組成,一個(gè)為FirstServlet.java,一個(gè)為XML.java,其中前者就是一個(gè)普通的servlet,用來寫XML文件,后者專門用來生成XML文件,由Java XML API操作完成。廢話少說,先看看代碼

FirstServlet代碼摘要:

Java 代碼

try {                    xml.init() ;                    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") ;                  //*********建立數(shù)據(jù)庫 名為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() ;                }                //重要:設(shè)置響應(yīng)格式為XML格式                response.setContentType("text/xml") ;                response.setCharacterEncoding("UTF-8") ;                PrintWriter out = response.getWriter() ;

以上為servlet連接數(shù)據(jù)庫并設(shè)置響應(yīng)格式的代碼,下面是寫XML文件的關(guān)鍵代碼:

Java 代碼

while(result.next()) {                        String[] strs = new String[3] ;                       strs[0] = result.getString("name") ;                        strs[1] = result.getString("pwd") ;                       strs[2] = result.getString("school") ;                        //*****創(chuàng)建XMLdocument*******//                     xml.create(strs) ;                   }                     result.close() ;                    stmt.close() ;                    con.close() ;                    //*******寫XML文件到客戶端********//                    xml.output(out) ;

其中末行的xml是XML.java的一個(gè)實(shí)例,XML的一些重要方法如下:

Java 代碼

/**          * 把XML文檔寫入到輸出流          *           * @param out          *       ----指定的輸出流          * @throws Exception          *           * 編寫者:王景輝 湖南農(nóng)業(yè)大學(xué)&湖南愛瑞潔投資管理公司      */          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 代碼

/**      * 創(chuàng)建XML文檔      *       * @param   strs       *       -------傳送過來的姓名和密碼和學(xué)校參數(shù)      *       * 編寫者:王景輝 湖南農(nóng)業(yè)大學(xué)&湖南愛瑞潔投資管理公司      */       public void create(String[] strs) {             //*********級(jí)子節(jié)點(diǎn)******//               Element first = document.createElement("user") ;               root.appendChild(first) ;                               for(int i=0; i﹤strs.length; i++) {                 if(i==0) {                     //*******第二級(jí)子節(jié)點(diǎn)******//                     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) ;                     }                }            }

其實(shí)說到底,這個(gè)例子沒有什么神秘的,只要記住,XML是Flex與后臺(tái)進(jìn)行數(shù)據(jù)交換的媒介,無論后臺(tái)數(shù)據(jù)怎么千變?nèi)f化,出口就有這一個(gè)。如果試驗(yàn),可以先從簡單開始,不涉及查詢數(shù)據(jù)庫,直接在servlet寫出XML。

如果大家還有什么疑問,歡迎留言,我也是初學(xué)者,讓我們共同進(jìn)步。。。

程序運(yùn)行方法:

STEP1:  在SQLServer2000里建一個(gè)數(shù)據(jù)庫flex,然后在查詢分析器導(dǎo)入附件所帶的SQL語句.sql,生成所需表格

STEP2:  把FlexDataService安裝目錄下的flex.war解壓到(比如說D:\a),然后把D:\a\web-inf下的flex整個(gè)目錄拷貝到 WEB程序的WEB-INF下,把D:\a\web-inf\lib目錄下的jar包拷貝到對(duì)應(yīng)WEB程序下的lib目錄下。

STEP4:  拷貝工程文件到你所建的MyEclipse工程

因?yàn)镕lex與Java進(jìn)行通信涉及到的文件會(huì)非常多,如果你以前會(huì)部署,那再好不過。一般情況下,根據(jù)上述步驟能部署成功。

以上就是Flex與Java Servlet交互的示例分析,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI