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

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

    1. var params = [];

    2. var param = {};

    3. param["aaa"] = "a";

    4. param["bbb"] = true;

    5. param["ccc"] = 2;

    6. params.push(param);

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

    1. function obj2Str(obj) {

    2. switch (typeof (obj)) {

    3. case 'object':

    4. var ret = [];

    5. if (obj instanceof Array) {

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

    7. {

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

    9. }

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

    11. }

    12. else if (obj instanceof RegExp)

    13. {

    14. return obj.toString();

    15. }

    16. else

    17. {

    18. for (var a in obj)

    19. {

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

    21. }

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

    23. }

    24. case 'function':

    25. return 'function() {}';

    26. case 'number':

    27. return obj.toString();

    28. case 'string':

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

    30. {

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

    32. }) + '"';

    33. case 'boolean':

    34. return obj.toString();

    35. default:

    36. return obj.toString();

    37. }

    38. }

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

    1. JSONArray jsonArray = JSONArray.fromObject(jsonStr);

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

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

  • 相关阅读:
    函数总结
    python之内置函数,匿名函数
    列表推导式 生成器表达式
    迭代器和生成器函数
    最近练习题
    python----------闭包 、装饰器
    python的逻辑运算符
    python------函数嵌套及作用域链
    python ---------函数
    如何实现负载均衡
  • 原文地址:https://www.cnblogs.com/plan123/p/5603785.html
Copyright © 2011-2022 走看看