`
helyho
  • 浏览: 1861 次
  • 性别: Icon_minigender_1
  • 来自: 乌鲁木齐
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何让JSON穿梭在服务器于浏览器之间

阅读更多
如何让JSON穿梭在服务器于浏览器之间
一个新的轮子,现在网络上充斥这一大堆的轮子.我也做了一个.一半是研究,一半是想做给自己用
目前实现的功能
1 JSON转换成java对象(按一定的规则提交)
  什么意思呢,就是你能够将你在浏览其中提交的JSON直接转换成一个java对象供应用程序调用
 
2 java对象转换成JSON
  可以将servlet中的java对象转换成一个JSON对象给浏览器中的js调用,而如果在浏览器中调用这个JSON的一些于java对象中的同名方法.那么调用的其实就是java对象的方法,那么就相当于你在servlet中调用了这个java对象的方法.
  举个简单的例子:
     java对象的定义代码
    
     public class  testObject 
     {         
		   String prot1;
		   String showProt1()
		   {
		       //在控制台输出prot1的值
			   System.out.println(prot1);
			   //返回prot1的值
			   return prot1;
		   }
		   void setProt1(String prot1)
		   {
			   this.prot1 = prot1;
		   }
		   void String getProt1()
		   {
			   return prot1;
		   }
	  }
	  

  实例化java对象并将其提供给浏览器获取的java代码
 
	     //实例化对象
	     testObject to = new testObject();
	     //提供对象给浏览器调用
	     //第一个参数为浏览器中获取java对象对应的JSON对象的别名
	     //意思就是在浏览器里可以通过$ha.getObject("testObject")来获得to对象的JSON代码
	     this.putReturnObject("testObject",to);
	  

      通过上面的简单代码你就可以通过以下的语句来采用hocate框架获得testObject对象的实例to的JSON映射
      js代码:
     
        //获取服务器中的testObject对象
            var JSTO = $ha.getObject("testObject");
            alert(JSTO.getProt1());
            JSTO.showProt1();
      

      接着你可以通过调用JSTO.prot1来获取java对象中prot1中的值
      也可以通过JSTO.getProt1();来获得,
      使用JSTO.showProt1()接着你会看到你的servlet的控制台会有prot1的值的输出,实际上是在你的servlet中调用了对象testObject的showProt1方法.
      那么就实现了在脚本中编写对java对象的操作的代码和在java程序里编写对java对象操作的代码相同的目的
     
浏览器中的简单引用
   实际应用中不需要想DWR或者其他框架那样引用一个java对象的js脚本,而是你在servlet中配置好相应的要为浏览器提供的java对象,
   就可以通过$ha.getObject来完成对象的获取.并可以直接使用和java对象相同名称的方法,总的来说编码的过程中是不需要引用特定脚本的.

4 对属性的绑定.
  在使用的过程中你可以通过为任意Form标签或者Form内的可输入标签增加bind属性将这些标签中的值绑定到相应的JSON对象上.
  例如你有一个登陆form,需要提供username,password两个参数
  那么你可以使用为form标签增加bind属性将其绑定到一个特定的JSON对象上
  或者为form中的<input>标签增加bind属性将其绑定到一个特定的JSON对象的一个特定的属性上
  例子:
     登陆java对象的定义
    
     public class  loginData 
     {         
		   String username;
		   String password两个参数;
		   //省略若干set/get方法......
     }
	 

实例化java对象并将其提供给浏览器获取的java代码
		 //实例化对象
		 loginData ld = new loginData();
		 //提供对象给浏览器调用
		 //第一个参数为浏览器中获取java对象对应的JSON对象的别名
		 //意思就是在浏览器里可以通过$ha.getObject("loginData")来获得ld对象的JSON代码
		 this.putReturnObject("loginData",ld);
	 

    如果你的这个JSON对象是通过$ha.getObject获得的那么你就可以在页面中通过bind属性的自动绑定够能修改这个
    JSON中的数据,而将这个JSON提交到servlet中的时候就会相应的修改servlet中的java对象的值.你所要做的就是
     1.$ha.getObject获取对象
     2.然后绑定值
     3.然后将这个JSON提交出去.
js代码获得一个java对象loginData的JSON实例
	    var loginData = $ha.getObject("loginData");
	 

页面代码
<form bind="loginData">
    <input id="username" type="text">
    <input id="password" type="password">
</form>
<script>
    $ha.putObject("userinfo",loginData);
</script>
	 

        
                 //在Servlet中
                 loginData  ld = this.parameters.get("userinfo");
         

     那么实际使用中当用户在id为username的input元素上输入数据的时候会相应的修改JSON对象loginData中username中的数据
     那么在登陆的时候就可以直接发送loginData这个JSON对象给服务器,那么在服务器中你就可以获得一个实例化好的loginData的java对象
     通过
 
5 自动验证体系
   对EMail.数字.等等的自动验证
   <input name="text2" type="text" id="validate" datatype="Email" autovalidate="true" />
   通过增加datatype属性和autovalidate属性
   那么在提供$hv.error和$hv.correct的callback函数可以自动的验证客户的输入是否合法
   这两个回调函数都回传入一个参数,那个就是被验证对象的ID属性
  
		//验证函数
		$hv.error = function(v1)
		{
			alert(v1+"中的参数不正确!");
		}
		$hv.correct = function(v1)
		{
			alert(v1+"中的参数正确!");
		}
   

   当用户输入的数据为合法的Email字符串的时候,就会调用$hv.correct中的回调函数,接着弹出一个提示框显示提示.
   当用户输入的数据为非法的Email字符串的时候,就会调用$hv.error中的回调函数,接着弹出一个提示框显示提示.
   而你也可以通过$hv.validated('validate')的方法来手工验证数据.
  
6 JSON对象的调用验证
  这里所说的JSON对象是指你用servlet中获得的java对象的一个JSON映射
  例子请参照(2)中的那个例子.
  由于java对参数的要求是很严格的.所以参数类型必须符合定义中的规范
  而通过JSON提交上去的参数如何验证呢?
  hocate ajax框架提供了客户端的验证能力
  1 验证参数类型是否正确
  2 验证参数个数是否正确
  例如(2)中的例子
  调用JSTO.setProt1(...)方法
  如果你提供里一个JSTO.setProt1()无参数调用,那么在验证参数个数的时候就会在浏览器中报错,因为这个方法是需要一个String作为参数的
  如果你提供JSTO.setProt1(Object)调用就会验证你的这个Object是否是String类型如果不是会报错.
 
7 为参数提供对象支持
  例如有个从服务器获取的JSON对象test有一个方法setObject(testObject kkk),其中testObject是一个我们自己定义的java类.
  那么如何提交调用这个方法呢,在java中他传入的是一个java对象啊.
  我们可以通过var to = $hv.getObject('testObject');来获得一个testObject对象在浏览器中的JSON映射,接着我们用js为其填
  入相应的值.
  最后在调用方法的时候test.setObject (to);就可以将这个to对象提交到servlet中,servlet会自动把它转换成一个java的testObject对象供编程使用
 
不知道这个轮子大家满意不.我只是针对自己的使用习惯做了相应的功能开发.
大家提提意见
演示地址:http://www.hocate.org/ajaxdemo
代码和引用的包请到svn://www.hocate.org/hocate/中checkout
/src/ajax-js中是需要引用的js库
/hocate.jar是需要在java项目中引用的java包
分享到:
评论
7 楼 helyho 2008-04-09  
没有使用任何中间件,全部代码都是我们自己设计并完成的。
希望大家喜欢。
近期会发布一个新的版本,对线程安全和效率做较大提高的版本
并听过更多的方法
6 楼 helyho 2008-04-09  
和DWR比其来有很大不同
dwr的调用时采用了OLE的方式,及dwr.call(object,method,params)等类似的方式。
在这里采用了object.method(param1,parm2,.....)的方式,模拟了在java中队某个对象的调用方法
还有一个点就是,如果被调用的方法的参数是一个自定义的复杂对象,那么也可以通过这种方式传递给服务器
并且服务器接收到的是一个java对象。
5 楼 linhong_1001 2008-04-08  
DWR不也是用javascript调用远程的java方法吗,不知道有什么不同
4 楼 xuyongping 2008-04-08  
现在真的很想了解hocate 框架了,真是受益匪浅那。。。谢谢。。。
3 楼 xuyongping 2008-04-08  
xuyongping 写道
helyho 写道
什么意思呢,就是你能够将你在浏览其中提交的JSON直接转换成一个java对象供应用程序调用


这个是如何实现的了,很想知道。。。

我做过将json 格式的数据转换成Java对象。。但是是比较繁琐的。。而且不同的json格式的数据要单独做不同的处理来转换。。很繁琐的呀。

你的这个是如何实现的了,很想知道。。。

有什么中间件可以用吗?
2 楼 xuyongping 2008-04-08  
helyho 写道
什么意思呢,就是你能够将你在浏览其中提交的JSON直接转换成一个java对象供应用程序调用


这个是如何实现的了,很想知道。。。

我做过将json 格式的数据转换成Java对象。。但是是比较繁琐的。。而且不同的json格式的数据要单独做不同的处理来转换。。很繁琐的呀。

你的这个是如何实现的了,很想知道。。。
1 楼 helyho 2008-03-10  
感觉看着不方便重新排了下版.
feature:
1.服务器推数据的实现
2.对Ext的tree和gird等复杂数据显示组件的数据支持
3.对框架中js代码的优化和后端java代码的扩展
4.提高JSON和java相互对象转换引擎的效率

相关推荐

    谷歌浏览器Json格式化插件,浏览器接口调试json

    标题中的“谷歌浏览器Json格式化插件,浏览器接口调试json”指的是在Google Chrome浏览器中用于解析和美化JSON数据的扩展程序。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和...

    浏览器 Json 格式化 高亮显示插件

    无论是JSON-Handle还是JSONView,安装都非常简单,只需在浏览器的扩展商店搜索对应插件,点击添加到浏览器即可。这两款插件在日常开发工作中都极具实用性,可以根据个人习惯和具体需求选择其中一款。 在实际应用中...

    谷歌浏览器及360浏览器格式化json插件

    标题中的“谷歌浏览器及360浏览器格式化json插件”指的是在Google Chrome和360浏览器中用于美化和格式化JSON数据的扩展程序。这类插件通常可以帮助开发者和数据分析人员更清晰地查看和理解JSON对象,使得大量复杂的...

    浏览器格式化json 插件

    在某些情况下,当服务器返回的数据是以JSON格式呈现时,浏览器默认并不会进行美化显示,而是以一长串难以阅读的文本形式呈现。这就给开发者分析和调试带来了困难。这个插件的出现解决了这个问题,尤其在360浏览器中...

    JSON客户端与服务器端生成JSON数据及传递方法

    JSON(JavaScript Object Notation)是一...无论是在服务器端生成JSON数据,还是在客户端解析和使用这些数据,JSON都提供了简单、灵活且高效的解决方案。对于需要跨平台、跨语言的数据交换,JSON无疑是一个强大的选择。

    【 插件助手 】JsonView:谷歌扩展程序插件,可在浏览器中查看Json文档

    JsonView:谷歌插件扩展程序,可在浏览器中查看Json文档 测试网站:https://jsonview.com/example.json 安装成功: // 20230224112116 // https://jsonview.com/example.json { "hey": "guy", "anumber": 243, ...

    java服务端生成json(json服务端)

    Java服务端生成JSON是Web应用开发中的常见任务,主要用于数据交换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于...理解这些基本概念和库的使用,将有助于你在实际开发中有效地处理JSON数据。

    HttpJsonServer20170106_HTTP_httpjson_JSON_http服务器_HttpJsonServer

    在互联网应用中,HTTP是传输层最常用的一种协议,它允许客户端(如浏览器)与服务器之间进行交互。而JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,因其简洁和易于人阅读及机器解析的特性,被...

    【cocos creator】网页/浏览器读取保存json/text文件

    3. `localStorage` 和 `sessionStorage`:这两个Web存储API允许在用户浏览器中保存少量文本数据,但不适用于大文件。适合用于保存配置文件或游戏进度等小型JSON数据。 二、Cocos Creator特有方法 Cocos Creator...

    springboot编程中在google浏览器格式化显示json格式数据

    在Spring Boot编程中,我们经常需要处理JSON(JavaScript Object Notation)格式的数据,这在Web开发中是非常普遍的。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在调试和查看...

    360浏览器谷歌浏览器json插件,自动解析json格式

    360浏览器谷歌浏览器json插件,自动解析json

    Chrome浏览器JSON格式化插件

    Chrome浏览器JSON格式化插件可以直接拖拽安装,自动格式化,带自动分层可折叠展开,非常好用

    Chrome浏览器插件Json浏览与编辑神器

    在Chrome浏览器中安装JSON Handler后,当你访问一个返回JSON格式数据的网页时,该插件会自动格式化并美化JSON数据,使其更易于理解和分析。默认情况下,JSON数据通常以一串不可读的字符形式显示,而JSON Handler则将...

    Lowdb一个小型本地JSON数据库支持NodeElectron和浏览器

    由于Node.js是服务器端的JavaScript运行时,Lowdb可以轻松地在服务器上读写文件系统中的JSON数据。 ### 3. Electron集成 Electron是一个用于构建跨平台桌面应用的框架,它结合了Node.js和Chromium。Lowdb在...

    Json数据解析服务器端加客户端代码

    通过学习这个压缩包中的代码,开发者可以掌握如何在实际项目中有效地处理JSON数据,包括序列化和反序列化,以及在服务器端和客户端之间进行数据交互。同时,理解JSON格式对于任何Web开发人员来说都是基础且必要的...

    struts2.3.20生成返回json 浏览器解析json

    在这个特定的话题中,我们关注的是如何在Struts2.3.20中生成JSON响应,并在浏览器端解析它。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。 在Struts2中,生成JSON响应...

    C# WebService 客户端 服务器 Json

    总结,C# WebService客户端和服务器之间的Json交互涉及了数据序列化、反序列化、WebService的创建与调用等多个方面。正确理解和运用这些知识点,能够帮助开发者高效地构建和消费Json数据交换的WebService。

    Chrome浏览器上方便查看 json的插件 JSONVue v0.1.17.0

    让开发者在 Chrome 浏览器上能非常方便直观地查看 json 响应结果。一般国内都没法使用 Chrome 浏览器直接在线下载安装插件,可以通过下载这个然后在 Chrome 浏览器 中点击扩展应用程序,钩选开发者模板,直接将此 ...

    Android客户端与服务器端的json数据交互(内含大量知识点)

    在Android应用开发中,客户端与服务器端的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本主题将深入探讨Android客户端如何使用JSON进行数据交互,包括...

Global site tag (gtag.js) - Google Analytics