ajax和json跟java实现List、Map直接传递

由于项目需要通过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类:
Java代码 收藏代码
  1. packagecom.json;
  2. publicclassUser{
  3. Stringusername;
  4. Stringpassword;
  5. publicStringgetUsername(){
  6. returnusername;
  7. }
  8. publicvoidsetUsername(Stringusername){
  9. this.username=username;
  10. }
  11. publicStringgetPassword(){
  12. returnpassword;
  13. }
  14. publicvoidsetPassword(Stringpassword){
  15. this.password=password;
  16. }
  17. }

再建一个servlet
Java代码 收藏代码
  1. packagecom.json;
  2. importjava.io.IOException;
  3. importjava.io.PrintWriter;
  4. importjava.util.ArrayList;
  5. importjava.util.List;
  6. importjavax.servlet.ServletException;
  7. importjavax.servlet.http.HttpServlet;
  8. importjavax.servlet.http.HttpServletRequest;
  9. importjavax.servlet.http.HttpServletResponse;
  10. importnet.sf.json.JSONArray;
  11. publicclassTestJsonextendsHttpServlet{
  12. publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
  13. throwsServletException,IOException{
  14. doPost(request,response);
  15. }
  16. publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
  17. throwsServletException,IOException{
  18. response.setContentType("text/html");
  19. Stringstr=request.getParameter("name");//得到ajax传递过来的paramater
  20. System.out.print(str);
  21. PrintWriterout=response.getWriter();
  22. Listlist=newArrayList();//传递List
  23. Mapm=newHashMap();//传递Map
  24. Useru1=newUser();
  25. u1.setUsername("zah");
  26. u1.setPassword("123");
  27. Useru2=newUser();
  28. u2.setUsername("ztf");
  29. u2.setPassword("456");
  30. list.add(u1);//添加User对象
  31. list.add(u2);//添加User对象
  32. m.put("u1",u1);
  33. m.put("u2",u2);
  34. JSONArrayjsonArray2=JSONArray.fromObject(list);
  35. //把java数组转化成转化成json对象
  36. JSONObjectjo=JSONObject.fromObject(m);//转化Map对象
  37. out.print(jsonArray2);//返给ajax请求
  38. out.print(jo);//返给ajax请求
  39. }
  40. }
  41. 配置好web.xml中的servlet映射,这一步就略了。


3.建立ajax实现
这里为了快速实现用的是jquery实现的。
Java代码 收藏代码
  1. <scripttype="text/javascript"src="js/jquery.js"></script>
  2. <scripttype="text/javascript">
  3. functiontest(){
  4. $.ajax({
  5. type:"POST",//请求方式
  6. url:"testjson",//请求路径
  7. cache:false,
  8. data:"name=zah",//传参
  9. dataType:'json',//返回值类型
  10. success:function(json){
  11. alert(json[0].username+""json[0].password);//弹出返回过来的List对象
  12. }
  13. });
  14. }
  15. </script>
  16. </head>
  17. <body>
  18. <inputtype="button"name="b"value="测试"onclick=test()>
  19. </body>

你可能感兴趣的:(java实现)