javaweb端的開發,服務器往往會和頁面進行一些進行一些小範圍的數據刷新或者提交,這時候在我們面前的問題就來了。
1.服務器端返回的數據是什麼類型的?使用response輸出一段看起來都會死掉很多腦細胞的html?沒有更好的形式嗎?
2.客戶端怎麼解析?用什麼解析?是不斷的新建html標籤,然後追加到某個div或table裏面?
好吧不裝逼了。
現在的ajax大家都很熟悉了,那麼這種異步交互給我們的開發和用戶體驗帶來了新的活力。不過還沒完,JSON又來了。這使得ajax變得更加的變態。下面就來見識見識吧。
我相信大多數人現在使用異步交互還是使用JQuery封裝的,沒有那個傻x自己寫吧。
JSON的格式其實很簡單,我的理解就是map和數組的結合體,以類似於鍵值對的方式存在:
1.建和值之間用:隔開。
2.同等地位的鍵值對使用,隔開。
3.一個鍵對應多個值時這些鍵值對包括在[ ]內。
4.取值的方式和我們使用的ognl基本類似,只是在遇到[ ]的鍵值對時使用[index],index表示索引位置,記住從0開始。
拿來看看例子吧:
var student={"name":"dongzheng","sex":"m"};
//獲取name的值使用
var name=student.name;
var student=[{"name":"dongzheng","sex":"m"},{"name":"xue","sex":"f"}];
//獲取第二個人的名字使用
var name2=student[1].name;
var student={"class1":
[
{"name":"dongzheng","sex":"m"},
{"name":"xue","sex":"f"}]};
//獲取class1的第一個學生的性別使用
var sex=student.class1[0].sex;
當然還有更復雜的形式,不過也無非是集合和鍵值對的嵌套使用,所以把一個複雜的格式分解成一小部分就可以了。這理解不多介紹了。
下面來介紹一下服務器端的使用。
在你的servlet或者action中使用response獲得輸出流來輸出數據是比較明智的選擇 ,但是並不意味只要拼接負責的html標籤。我們可以藉助這個開源的JSON 來實現。這時候我們可以到網上下載json的jar包。其中包括下面幾個:
json-lib-jdk1.5.jar -------json類庫的核心jar包。
ezmorph.jar----------------完成bean的複製功能。
還有一些apatche的一些像工具類的增強包和對javalang的增強等。
下面就是使用了:
1.通常我們查詢到的都是結集合對象,所以我們先來看看集合對象怎麼來轉換成json。
json爲我們提供了JSONArray這個類來給我們使用。
//list就是我們獲得的數據集合
JSONArray jarray=JSONArray.fromObject(list);
//如果數據集合內的數據對象數據列太多,而且我們也用不到我們可以配置過濾器。
JsonConfig config=new JsonConfig();
config.setExcludes(new string[]{conlumnname});
下面就是利用response的流輸出了。
頁面端的ajax代碼我就不多做冗餘解釋了。無非就是JQuery封裝的那幾個方法。好了json的介紹就到這了。