JavaWEB前端向服务器端发送对象

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

  1. var params = [];node

  2. var param = {};ajax

  3. param["aaa"] = "a";数据库

  4. param["bbb"] = true;json

  5. param["ccc"] = 2;浏览器

  6. params.push(param);服务器

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

  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(/\n|\r|\t/g, function (a)

  30. {

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

  32. }) + '"';

  33. case 'boolean':

  34. return obj.toString();

  35. default:

  36. return obj.toString();

  37. }

  38. }

  三、前台封装好之后,使用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);

  四、经过内置方法转化成集合,再传递到ibatis或者本身使用的数据库持久层进行处理便可。

相关文章
相关标签/搜索