booby325 发表于 2013-1-23 02:41:44

Ajax---通过JSON与服务器通信(发送请求和处理响应)

通过JSON(JavaScript Object Notation)向服务器发送数据。它是一种轻量级的数据交换格式,使用了类似于C语言家族的习惯。


JSON具有以下这些形式:

a :  对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

b:   数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

c:   值(value)可以是双引号括起来的字符串(string)、数值(number)、 ture、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

d:   字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

不多说了,关于JSON其实在 www.json.org 上讲得太好了!上面不但有每个JAVA的源文件,而且每个文件都有与之对应的JAVA DOC!还有不少实例!

我就选了json in java  and  json in javascript 二个链接 ,从这二个地方可以下到JSON的javascript包和Java包。

Javascript 包的应用如下:
首先创建一个符合json的对象,并通过XHP发送到sever
< script type = " text/javascript "src = " json.js " ></ script > < script type = " text/javascript " >varxmlHttp;functioncreateXMLHttpRequest()   {   if(window.ActiveXObject)   {      xmlHttp=   newActiveXObject( " Microsoft.XMLHTTP " );    }       else   if(window.XMLHttpRequest)   {      xmlHttp=   newXMLHttpRequest();    } }   functiondoJSON()   {   varcar=getCarObject();         // Use the JSON JavaScript library to stringify the Car object       varcarAsJSON=JSON.stringify(car);      alert( " Car object as JSON:\n"   +carAsJSON);         varurl=   " JSONExample?timeStamp= "   +   newDate().getTime();      createXMLHttpRequest();    xmlHttp.open( " POST " , url,true );    xmlHttp.onreadystatechange=handleStateChange;    xmlHttp.setRequestHeader( " Content-Type " ," application/x-www-form-urlencoded " );      xmlHttp.send(carAsJSON);}   functionhandleStateChange()   {   if (xmlHttp.readyState==   4 )   {         if (xmlHttp.status==   200 )   {            parseResults();      }   } }functionparseResults()   {   varresponseDiv=document.getElementById( " serverResponse " );   if (responseDiv.hasChildNodes())   {      responseDiv.removeChild(responseDiv.childNodes[ 0 ]);    }          varresponseText=document.createTextNode(xmlHttp.responseText);    responseDiv.appendChild(responseText);}functiongetCarObject()   {   return   newCar( " Dodge " ," Coronet R/T " ,1968 ," yellow " );}functionCar(make, model, year, color)   {   this .make=make;   this .model=model;   this .year=year;   this .color=color;}</ script > 那个json.js就是我们下下来的包啦!

我们再看看在server端的处理
packageajaxbook.chap3; importjava.io. * ; importjava.net. * ; importjava.text.ParseException; importjavax.servlet. * ; importjavax.servlet.http. * ; importorg.json.JSONObject; public   classJSONExampleextendsHttpServlet   {         protected   voiddoPost(HttpServletRequest request, HttpServletResponse response)   throwsServletException, IOException   {      String json=readJSONStringFromRequestBody(request);               // Use the JSON-Java binding library to create a JSON object in Java          JSONObject jsonObject=   null ;         try    {            jsonObject=   newJSONObject(json);      }         catch (ParseException pe)   {            System.out.println( " ParseException:"   +pe.toString());      }               String responseText=   " You have a"   +jsonObject.getInt( " year " )+   "   "            +jsonObject.getString( " make " )+   "   "   +jsonObject.getString( " model " )             +   "   "   +   "that is"   +jsonObject.getString( " color " )+   "in color. " ;                response.setContentType( " text/xml " );      response.getWriter().print(responseText);    }      privateString readJSONStringFromRequestBody(HttpServletRequest request){      StringBuffer json=   newStringBuffer();      String line=   null ;         try    {            BufferedReader reader=request.getReader();             while ((line=reader.readLine())!=   null )   {                json.append(line);            }         }         catch (Exception e)   {            System.out.println( " Error reading JSON string:"   +e.toString());      }          returnjson.toString();    } }  
org.json.JSONObject是从JSON.ORG上下下来的JAVA包!它上面也有JSONObject的JAVA DOC.
页: [1]
查看完整版本: Ajax---通过JSON与服务器通信(发送请求和处理响应)