Java与Javascript交互(使用Protobuf协议)

来源:互联网 发布:mac如何制作铃声 编辑:程序博客网 时间:2024/04/27 20:04

1. 定义协议

.proto代码
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文件中的代码。

people.proto.js代码

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 }}); 

js.zip(pbj.js和protobuf.js)文件以及protobuf-java-2.1.0.jar将会评论区给出下载链接


原文连接:http://zms198983.iteye.com/blog/1544600

0 0
原创粉丝点击