zoukankan      html  css  js  c++  java
  • JavaWEB前端向服务器端发送对象

    最近项目中需要做一个关于批量删除的功能,删除条件有多个,需要从页面全部传给后台服务器程序,单个的删除,可以拼接参数给url,服务器端获取参数后执行删除操作即可。但是批量删除多个,参数会很多,传递就有些麻烦。当然有一种比较常见的解决方法,是使用逗号、下划线、或者分号分割,然后传到后台拆分后再进行操作,这种方法需要前台拼接,后台解析,稍显繁复且容易出错。对于搞JAVA程序的我来说,显得不是很面向对象。于是很自然的想到了使用json字符串进行传递数据.

    具体步骤如下:

    1、先把想要传递的参数封装成js对象,代码样例如下:

    var params = [];

    var param = {};

    param["aaa"] = "a";

    param["bbb"] = true;

    param["ccc"] = 2;

    params.push(param);

      2、接下来把js对象转成json字符串,比较常见的做法是使用JSON.stringfy(),尝试一番之后发现IE8浏览器并不支持(该方法对谷歌、火狐、以及IE9以上版本浏览器完美支持),而我们当前的产品只支持IE浏览器,转而求救谷歌百度,找到一个比较通用的js方法,代码如下:

    function obj2Str(obj) {

    switch (typeof (obj)) {

    case 'object':

    var ret = [];

    if (obj instanceof Array) {

    for (var i = 0, len = obj.length; i < len; i++)

    {

    ret.push(obj2Str(obj[i]));

    }

    return '[' + ret.join(',') + ']';

    }

    else if (obj instanceof RegExp)

    {

    return obj.toString();

    }

    else

    {

    for (var a in obj)

    {

    ret.push(a + ':' + obj2Str(obj[a]));

    }

    return '{' + ret.join(',') + '}';

    }

    case 'function':

    return 'function() {}';

    case 'number':

    return obj.toString();

    case 'string':

    return '"' + obj.replace(/(\|")/g, '\$1').replace(/ | | /g, function (a)

    {

    return (' ' == a) ? '\n' : (' ' == a) ? '\r' : (' ' == a) ? '\t' : '';

    }) + '"';

    case 'boolean':

    return obj.toString();

    default:

    return obj.toString();

    }

    }

      3、前台封装好以后,使用ajax请求到后台,JAVA解析json字符串的方法不少,可以在网上找写好的方法,当然也可以使用json-lib-xxx.jar,这个jar包在项目中应用很广泛,LZ上一家公司就使用其做了大量json转化工作,使用方法如下:

    JSONArray jsonArray = JSONArray.fromObject(jsonStr);

    List<Map> cmdList = (List<Map>)JSONArray.toCollection(jsonArray, Map.class);

      4、通过内置方法转化成集合,再传递到ibatis或者自己使用的数据库持久层进行处理即可。

    技术分享:kaige123.com

  • 相关阅读:
    Codeforces 1291 Round #616 (Div. 2) B
    总结
    刷新DNS解析缓存+追踪+域名解析命令
    数学--数论--Hdu 5793 A Boring Question (打表+逆元)
    Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析
    LeetCode 117 Populating Next Right Pointers in Each Node II
    LeetCode 116 Populating Next Right Pointers in Each Node
    test test
    LeetCode 115 Distinct Subsequences
    LeetCode 114. Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/kaige123/p/5819840.html
Copyright © 2011-2022 走看看