由于项目需要通过ajax得到后台的List对象里面的值,由于没有接触过json所以前期我只能先传字符串再在js里截取子串实现。闲暇时间摸索了一下关于json接受List对象的方法,步骤如下:
1.首先下载json所以依赖的包, Json-lib 最新版 json-lib-2.3-jdk15.jar,其官方网站是: http://json-lib.sourceforge.net/可以直接download,细心的你会发现其网站页面里面有提示它还需要其他包:
Json-lib requires (at least) the following dependencies in your classpath:
•jakarta commons-lang 2.4
•jakarta commons-beanutils 1.7.0
•jakarta commons-collections 3.2
•jakarta commons-logging 1.1.1
•ezmorph 1.0.6
下载地址分别是:
http://commons.apache.org/lang/
http://commons.apache.org/beanutils/
http://commons.apache.org/collections/
http://commons.apache.org/logging/
http://ezmorph.sourceforge.net/
2.首先先见一个小web项目
先建一个User类:
再建一个servlet
3.建立ajax实现
这里为了快速实现用的是jquery实现的。
测试开始,点击按钮弹出zah 123
json[0]就相当于u1对象 json[1]相当于u2对象,对于其属性的访问跟java对象一样,其他的Connection测试应该一样,访问Map的话直接把返回函数改成如下即可:
}直接跟上Key.属性即可访问Object对象。
项目源码在下面
1.首先下载json所以依赖的包, Json-lib 最新版 json-lib-2.3-jdk15.jar,其官方网站是: http://json-lib.sourceforge.net/可以直接download,细心的你会发现其网站页面里面有提示它还需要其他包:
Json-lib requires (at least) the following dependencies in your classpath:
•jakarta commons-lang 2.4
•jakarta commons-beanutils 1.7.0
•jakarta commons-collections 3.2
•jakarta commons-logging 1.1.1
•ezmorph 1.0.6
下载地址分别是:
http://commons.apache.org/lang/
http://commons.apache.org/beanutils/
http://commons.apache.org/collections/
http://commons.apache.org/logging/
http://ezmorph.sourceforge.net/
2.首先先见一个小web项目
先建一个User类:
- packagecom.json;
- publicclassUser{
- Stringusername;
- Stringpassword;
- publicStringgetUsername(){
- returnusername;
- }
- voidsetUsername(Stringusername){
- this.username=username;
- publicStringgetPassword(){
- returnpassword;
- voidsetPassword(Stringpassword){
- this.password=password;
- }
再建一个servlet
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.ArrayList;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.sf.json.JSONArray;
classTestJsonextendsHttpServlet{
voiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
voiddoPost(HttpServletRequestrequest,250)"> response.setContentType("text/html");
Stringstr=request.getParameter("name");//得到ajax传递过来的paramater
System.out.print(str);
PrintWriterout=response.getWriter();
Listlist=newArrayList();//传递List
Mapm=newHashMap();//传递Map
Useru1=newUser();
u1.setUsername("zah");
u1.setPassword("123");
Useru2= u2.setUsername("ztf");
u2.setPassword("456");
list.add(u1);//添加User对象
list.add(u2); m.put("u1",u1);
m.put("u2",u2);
JSONArrayjsonArray2=JSONArray.fromObject(list);
//把java数组转化成转化成json对象
JSONObjectjo=JSONObject.fromObject(m);//转化Map对象
out.print(jsonArray2);//返给ajax请求
out.print(jo); 配置好web.xml中的servlet映射,这一步就略了。
3.建立ajax实现
这里为了快速实现用的是jquery实现的。
<scripttype="text/javascript"src="js/jquery.js"></script>
<scripttype="text/javascript">
functiontest(){
$.ajax({
type:"POST",//请求方式
url:"testjson",0); padding:0px; margin:0px; width:auto; border:0px">//请求路径
cache:false,
data:"name=zah",0); padding:0px; margin:0px; width:auto; border:0px">//传参
dataType:'json',0); padding:0px; margin:0px; width:auto; border:0px">//返回值类型
success:function(json){
alert(json[0].username+""json[0].password);//弹出返回过来的List对象
});
</script>
</head>
<body>
<inputtype="button"name="b"value="测试"onclick=test()>
</body>
测试开始,点击按钮弹出zah 123
json[0]就相当于u1对象 json[1]相当于u2对象,对于其属性的访问跟java对象一样,其他的Connection测试应该一样,访问Map的话直接把返回函数改成如下即可:
alert(json.u1.username)
}
}直接跟上Key.属性即可访问Object对象。
项目源码在下面