ajax部分

/*=============ajax初步认识=====================*/

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = init;
function init() {
var btn = document.getElementById("getData");
btn.onclick = getData;
}
function getData() {
//1、创建XMLHttpRequest对象
//var xhr = new XMLHttpRequest();
//通过createXmlHttpRequest来屏蔽不同浏览器之间的对象创建
var xhr = createXmlHttpRequest();
//2、检测XMLHttpRequest对象的状态,在合适的时候处理
//通过xhr.open方法确定要访问的页面
//第一个参数表示请求类型,第二个参数表示提交的地址,第三个参数表示是否是异步
xhr.open("GET","ajax.do",true);
//在onreadstatechange事件中处理请求
xhr.onreadystatechange = function() {
//onreadystatechange会在每个步骤都进行响应 ,一般仅仅只是在状态为4(请求结束)并且status=200(请求没有错误)时才处理
if(xhr.readyState==4&&xhr.status==200) {
//获取相应的文本:通过xhr的responseText可以获取文本信息,包括xml的标签
//通过responseXML可以获取xml的信息,只能xml对象
document.getElementById("serverData").innerHTML = xhr.responseText;
}
}
//3、发送请求
//发送请求,send中可以传入相应的参数,这个参数只有在POST请求的时候有效
//GET的参数直接在请求地址中通过?来传递
xhr.send();
}

function createXmlHttpRequest() {
if(window.XMLHttpRequest) {
//针对其他主流浏览器
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
//针对IE5和IE6
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("你使用的浏览器不支持XMLHttpRequest,请换一个浏览器再试!");
return null;
}
}
</script>
</head>
<body>
<input type="button" value="获取数据" id="getData"/>
<div id="serverData"></div>
</body>
</html>

/**========ajax返回xml格式==========*/

-----------前台-------

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = init;
function init() {
//1、获取部门节点
var dn = document.getElementById("dep");
//2、为该节点创建onchange
dn.onchange = getPerson
//3、创建一个getPerson的方法来处理事件
}

function getPerson() {
var did = this.value;
//1、获取XMLHttpRequest;
var xhr = createXMLHttpRequest();
//2、通过xhr来打开页面,使用POST
xhr.open("POST","person.do",true);
xhr.onreadystatechange = function() {
//3、处理请求
if(xhr.readyState==4&&xhr.status==200) {
//3.1、获取xml节点
var xmlDoc = xhr.responseXML;
//由于response的contentType是text/xml类型,此时就只能获取节点
//alert(xhr.resonseText);
//3.2、获取所有的person节点
var pns = xmlDoc.getElementsByTagName("person");
//3.3、遍历所以节点,获取id,name等信息
var node = "";
for(var i=0;i<pns.length;i++) {
node+=getValueByProp(pns[i],"id")+"----------"+
getValueByProp(pns[i],"name")+"----------"+
getValueByProp(pns[i],"salary")+"----------"+
getValueByProp(pns[i],"age")+"<br/>"
}
//3.4、写入到persons
document.getElementById("persons").innerHTML = node;
}
}
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("did="+did);
//4、发送信息,需要传入did
}
//根据节点获取值
function getValueByProp(node,prop) {
return (node.getElementsByTagName(prop))[0].firstChild.nodeValue;
}

function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
//针对其他主流浏览器
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
//针对IE5和IE6
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("你使用的浏览器不支持XMLHttpRequest,请换一个浏览器再试!");
return null;
}
}
</script>
</head>
<body>
<select id="dep">
<option value="1">普通组</option>
<option value="2">明星组</option>
<option value="3">火星组</option>
</select>
<div id="persons"></div>
</body>
</html>

--------后端---------

package org.itat.zttc.ajax;

import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.itat.zttc.model.Person;
import org.itat.zttc.util.XStreamUtil;

/**
* Servlet implementation class PersonServlet
*/
public class PersonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Map<Integer,List<Person>> persons = new HashMap<Integer,List<Person>>();

/**
* @see HttpServlet#HttpServlet()
*/
public PersonServlet() {
super();
List<Person> ps = new ArrayList<Person>();
ps.add(new Person(1,"张三",1200,22));
ps.add(new Person(2,"李四",1300,23));
ps.add(new Person(3,"王五",1400,24));
persons.put(1, ps);
ps = new ArrayList<Person>();
ps.add(new Person(11,"刘德华",12000,32));
ps.add(new Person(12,"周杰伦",13000,33));
ps.add(new Person(13,"张曼玉",14000,34));
ps.add(new Person(14,"梁朝伟",15000,35));
persons.put(2, ps);

ps = new ArrayList<Person>();
ps.add(new Person(21,"孙悟空",22000,132));
ps.add(new Person(22,"猪八戒",23000,133));
ps.add(new Person(23,"沙和尚",24000,134));
ps.add(new Person(24,"唐和尚",25000,135));
persons.put(3, ps);
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、由于返回的是xml,需要为respose设置contentType
response.setContentType("text/xml;charset=utf-8");
//2、获取Writer
Writer out = response.getWriter();
//3、获取部门id
int did = Integer.parseInt(request.getParameter("did"));
//4、获取用户列表对象,
List<Person> ps = persons.get(did);
//5、拼接xml
/*StringBuffer px = new StringBuffer();
px.append("<persons>");
for(Person p:ps) {
px.append("<person>");
px.append("<id>").append(p.getId()).append("</id>");
px.append("<name>").append(p.getName()).append("</name>");
px.append("<salary>").append(p.getSalary()).append("</salary>");
px.append("<age>").append(p.getAge()).append("</age>");
px.append("</person>");
}
px.append("</persons>");*/
Map<String,Class<?>> alias = new HashMap<String, Class<?>>();
alias.put("persons",List.class);
alias.put("person", Person.class);
String xml = XStreamUtil.getInstacne().obj2xml(ps, alias);
//6、通过out写回去
out.write(xml);
}

}

/*================json方式前后台交互=================*/

----------------后台

package org.itat.zttc.ajax;

import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.itat.zttc.model.Person;
import org.itat.zttc.util.JsonUtil;

/**
* Servlet implementation class PersonServlet
*/
public class PersonJsonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Map<Integer,List<Person>> persons = new HashMap<Integer,List<Person>>();

/**
* @see HttpServlet#HttpServlet()
*/
public PersonJsonServlet() {
super();
List<Person> ps = new ArrayList<Person>();
ps.add(new Person(1,"张三",1200,22));
ps.add(new Person(2,"李四",1300,23));
ps.add(new Person(3,"王五",1400,24));
persons.put(1, ps);
ps = new ArrayList<Person>();
ps.add(new Person(11,"刘德华",12000,32));
ps.add(new Person(12,"周杰伦",13000,33));
ps.add(new Person(13,"张曼玉",14000,34));
ps.add(new Person(14,"梁朝伟",15000,35));
persons.put(2, ps);

ps = new ArrayList<Person>();
ps.add(new Person(21,"孙悟空",22000,132));
ps.add(new Person(22,"猪八戒",23000,133));
ps.add(new Person(23,"沙和尚",24000,134));
ps.add(new Person(24,"唐和尚",25000,135));
persons.put(3, ps);
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、要返回json需要设置为text/html,需要为respose设置contentType
response.setContentType("text/html;charset=utf-8");
//2、获取Writer
Writer out = response.getWriter();
//3、获取部门id
int did = Integer.parseInt(request.getParameter("did"));
//4、获取用户列表对象,
List<Person> ps = persons.get(did);
out.write(JsonUtil.getInstance().obj2json(ps));
/*//5、拼接json
StringBuffer px = new StringBuffer();
px.append("[");
int index = 0;
for(Person p:ps) {
if(index==0) {
px.append("{");
index++;
} else {
px.append(",{");
}
px.append("id:").append(p.getId()).append(",");
px.append("name:\"").append(p.getName()).append("\",");
px.append("salary:").append(p.getSalary()).append(",");
px.append("age:").append(p.getAge());
px.append("}");
}
px.append("]");
//6、通过out写回去
out.write(px.toString());*/
}

}

---------------前台---

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = init;
function init() {
//1、获取部门节点
var dn = document.getElementById("dep");
//2、为该节点创建onchange
dn.onchange = getPerson
//3、创建一个getPerson的方法来处理事件
}

function getPerson() {
var did = this.value;
//1、获取XMLHttpRequest;
var xhr = createXMLHttpRequest();
//2、通过xhr来打开页面,使用POST
xhr.open("POST","personJson.do",true);
xhr.onreadystatechange = function() {
//3、处理请求
if(xhr.readyState==4&&xhr.status==200) {
//3.1、获取json
var json = xhr.responseText;
//如果传递的是json可以直接通过xhr.responseText获取。
//3.2、此时json是一个字符串,如果要转换为对象需要使用eval
var ps = eval(json);
var node = "";
for(var i=0;i<ps.length;i++) {
//json就是已经是个javascirpt的对象了,可以直接使用
node+=ps[i].id+"--------"+
ps[i].name+"--------"+
ps[i].salary+"--------"+
ps[i].age+"<br/>";
}
//3.4、写入到persons
document.getElementById("persons").innerHTML = node;
}
}
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("did="+did);
//4、发送信息,需要传入did
}

function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
//针对其他主流浏览器
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
//针对IE5和IE6
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("你使用的浏览器不支持XMLHttpRequest,请换一个浏览器再试!");
return null;
}
}
</script>
</head>
<body>
<select id="dep">
<option value="1">普通组</option>
<option value="2">明星组</option>
<option value="3">火星组</option>
</select>
<div id="persons"></div>
</body>
</html>

/*=========XStram实现XML、Object、json的互转========*/

----------test文件

package org.itat.zttc.test;


import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.itat.zttc.model.Group;
import org.itat.zttc.model.User;
import org.itat.zttc.util.JsonUtil;
import org.junit.Test;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TestJaskson {

@Test
public void test01() {
StringWriter out = new StringWriter();
JsonGenerator jg = null;
try {
//1、创建JsonFactory
JsonFactory jf = new JsonFactory();
//2、创建JsonGenerator
jg = jf.createJsonGenerator(out);
//使用一种相对漂亮的格式输出
jg.useDefaultPrettyPrinter();
//3、创建ObjectMapper,通过ObjectMapper来写对象
User u = new User(1,"劳动法","123",new Group(1,"财务处"));
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(jg, u);
System.out.println(out.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(jg!=null) jg.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

@Test
public void test02() {
StringWriter out = new StringWriter();
JsonGenerator jg = null;
try {
//1、创建JsonFactory
JsonFactory jf = new JsonFactory();
//2、创建JsonGenerator
jg = jf.createJsonGenerator(out);
//使用一种相对漂亮的格式输出
// jg.useDefaultPrettyPrinter();
//3、创建ObjectMapper,通过ObjectMapper来写对象
List<User> us = new ArrayList<User>();
User u = new User(1,"劳动法","123",new Group(1,"财务处"));
us.add(u);
u = new User(2,"猪八戒","123",new Group(1,"财务处"));
us.add(u);
u = new User(3,"张学友","123",new Group(2,"教务处"));
us.add(u);
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(jg, us);
System.out.println(out.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(jg!=null) jg.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

@Test
public void test02_1() {
List<User> us = new ArrayList<User>();
User u = new User(1,"劳动法","123",new Group(1,"财务处"));
us.add(u);
u = new User(2,"猪八戒","123",new Group(1,"财务处"));
us.add(u);
u = new User(3,"张学友","123",new Group(2,"教务处"));
us.add(u);
System.out.println(JsonUtil.getInstance().obj2json(us));
}

@Test
public void test03() {
try {
String json = "{\"id\":1,\"username\":\"杂货\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}}";
ObjectMapper mapper = new ObjectMapper();
User u = mapper.readValue(json, User.class);
System.out.println(u.getId()+","+u.getUsername()+","+u.getGroup().getName());
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

@Test
public void test04() {
try {
String json = "[{\"id\":1,\"username\":\"劳动法\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":2,\"username\":\"猪八戒\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":3,\"username\":\"张学友\",\"password\":\"123\",\"group\":{\"id\":2,\"name\":\"教务处\"}}]";
ObjectMapper mapper = new ObjectMapper();
//在把json转换为list的时候,不能直接存储Bean对象,list中存储的是Map对象
/*List<User> us = mapper.readValue(json,List.class);
for(User u:us) {
System.out.println(u.getUsername());
}*/
/**
* 所以的json都是通过map来存储的,不会直接存储bean,但是在开发中,把字符串转换为对象
* 一般只会对单个的对象转换,很少会用到对对象的完全转换
*/
List<Map<String,Object>> us = mapper.readValue(json, List.class);
for(Map<String,Object> m:us) {
System.out.println(m.get("id"));
System.out.println(m.get("group"));
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

@Test
public void test05() {
try {
String json = "[{\"id\":1,\"username\":\"劳动法\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":2,\"username\":\"猪八戒\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":3,\"username\":\"张学友\",\"password\":\"123\",\"group\":{\"id\":2,\"name\":\"教务处\"}}]";
ObjectMapper mapper = new ObjectMapper();
/*
* 在Jaskson中提供了一种基于节点的读取方法
*/
JsonNode node = mapper.readTree(json);
//判断这个节点是否是数组
System.out.println(node.isArray());
System.out.println(node.size());
System.out.println(node.get(0).get("username"));
System.out.println(node.get(0).get("group").get("name"));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

---------------xml文件

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
<id>1</id>
<username>劳动法</username>
<password>123</password>
<group>
<id>1</id>
<name>财务处</name>
</group>
</user>
<user>
<id>2</id>
<username>张学友</username>
<password>123</password>
<group>
<id>1</id>
<name>财务处</name>
</group>
</user>
<user>
<id>3</id>
<username>黎明</username>
<password>123</password>
<group>
<id>1</id>
<name>财务处</name>
</group>
</user>
<user>
<id>4</id>
<username>郭富城</username>
<password>123</password>
<group>
<id>1</id>
<name>物理系</name>
</group>
</user>
</users>

----------------工具类

package org.itat.zttc.util;

import java.util.Map;
import java.util.Set;

import com.thoughtworks.xstream.XStream;

public class XStreamUtil {
private static XStreamUtil util;
private XStreamUtil(){}

public static XStreamUtil getInstacne() {
if(util==null) util = new XStreamUtil();
return util;
}


public String obj2xml(Object obj,Map<String,Class<?>> alias) {
XStream stream = new XStream();
Set<String> keys = alias.keySet();
for(String key:keys) {
stream.alias(key,alias.get(key));
}
return stream.toXML(obj);
}

public Object xml2obj(String xml,Map<String,Class<?>> alias) {
XStream stream = new XStream();
Set<String> keys = alias.keySet();
for(String key:keys) {
stream.alias(key,alias.get(key));
}
return stream.fromXML(xml);
}
}

/*********对象和json的互相转换**********/

--------测试文件----

package org.itat.zttc.test;


import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.itat.zttc.model.Group;
import org.itat.zttc.model.User;
import org.itat.zttc.util.JsonUtil;
import org.junit.Test;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TestJaskson {

@Test
public void test01() {
StringWriter out = new StringWriter();
JsonGenerator jg = null;
try {
//1、创建JsonFactory
JsonFactory jf = new JsonFactory();
//2、创建JsonGenerator
jg = jf.createJsonGenerator(out);
//使用一种相对漂亮的格式输出
jg.useDefaultPrettyPrinter();
//3、创建ObjectMapper,通过ObjectMapper来写对象
User u = new User(1,"劳动法","123",new Group(1,"财务处"));
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(jg, u);
System.out.println(out.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(jg!=null) jg.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

@Test
public void test02() {
StringWriter out = new StringWriter();
JsonGenerator jg = null;
try {
//1、创建JsonFactory
JsonFactory jf = new JsonFactory();
//2、创建JsonGenerator
jg = jf.createJsonGenerator(out);
//使用一种相对漂亮的格式输出
// jg.useDefaultPrettyPrinter();
//3、创建ObjectMapper,通过ObjectMapper来写对象
List<User> us = new ArrayList<User>();
User u = new User(1,"劳动法","123",new Group(1,"财务处"));
us.add(u);
u = new User(2,"猪八戒","123",new Group(1,"财务处"));
us.add(u);
u = new User(3,"张学友","123",new Group(2,"教务处"));
us.add(u);
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(jg, us);
System.out.println(out.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(jg!=null) jg.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

@Test
public void test02_1() {
List<User> us = new ArrayList<User>();
User u = new User(1,"劳动法","123",new Group(1,"财务处"));
us.add(u);
u = new User(2,"猪八戒","123",new Group(1,"财务处"));
us.add(u);
u = new User(3,"张学友","123",new Group(2,"教务处"));
us.add(u);
System.out.println(JsonUtil.getInstance().obj2json(us));
}

@Test
public void test03() {
try {
String json = "{\"id\":1,\"username\":\"杂货\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}}";
ObjectMapper mapper = new ObjectMapper();
User u = mapper.readValue(json, User.class);
System.out.println(u.getId()+","+u.getUsername()+","+u.getGroup().getName());
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

@Test
public void test04() {
try {
String json = "[{\"id\":1,\"username\":\"劳动法\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":2,\"username\":\"猪八戒\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":3,\"username\":\"张学友\",\"password\":\"123\",\"group\":{\"id\":2,\"name\":\"教务处\"}}]";
ObjectMapper mapper = new ObjectMapper();
//在把json转换为list的时候,不能直接存储Bean对象,list中存储的是Map对象
/*List<User> us = mapper.readValue(json,List.class);
for(User u:us) {
System.out.println(u.getUsername());
}*/
/**
* 所以的json都是通过map来存储的,不会直接存储bean,但是在开发中,把字符串转换为对象
* 一般只会对单个的对象转换,很少会用到对对象的完全转换
*/
List<Map<String,Object>> us = mapper.readValue(json, List.class);
for(Map<String,Object> m:us) {
System.out.println(m.get("id"));
System.out.println(m.get("group"));
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

@Test
public void test05() {
try {
String json = "[{\"id\":1,\"username\":\"劳动法\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":2,\"username\":\"猪八戒\",\"password\":\"123\",\"group\":{\"id\":1,\"name\":\"财务处\"}},{\"id\":3,\"username\":\"张学友\",\"password\":\"123\",\"group\":{\"id\":2,\"name\":\"教务处\"}}]";
ObjectMapper mapper = new ObjectMapper();
/*
* 在Jaskson中提供了一种基于节点的读取方法
*/
JsonNode node = mapper.readTree(json);
//判断这个节点是否是数组
System.out.println(node.isArray());
System.out.println(node.size());
System.out.println(node.get(0).get("username"));
System.out.println(node.get(0).get("group").get("name"));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

-------------工具类------

package org.itat.zttc.util;

import java.io.IOException;
import java.io.StringWriter;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUtil {
private static JsonUtil ju;
private static JsonFactory jf;
private static ObjectMapper mapper;
private JsonUtil(){}

public static JsonUtil getInstance() {
if(ju==null) ju = new JsonUtil();
return ju;
}

public static ObjectMapper getMapper() {
if(mapper==null) {
mapper = new ObjectMapper();
}
return mapper;
}

public static JsonFactory getFactory() {
if(jf==null) jf = new JsonFactory();
return jf;
}

public String obj2json(Object obj) {
JsonGenerator jg = null;
try {
jf = getFactory();
mapper = getMapper();
StringWriter out = new StringWriter();
jg = jf.createJsonGenerator(out);
mapper.writeValue(jg, obj);
return out.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(jg!=null) jg.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}

public Object json2obj(String json,Class<?> clz) {
try {
mapper = getMapper();
return mapper.readValue(json,clz);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

/*============联动菜单=============*/

--------后台--------

package org.itat.zttc.ajax;

import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.itat.zttc.model.Person;
import org.itat.zttc.util.JsonUtil;

/**
* Servlet implementation class PersonServlet
*/
public class PersonJsonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Map<Integer,List<Person>> persons = new HashMap<Integer,List<Person>>();

/**
* @see HttpServlet#HttpServlet()
*/
public PersonJsonServlet() {
super();
List<Person> ps = new ArrayList<Person>();
ps.add(new Person(1,"张三",1200,22));
ps.add(new Person(2,"李四",1300,23));
ps.add(new Person(3,"王五",1400,24));
persons.put(1, ps);
ps = new ArrayList<Person>();
ps.add(new Person(11,"刘德华",12000,32));
ps.add(new Person(12,"周杰伦",13000,33));
ps.add(new Person(13,"张曼玉",14000,34));
ps.add(new Person(14,"梁朝伟",15000,35));
persons.put(2, ps);

ps = new ArrayList<Person>();
ps.add(new Person(21,"孙悟空",22000,132));
ps.add(new Person(22,"猪八戒",23000,133));
ps.add(new Person(23,"沙和尚",24000,134));
ps.add(new Person(24,"唐和尚",25000,135));
persons.put(3, ps);
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、要返回json需要设置为text/html,需要为respose设置contentType
response.setContentType("text/html;charset=utf-8");
//2、获取Writer
Writer out = response.getWriter();
//3、获取部门id
int did = Integer.parseInt(request.getParameter("did"));
//4、获取用户列表对象,
List<Person> ps = persons.get(did);
out.write(JsonUtil.getInstance().obj2json(ps));
/*//5、拼接json
StringBuffer px = new StringBuffer();
px.append("[");
int index = 0;
for(Person p:ps) {
if(index==0) {
px.append("{");
index++;
} else {
px.append(",{");
}
px.append("id:").append(p.getId()).append(",");
px.append("name:\"").append(p.getName()).append("\",");
px.append("salary:").append(p.getSalary()).append(",");
px.append("age:").append(p.getAge());
px.append("}");
}
px.append("]");
//6、通过out写回去
out.write(px.toString());*/
}

}

----------------配置文件----

posted @ 2017-05-08 21:54  小拽A  阅读(202)  评论(0编辑  收藏  举报