一、json
- jar包
要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
- json-lib-2.4-jdk15.jar
- commons-beanutils-1.8.0.jar
- commons-collections-3.2.1.jar
- commons-lang-2.5.jar
- ezmorph-1.0.6.jar
- JSON和其他对象转换
- JAVA对象转JSON
先将java对象转换为json对象,在将json对象转换为json字符串
JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象
String str = json.toString();//将json对象转换为字符串
- JSON转JAVA
同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。
JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
将json对象转换为java对象
Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象
- 遍历JSON对象 获取属性
//res:返回的json对象
var list="";
$.each(res,function(i){
list +=i+' '+res[i]+
' '
;
})
结果:
age 11 id 1 name zhangzhang sex 女
- 获取JSON对象的指定属性
//data1为某个标签的id值 rest为JSON对象 name为JSON对象的一个属性名
document.getElementById("data1").innerHTML=res.name //获取json对象的指定属性值,显示在id=data1的标签中
二、AJAX
- 在js中引入JQuery的核心库(写在<head></head>中)
<script src="jquery.min.js"></script>
需要引用 jquery.min.js
- AJAX请求
$.ajax({
url:"/RestDemo1.1/demo1", //ajax发送请求的地址
//dataType:"json", //预期服务器返回的数据类型
data:{"name":"zhanzhanzhan"}, //data属性,将data数据传送到url地址中,发送到服务器的数据,将自动转换为请求字符串格式
success:function (res){//请求成功后的回调函数
alert(res); //res返回的数据
},
fail:function(res){//请求失败后的回调函数
alert(res);
}
})
三、代码使用DEMO
- demoServlet.java
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//设置编码方式
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//声明三个类,模拟数据库中的查询结果
Student s1=new Student("zhang",1,"女",11);
Student s2=new Student("wang",2,"女",22);
Student s3=new Student("liu",3,"女",33);
//设置编码方式
response.setContentType("text/html;charset=UTF-8");
// 设置响应头允许ajax跨域访问
//response.setHeader("Access-Control-Allow-Origin", "*");
/* 星号表示所有的异域请求都可以接受, */
//response.setHeader("Access-Control-Allow-Methods", "GET,POST");
//获取ajax 中data传过来的数据
String name = request.getParameter("name");
s1.setName(name);
JSONObject json = JSONObject.fromObject(s1);//将java对象转换为json对象
String str = json.toString();//将json对象转换为字符串
//out.println中的内容都将显示在回调函数中
out.print(json);
out.flush();
out.close();
}
- demo1.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>传送json数据</title>
<script src="jquery.min.js"></script>
<script>
//页面加载时执行
$.ajax({
url:"/RestDemo1.1/demo1",
dataType:"json",
data:{"name":"zhangzhang"}, //data属性,将data数据传送到url地址中
success:function (res){
document.getElementById("data2").innerHTML=res.name //获取json对象的指定属性值
//DOM层刷新
var listHtml='';
//循环取json对象的属性,并呈现在列表中
listHtml += '<ul>';
$.each(res,function(i){
listHtml += '<li>'+i+' '+res[i]+'</li>';
})
listHtml += '</ul>';
$("#data1").replaceWith(listHtml); //将listHtml内容替换原有内容
//var arr;
//arr=res.split(" "); //分割成数组, “ ” 中的内容为分隔符
console.log(res);
},
fail:function(res){
alert(res);
}
})
</script>
</head>
<body>
<input type="button" value="使用Json请求去后台获取数据返回是json对象" onclick="toJson()" >
<div id="data1">111111</div>
<div id="data2">222222</div>
<script>
//这是启动AJAX异步通信的方法
function toJson()
{
alert(1); //用于调试
$.ajax({
url:"/RestDemo1.1/demo1", //ajax发送请求的地址
//dataType:"json", //json对象无法划分数组,下面会出错
data:{"name":"zhanzhanzhan"}, //data属性,将data数据传送到url地址中
success:function (res){
alert(res);
//DOM层刷新
$("#data2").text(res);
var arr;
arr=res.split(" "); //分割成数组 “” 中的内容为分隔符
console.log(arr);
},
fail:function(res){
alert(res);
}
})
}
</script>
</body>
</html>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>RestDemo1.1</display-name>
<welcome-file-list>
<welcome-file>demo1.html</welcome-file>
</welcome-file-list>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>demoServlet</servlet-name>
<servlet-class>demo.demoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demoServlet</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
四、异常处理
- java ClassNotFoundException 解决方案:导包 包不全
- java NoClassDefFoundException 解决方案:将包放入tomcat的lib中 让tomcat可以找到
五、资源