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

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 23:15   44   0

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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP