JAVA与JS的数据交互

package xmty;
option java_package = "comcom.xmty.java"; //定义包
option java_outer_classname = "TestTest";  //定义类名
message People{                                           //结构化数据
	required string name = 1;
	repeated string list = 2;
}

 定义好.proto文件后,使用对应版本的

protoc.exe在dos下生成java文件

protoc.exe --java_out=./ protocname.proto

 

 

 

然后,将生成的文件引入到JAVA项目中。

调用方法如下:

 

System.out.println("-----------------====");
		
		People.Builder people = People.newBuilder();
		people.setName("zms");
		for (int i = 0; i < 10; i++) {
			people.addList("list"+i);
		} 
		System.out.println(People.type.MALE.getNumber()+"_-------------");
		People p = people.build();
		
		System.out.println(people);  
		
		PrintWriter os = resp.getWriter();
		resp.setContentType("application/octet-stream");
		String base64Result = Base64.encodeBytes(p.toByteArray());
		System.out.println(base64Result);
		os.write(base64Result);
		os.close();

 

 

页面的用法:

<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript" src="protobuf.js"></script>
<script type="text/javascript" src="pbj.js"></script>
<script type="text/javascript" src="people.proto.js"></script>

<script type="text/javascript">
	$(function(){ 
		$.get("test.do",function(data){
			var s = new xmty.People();
			$("#111").append(data + "<br/>----------------<br />");
			s.ParseFromStream(new PROTO.Base64Stream(data));
			$("#111").append(s + "<br />------------------<br />");
			
			for(var i=0;i<s.list.length;i++){
				var l = s.list[i]; 
				$("#111").append(l + "------------------<br />");
			}
			//$("#111").append(s.name + "<br />------------------");
		}); 
	});   
</script>

 

要在页面使中,则需要,构造一个对应的js文件。

要对应.proto文件中的代码。

 

if (typeof(xmty)=="undefined") {xmty = {};} 
xmty.People = PROTO.Message("xmty.People",{ 
	name: {                  
		options: {},                  
		multiplicity: PROTO.required,                  
		type: function(){return PROTO.string;},                  
		id: 1  
	},
	list: {
		options:{},
		multiplicity: PROTO.repeated,                  
		type: function(){return PROTO.string;},                  
		id: 2 
	}
}); 

 

 

需要的pbj.js与protobuf.js在附件的js.zip中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值