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":"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的介绍就到这了。