RSS

How to use JSON to exchange data between Flex and Java from MySQL

How to use JSON to exchange data between Flex and Java from MySQL

環境:
Windows XP SP3
Flex Builder 3.2
Eclipse 3.4
MySQL 5.1
Tomcat 6.0
LCDS(LifeCycle Data Service) 2.51

所需Package:

 Java:
  commons-beanutils
  commons-lang
  commons-collections
  commons-logging
  Ezmorph
  json-lib

 Flex:
  as3corelib

1. 先在MySQL建一個table,就叫user好了

CREATE TABLE `test`.`user` (
  `user_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_name` VARCHAR(10) NOT NULL,
  `user_age` INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (`user_id`)
);


2. 新增一些假的資料~

INSERT INTO test.user(user_name,user_age) VALUES('Flower2',22);
INSERT INTO test.user(user_name,user_age) VALUES('Ivy',23);
INSERT INTO test.user(user_name,user_age) VALUES('Mandy',18);
INSERT INTO test.user(user_name,user_age) VALUES('Peter',30);
INSERT INTO test.user(user_name,user_age) VALUES('Com',22);


3. 撰寫java程式碼

package com.lflower;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class SQLHandler {

    private Connection conn;

    private Connection connectMySQL() {
        try {
            conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/test", "root", "1233");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public String getUsers() {

        Statement stmt;
        JSONArray users = new JSONArray();

        try {
            stmt = this.connectMySQL().createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM `test`.`user`");

            while (rs.next()) {
                JSONObject user = new JSONObject();
                user.put("UserId", rs.getString("user_id"));
                user.put("UserName", rs.getString("user_name"));
                user.put("UserAge", rs.getString("user_age"));
                users.add(user);
            }
            rs.close();
            stmt.close();
            connectMySQL().close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return users.toString();
    }

    public static void main(String[] args) {
        new SQLHandler().getUsers();
    }
}


在這邊會用到JSONArray和JSONObject
將每一筆資料以Key and Value的方式put到JSONObject
然後在被add到JSONArray裡
最後將JSONArray以String的型態回傳給Flex

4. 設定remoting-config.xml

    <destination id="SQL">
        <properties>
            <source>com.lflower.SQLHandler</source>
        </properties>
    </destination>


5. 寫一個介面來檢視我們取得的資料(將as3corelib裡的as3corelib.swc複製到Flex專案裡的libs)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="vertical">
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            import com.adobe.serialization.json.JSON;

            [Bindable]
            public var users:ArrayCollection;

            private function roResult(event:ResultEvent):void
            {
                var result:String=event.result.toString();
                var usersArray:Array=JSON.decode(result) as Array;
                users=new ArrayCollection(usersArray);
            }

            private function roFault(event:FaultEvent):void
            {
                Alert.show(event.message.toString(), "Error");
            }
        ]]>
    </mx:Script>
    <mx:RemoteObject id="ro"
                     destination="SQL"
                     result="roResult(event)"
                     fault="roFault(event)"/>

    <mx:DataGrid dataProvider="{users}"/>

    <mx:Button label="Get users"
               click="{ro.getUsers()}"/>
</mx:Application>
 


6. 執行結果



Google Chrome OS~~

今天看到這篇新聞:Google稱Android、Chrome OS路線不同

Google正式提出雲端運算時,就有傳言表示Google會推出一個OS來支持雲端。去年初Android推出後,有人認為Android就是該概念下的產物(因為是以linux為基礎的關係嗎??),但由這篇新聞可以得知不是,因為它無法處理太過複雜的操作,例如附載平衡。畢竟,Android是為行動裝置所開發的,以現階段技術甚至用在netbook上都有問題(畢竟當初定位就是手持行動裝置)。

雖然目前的資訊並未明確指出Google Chrome OS是為雲端所開發的OS(目前僅表示是for netbook),但也沒有足以證實不是的訊息。畢竟,雲端不可能只依賴GAE(Google App Engine)和Google的server(這樣也不符合雲端的概念)。明年下半年就有機會看到Google Chrome OS的身影,現在也只好拭目以待了~。

前幾天Google Chrome OS提出後沒多久,就有一篇文章分析Google Chrome OS會對微軟的作業系統產生多大的影響。以現階段來看,Google Chrome OS可能還無法"明顯"撼動微軟OS的地位,因為之前看過一篇研究,指出Google雖然有廣大愛用者,但對Google的忠程度卻很低。因此,若Google Chrome OS無法推出與微軟的OS有明顯且使用者接受的差異化(這也需要周邊軟硬體開發商支持),對長期使用Windows的使用者來說,肯定是興趣缺缺,況且最近Windows 7炒得正火熱呢XD

[轉貼]Windows 7不支援 混合硬碟玩完了?

出處:Windows 7不支援 混合硬碟玩完了?

第一次看到混和硬碟時,就覺得它的前景不遠。雖然它擁有非揮發性的快閃記憶體,藉此以減少硬碟讀取的次數,但該在快閃記憶體內放什麼資料,才能真正有效減少其讀取次數,應該是一門很複雜的學問。所以最好的辦法,還是從硬碟先天的缺陷著手-物理限制。

還是等SSD普及的那天來臨吧XD