JSON
JSON的全称是JavaScript Object Notation,即JS对象表示法,是一种数据存储的方式,本质上是JS中的自定义对象,不同于其他的内置对象(Number,String,Array,Date,Math)。其格式如下所示:
var gareen = {"name":"盖伦","hp":616};
这样就定义了一个JSON对象,JSON对象由 名称/值对组成 名称和值之间用冒号:隔开;名称必须用双引号" 包含起来,值可以是任意javascript数据类型,字符串,布尔,数字 ,数组甚至是对象,不同的名称/值对之间用 逗号 , 隔开 。
此外,有的时候我们需要将一个JSON对象转化为一个字符串,这样可以显示JSON对象的内容,使用 JSON.stringify() 函数把它转换为字符串。 比如,我们在HTML网页中,将一组数据以JSON的格式发送给servlet:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用AJAX以JSON方式提交数据</title>
<script type="text/javascript" src="jquery.min.js"></script>
</head>
<body>
<form >
名称:<input type="text" id="name"/><br/>
血量:<input type="text" id="hp"/><br/>
<input type="button" value="提交" id="sender">
</form>
<div id="messageDiv"></div>
<script>
$('#sender').click(function(){
var name=document.getElementById('name').value;
var hp=document.getElementById('hp').value;
var hero={"name":name,"hp":hp};
var url="submitServlet";
$.post(
url,
{"data":JSON.stringify(hero)},
function(data) {
alert("提交成功,请在Tomcat控制台查看服务端接收到的数据");
});
});
</script>
</body>
</body>
</html>
其中发送数据的部分,我们使用了 借助JQuery的AJax,所谓AJax,指的是异步刷新,也就是网页偷偷的创建一个“小线程”和服务器进行交互,这里我们利用AJax,使用post的方式,只要按下提交按钮,就会偷偷把数据发送给服务器,url指的是发送的地址,{**}里面的就是JSON格式的数据,function表示响应函数,当servlet返回数据之后,执行这个函数的内容。
servlet
servlet是指运行在服务器的web应用中的程序,接收到浏览器html网页发送的请求resuqest之后,对数据进行业务逻辑上的处理,然后返回给浏览器数据处理的结果。而这里,我们接收到的是HTML页面发送过来的JSON格式的数据,我们先将接收到的数据在转化成JSON对象(因为发送过来的时候将JSON对象字符串化了,因此要还原),然后在服务器上显示出发送过来的内容。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public class SubmitServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data =request.getParameter("data");
System.out.println("服务端接收到的数据是:" +data);
JSONObject json=JSONObject.fromObject(data);
System.out.println("转换为JSON对象之后是:"+ json);
Hero hero = (Hero)JSONObject.toBean(json,Hero.class);
System.out.println("转换为Hero对象之后是:"+hero);
}
}
首先获得data属性对应的值,因为这个值是JSON对象的字符串形式,因此我们将它转化为JSON对象,这样就可以对数据进行解析,然后处理并返回了。