由于项目需要通过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. voidsetUsername(Stringusername){
  9. this.username=username;
  10. publicStringgetpassword(){
  11. returnpassword;
  12. voidsetPassword(Stringpassword){
  13. this.password=password;
  14. }

再建一个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对象。
    项目源码在下面

    • TestJson.rar(1.2 MB)
    • 下载次数: 1342

    ajax和json跟java实现List、Map直接传递的更多相关文章

    1. 应用程序关闭时的iOS任务

      我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

    2. Swift 字符串替换/过滤/切割/拼接

      替换为/结果过滤过滤掉单个字符/结果过滤掉开头和结尾的空白结果切割对字符串使用/作为分隔符来切割,不允许空字符串使用split函数结果是一个数组对字符串使用/作为分隔符来切割,允许空字符串结果拼接结果

    3. Swift开发教程--字符串的操作

      替换把?替换为/结果

    4. swift 网络搜索热词排行

      1.使用www.showapi.com上的接口,需要注册添加一个App,这样才能获取appid和secret密钥,调用前需要订购套餐(选免费的就可以了);2.外部库Podfile文件内容,SnapKit这里暂时不需要用到:3.桥接头文件参考:http://www.jb51.cc/article/p-pcleyxep-te.html4.AppTransportSecurityhasblockedac

    5. 如何在Swift中打乱数组?

      如何随机化或混洗Swift中的数组中的元素?例如,如果我的数组包括52张扑克牌,我想洗牌,以便洗牌。这个答案详细说明了如何在Swift的各种版本中添加Fisher-Yatesshuffle。Swift3版本是最宽松的,但是它们至少可以用于数组。每个Swift版本的命名和行为与该版本的mutating和nonmutating排序方法相匹配。

    6. unit-testing – 如何在Swift中对NSFetchedResultsController进行单元测试

      我有一个Swift应用程序,它使用NSFetchedResultsController从持久存储中获取List对象:它的工作方式与预期的一样,我将List对象描述打印到控制台.我想为我的应用程序编写一些单元测试,所以我创建了扩展XCTestCase的类.代码编译没有问题,测试运行,但不幸的是我无法在该上下文中获取List对象.我在控制台中获得的所有内容都是List对象的数量和致命错误:线路上升:我

    7. swift – 检查自定义对象数组是否包含特定的自定义对象

      说我有一个非常简单的Person类我希望将一个这样的人的集合存储在一个属性中,该属性是一个Person类的数组,类型为Person也许我实现如下问题:我如何检查people.list是否包含实例alex,好吗?

    8. swift – 使用反射来设置对象属性,而不使用setValue forKey

      在Swift中,不可能使用.setValue(…)>可空类型字段,如Int?>具有枚举类型的属性>一个可空对象的数组,如[MyObject?]这有一个解决方法,也就是通过覆盖对象本身中的UnVersionKey方法的setValue.因为我正在写一个基于反射的通用对象映射器.请参阅EVReflection我想尽量减少这种手动映射.是否有其他方式自动设置这些属性?

    9. Swift Sliceable上的递归

      事实证明,有一个通用的解决方案.您需要添加这些通用要求:对于发布的问题,这给出了:这是任何切片上有用的通用缩减:我不能相信这一点,Apple开发论坛上的解决方案是posted.令人遗憾的是,通用要求如此涉及到这样一个基本操作–它几乎不直观!

    10. uitableview – 使用Swift的“使用未解析的标识符”

      我正在重写我在Swift中的一个应用程序,它显示SouthKohala的实时天气数据.爱Swift到目前为止!

    随机推荐

    1. xe-ajax-mock 前端虚拟服务

      最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

    2. vue 使用 xe-ajax

      安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

    3. AJAX POST数据中文乱码解决

      前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

    4. Koa2框架利用CORS完成跨域ajax请求

      实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

    5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

    6. ajax的cache作用

      filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

    7. 浅谈ajax上传文件属性contentType = false

      默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

    8. 909422229_ajaxFileUpload上传文件

      ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

    9. AJAX-Cache:一款好用的Ajax缓存插件

      原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

    10. jsf – Ajax update/render在已渲染属性的组件上不起作用

      我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

    返回
    顶部