Flash與Jsp的互動
一直走Flash路線肯定會碰到一定的瓶頸。有時候Flash只是一個外表,事實也確實如此,我們必須給Flash一定的後台支援。現在背景程式又很多,這裡我選擇JSP。 好了,先來講講最基本的基於http的資料傳遞方式,get和post。在JSP裡,後台服務程式從URL中分析提取環境變數的方式為GET方式。POST方式則是作為一種標準的輸入,來傳遞變數值得。GET方式在URL中傳遞的變數有一定的字元限制,而POST方式則沒有。所以,在你決定選擇用那種方式傳遞你的資料時,你必須清晰地考慮到這些。 嗯,首先我們來講講通過GET方法發送變數,在Flash中你可以有很多方法和類支援這種傳輸協議。最簡單的就是getURL。通過URL來傳遞,例如:_root.getURL("test.jsp?num=123","GET");這樣num=123就傳遞給了test.jsp。在jsp檔案中只需要通過request.getParamenter("num")獲得這個字串就可以了。
同樣,Macromedia Flash也支援匯入外部資料,比如load,loadVariables,loadVariablesNum方法等。你獲許需要發送一個id,然後後台通過一定的邏輯運算之後返回一個資料給Flash,你就可以用以上的方法了。
很多時候往往我們不能靠單單的數組或環境變數來組織我們的資料結構。我們會選擇XML。在Flash中把需要發送的資料整理成一個XML對象,然後POST給後台服務程式。我們可以用XML.send XML.sendAndLoad來發送,並在JSP中通過resquest.getInputStream()獲得。接著我們就可以用SAX或DOM解析它,並進行進一步的操作了。
在ActionScript 2.0中, Macromedia加入了LoadVars類,使用LoadVars類我們可以操作類似表單提交的動作了,比如LoadVars.send(),LoadVars.sendAndLoad()方法等。JSP裡的編輯就和普通接受表單一樣,是不是用的很親切呢?
這篇文章主要介紹了一個思想,更多的大家繼續探索吧。
最後還要提一些應用中碰到的問題: 1、緩衝問題。由於第一次的request請求返回的資料就近入了瀏覽器的緩衝,如果第二次還是發送相同的請求的話,那麼Flash匯入的資料是原封不變的,所以我們每一次的請求的url必須不一樣,最簡單的就是加上一個隨機數。例如:"test.jsp?num=123&r=" add random(10) 2、談一下中文的問題,這對一個Flash開發人員而言確實是個麻煩。但是Java很好的Unicode能力,這也是我選擇它的一個原因。在JSP文檔裡一定要包含:<% @page contentType="text/html;charset=utf-8" % >和request.setCharacterEncoding("utf-8"); 別的就沒什麼了。