`
invincibleLiu
  • 浏览: 12673 次
  • 性别: Icon_minigender_1
  • 来自: 加泰罗尼亚
社区版块
存档分类
最新评论

jquery与JavaEE服务器交互中数据传输格式的设计

阅读更多
1.服务器到客户端
     数据格式在变,唯一不变的是里面类容,我们改变格式的目的是为了信息能够更好的组织,jquery里的dataType可以指定服务器返回数据的格式,如普通文本html、json等,但本人猜想,什么格式都是浮云,其实服务器返回的都是二进制流,或者说字符串,只不过jquery内部将其转换成json或者xml的数据格式。一般来说,如果服务器返回的是普通线性的内容,也就是一维的,比如说:
Query q=session.createSQLQuery("select usename from user join talk on user.id=talk.id")

这条sql查询返回的实质就是一个类型为String的数组,要将其从服务器返回客户端,dataType:html足矣,处理如下
List list=q.list();
String str="";
for(Iterator it=list.iterator();it.hasNext();){
  str+=it.next()+"$";//分隔符,¥$£都可以
}

客户端用js解析我就不说了,详细参阅jquery.org
但返回内容如果是非线性的就要果断json了:
Query q=session.createSQLQuery("select usename,sentence from user join talk on user.id=talk.id")

这条sql语句返回的就不是简简单单的数组了,是“数组”的数组,打上引号是因为在java里面它算不上数组,但js里面神马都是数组,java代码处理如下:
List list=q.list();
JSONArray json=new JSONArray();
for(Iterator<Object[]> it=list.iterator();it.hasNext();){
        Object[]o=it.next();
	JSONObject j=null;
	try {
		j = new JSONObject()
		.put("username", o[0])
		.put("sentence", o[1]);
	} catch (JSONException e) {
		e.printStackTrace();
	}
	json.put(j);
}

这样一个json在服务器就包装完成了,只需一个out.println()就能把它发送给客户端了
0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics