提交数据使用json代替xml

提交数据使用json代替xml

页面:jsonExample.jsp

<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
JSON示例
</title>
<script type="text/javascript" src="zxml.src.js"></script>
<script type="text/javascript" src="json.js"></script>
<script type="text/javascript">
 var xmlHttp;
		
		//创建对象
		function createXMLHttpRequest(){
		 xmlHttp = zXmlHttp.createRequest();
		}
		
		function doJSON(){
		   //得到Car对象
		 var car = getCarObject();
				
				//用JSON字符串化car对象
				var carAsJSON = car.toJSONString();
				alert("汽车对象JSON化为:/n" + carAsJSON);
				
				var url = "JSONExample?timeStamp=" + new Date().getTime();
				
				//创建对象
				createXMLHttpRequest();
				xmlHttp.open("POST",url,true);
				xmlHttp.onreadystatechange = handleStateChange;
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form.urlencoded");
				xmlHttp.send(carAsJSON);
		}
		
		//回调方法
		function handleStateChange(){
		 if (xmlHttp.readyState == 4){
				 if (xmlHttp.status == 200){
						 parseResults();
						}
				}
		}
		
		//解析结果
		function parseResults(){
		 var responseDiv = document.getElementById("serverResponse");
				if (responseDiv.hasChildNodes()){
				 responseDiv.removeChild(responseDiv.childNode[0]);
				}
				
				var responseText = document.createTextNode(xmlHttp.responseText);
				responseDiv.appendChild(responseText);
		}
		
		//得到Car对象
		function getCarObject(){
		 return new Car("Dodge","Coronet R/T",1968,"yellow");
		}
		
		
		//Car构造函数
		function Car(make,model,year,color){
		 this.make = make;
				this.model = model;
				this.year = year;
				this.color = color;
		}
</script>
</head>
<body>
<br /><br />
<form action="#">
  <input type="button" value="发送JSON数据" οnclick="doJSON();"/>
</form>
<h2>
  服务器响应:
</h2>
<div id="serverResponse">
</div>
</body>
</html>

服务器:JSONExample.java

package ajaxbook.chap4;

import java.io.*;
import java.net.*;
import java.text.ParseException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.json.JSONObject;

public class JSONExample
	extends HttpServlet {
  //处理Post方法
  protected void doPost(HttpServletRequest request,
						HttpServletResponse response) throws ServletException,
	  IOException {
	String json = readJSONStringFromRequestBody(request);

	//使用JSON绑字Ajax对象
	JSONObject jsonObject = null;
	try {
	  jsonObject = new JSONObject(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);
  }

  //得到参数
  private String readJSONStringFromRequestBody(HttpServletRequest request) {
	StringBuffer json = new StringBuffer();
	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());
	}
	return json.toString();
  }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值