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(/\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. }

  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或者自己使用的數據庫持久層進行處理即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM