JSON是一种轻量的统一的数据交换格式,特别适合在JavaScript中使用,JSON数据可以被轻松的转换为JS对象,在JS使用越来越广泛的今天,要成为一名优秀的web开发工程师,学好它势在必行,它也确实能为你提供实在的便利!
下面我们以一个jsp + servlet的demo来简单了解JSON用法。
源码下载地址
一、准备工作
项目结构图:
jar包下载:
免费下载链接
二、Person类(Model)
没有什么特别的,私有属性与它们的get()、set()方法。
public class Person {
private int id;
private String name;
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
三、servlet类(Controller)
当然,这个Servlet必须在web.xml中注册与配置映射。
public class Json extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml;character=utf-8");
response.setHeader("Cache-Control", "no-cache");
try {
//创建Person对象,保存数据,如果有数据库的话,此处数据应该为从数据库中取出
Person p = new Person();
p.setName("first");
p.setId(1);
p.setPwd("123456");
Person p1 = new Person();
p1.setName("second");
p1.setId(2);
p1.setPwd("666888");
//将Person对象装入集合
List list = new ArrayList();
list.add(p);
list.add(p1);
try {
//创建JsonArray对象,JSONArray则是[]包裹起来的一个数组(Array),此处调用方法将对象集合装入
JSONArray json = JSONArray.fromObject(list);
//JSONObject是一个{}包裹起来的一个对象(Object),此处希望以对象为单位进行操作,所以创建JSONObject对象
JSONObject jb = new JSONObject();
//将jsonArray对象装入
jb.put("person", json);
//输出Json数据,它就是一种特殊格式的字符串
response.getWriter().write(jb.toString());
/*此处可以用另一种方式将数据装入Json,同样可以,只是前台接受的是JSONArray对象,是[]包裹起来的一个数组(Array)
*JSONArray jsonArray = new JSONArray();
*JSONObject jb = new JSONObject();
*jb.put("person", json);
*jsonArray.add(jb);
*response.getWriter().write(jsonArray.toString());
*/
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Json
com.jsonTest.servlet.Json
Json
/json
index.jsp
四、JSP(View)
接收后台通过服务器发送的JSON数据,然后用JS的eval方法解析JSON将数据转化为JS对象。
关于AJAX与服务器端通信,请参看另一篇博客AJAX初识与XMLHttpRequest介绍。
关于eval解析JSON,请参看另一篇博客eval解析JSON注意点。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
My JSP 'index.jsp' starting page
1
1
1
1
1
1