1、XStream
作用:把JavaBean转换为(序列化为)xml
jar包:
核心JAR包:xstream-1.4.7.jar;
依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);
使用步骤:
1)XStream xstream = new XStream(); //创建XStream对象
2)String xmlStr = xstream.toXML(javabean); //将JavaBean为xml
方法:
1).toXML(javabean); //将JavaBean为xml
2).alias("别名", 被修改的类型.class) //使元素名显示为别名
3).useAttributeFor(Province.class, "name") //将类中成员生成的元素,设置到类元素属性中
4).addImplicitCollection(Province.class, "cities") //去除Collection类型的无用名
5).omitField(City.class, "description") //去除指定的类生成名
使用细节及方法示例
一、别名:修改类型对应的元素名修改
xstream.alias("china", List.class):让List类型生成的元素名为china
xstream.alias("province", Province.class):让Province类型生成的元素名为province
二、使用属性:让类的成员生成为元素的属性!
背景:默认类的成员,生成的是元素的子元素
eg:
//把Province类的名为name成员,生成<province>元素的name属性
xstream.useAttributeFor(Province.class, "name"):
三、去除Collection类型的无用名:我们只需要Collection的内容,不希望Collection本身也生成一个元素
eg:
//让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素
xstream.addImplicitCollection(Province.class, "cities"):
四、指定去除类的生成名,使其不生成xml元素
eg:
//在生成的xml中不会出现City类的名为description的对应的元素
xstream.omitField(City.class, "description"):
2、JSON
1. json:js提供的一种数据交换格式!(如同xml)
2. 语法
{}:表示为对象。
属性名:必须使用双引号括起来!单引不行!!!
属性值:
1)null
2)数值
3)字符串
4)数组:使用[]括起来
5)boolean值:true和false
3. 应用json
var person = {"name":"zhangSan", "age":18, "sex":"male"};
4. json与xml比较
可读性:XML胜出
解析难度:JSON本身就是JS对象(主场作战,不用解析),所以简单很多
流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。
知识点:
eval():JavaScript全局对象
可计算某个字符串,并执行其中的的 JavaScript 代码。
使用:
eval(" ("+ str+") ") str为字符串代码
jsp代码:
window.onload = function() {
var btn = document.getElementById("btn");
btn.onclick = function() {
var xmlHttp = createXMLHttpRequest();
xmlHttp.open("GET", "<c:url value='/AServlet'/>", true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var text = xmlHttp.responseText;
var person = eval("(" + text + ")");
var s = person.name + ", " + person.age + ", " + person.sex;
document.getElementById("h3").innerHTML = s;
}
};
};
};
</script>
</head>
<body>
<%-- 点击按钮后,把服务器响应的数据显示到h3元素中 --%>
<button id="btn">点击这里</button>
<h1>JSON之Hello World</h1>
<h3 id="h3"></h3>
</body>
3、json-lib
json-lib:可以把javabean转换成json串
2. jar包
json-lib-2.4jdk15.jar
3. 核心类
1)JSONObject:相当于(Map)
额外方法:
.toString() //额外方法
.fromObject(类)
eg:
//把对象转换成JSONObject对象
JSONObject map = JSONObject.fromObject(person)
2)JSONArray :相当于(List)
额外方法
.toString()
.fromObject(集合)
eg:
//把list转换成JSONArray对象
JSONArray jsonArray = JSONObject.fromObject(list)
使用XStream把JavaBean转换为(序列化为)xml案例:
public class XStreamTest {
public List<Province> getProvinceList(){
Province p1 = new Province();
p1.setName("北京");
p1.addCity(new City("东城区", "DongChengQu"));
p1.addCity(new City("昌平区", "ChangPingQu"));
Province p2 = new Province();
p2.setName("辽宁");
p2.addCity(new City("沈阳", "shenYang"));
p2.addCity(new City("葫芦岛", "huLuDao"));
List<Province> provinceList = new ArrayList<Province>();
provinceList.add(p1);
provinceList.add(p2);
return provinceList;
}
@Test
public void fun1(){
List<Province> proList = getProvinceList();
XStream xstream = new XStream();
String s = xstream.toXML(proList);
System.out.println(s);
}
@Test
public void fun2(){
List<Province> proList = getProvinceList();
XStream xstream = new XStream();
xstream.alias("china",List.class);
xstream.alias("province",Province.class);
xstream.alias("city",City.class);
String s = xstream.toXML(proList);
System.out.println(s);
}
@Test
public void fun3(){
List<Province> proList = getProvinceList();
XStream xstream = new XStream();
xstream.alias("china",List.class);
xstream.alias("province",Province.class);
xstream.alias("city",City.class);
xstream.useAttributeFor(Province.class, "name");
xstream.addImplicitCollection(Province.class, "cities");
xstream.omitField(City.class, "description");
String s = xstream.toXML(proList);
System.out.println(s);
}
}
ajaxutils.js 工具封装及简单使用
ajaxutils.js
function createXMLHttpRequest() {
try {
return new XMLHttpRequest();
} catch (e) {
try {
return ActvieXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
return ActvieXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("哥们儿,您用的是什么浏览器啊?");
throw e;
}
}
}
}
method,
url,
asyn,
params,
callback,
type
function ajax(option) {
var xmlHttp = createXMLHttpRequest();
if(!option.method) {
option.method = "GET";
}
if(option.asyn == undefined) {
option.asyn = true;
}
xmlHttp.open(option.method, option.url, option.asyn);
if("POST" == option.method) {
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
xmlHttp.send(option.params);
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var data;
if(!option.type) {
data = xmlHttp.responseText;
} else if(option.type == "xml") {
data = xmlHttp.responseXML;
} else if(option.type == "text") {
data = xmlHttp.responseText;
} else if(option.type == "json") {
var text = xmlHttp.responseText;
data = eval("(" + text + ")");
}
option.callback(data);
}
};
};
json简单使用
<script type="text/javascript" src="<c:url value='/ajax-lib/ajaxutils.js'/>">
</script>
<script type="text/javascript">
window.onload = function() {
var btn = document.getElementById("btn");
btn.onclick = function() {
ajax(
{
url:"<c:url value='/AServlet'/>",
type:"json",
callback:function(data) {
document.getElementById("h3").innerHTML = data.name + ", " + data.age + ", " + data.sex;
}
}
);
};
};
</script>
</head>
<body>
<%-- 点击按钮后,把服务器响应的数据显示到h3元素中 --%>
<button id="btn">点击这里</button>
<h1>显示自己封装的ajax小工具</h1>
<h3 id="h3"></h3>
</body>