最近项目中需要做一个关于批量删除的功能,删除条件有多个,需要从页面全部传给后台服务器程序,单个的删除,可以拼接参数给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(/\n|\r|\t/g, function (a)

{

return ('\n' == a) ? '\\n' : ('\r' == a) ? '\\r' : ('\t' == 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

JavaWEB前端向服务器端发送对象的更多相关文章

  1. javaweb学习总结(十)——HttpServletRequest对象(一)(转)

    (每天都会更新至少一篇以上,有兴趣的可以关注)转载自孤傲苍狼 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器 ...

  2. IT兄弟连 JavaWeb教程 JSP内置对象1

    JSP内置对象定义 JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过JSP页面编写来实例化,在所有的JSP页面中都可以直接使用,它们起到了简化页面的作用,JSP的内 ...

  3. Ajax向服务器端发送请求

    Ajax向服务器端发送请求 Ajax的应用场景 页面上拉加载更多数据 列表数据无刷新分页 表单项离开焦点数据验证 搜索框提示文字下拉列表 Ajax运行原理 Ajax 相当于浏览器发送请求与接收响应的代 ...

  4. javaWEB中的四种域对象

    javaWEB中的四种域对象 (1)ServletContext ServletContext是最大的Web域对象,在整个工程内有效,可以存储一些需要全局部署的配置文件,也可以存储其他信息,不过因为它 ...

  5. SpringMVC 前端获得定义JSON对象的方法

    SpringMVC 前端获得定义JSON对象的方法: 可以使用map进行对象的创建,这样就会解析成键值对,不需要为前端专门定义对象.

  6. Android客户端连接服务器端,向服务器端发送请求HttpURLConnection

    在Java中想后台服务器发送请求一般都直接使用了Java的网络编程,或者使用HttpClient向后台服务器端发送HTTP请求.虽然在安卓中,所有Java的API都可以使用,而却使用其并不会出现什么问 ...

  7. js在前端json字符串和对象互相转化

    js在前端json字符串和对象互相转化 //对象转json串 注意:参数必须是对象,数组不起作用,对象格式{'0'=>'a'} JSON.stringify( arr ); //json字符串转 ...

  8. Android学习笔记--通过wifi向服务器端发送数据

    (转自http://www.cnblogs.com/zhxiang/archive/2011/07/21/2112825.html) 客户端程序: 1 2 3 4 5 6 7 8 9 10 11 12 ...

  9. Python Django 前后端数据交互 之 前端向后端发送数据

    Python Django 之 前端向后端发送数据

随机推荐

  1. PageBean分页组件

    Page.java package org.guangsoft.bean; import java.util.List; public class Page { private int current ...

  2. javascript基础总结

    一.语法 ------------------------------ javascript中的一切(变量.函数名和操作符)都区分大小写. 标识符:就是指变量.函数.属性的名字,标识符要求如下 1 第 ...

  3. July 22nd, Week 30th Friday, 2016

    Love means never having to say you are sorry. 爱就是永远不必说对不起. Love means knowing each other deeply, the ...

  4. dbVisualizer破解

    下载dbvis.puk,替换C:\Program Files\DbVisualizer\lib\dbvis.jar中的文件. 替换后打开选手动的key:下载地址dbvis.license

  5. 矩阵按键的试验---verilog

    矩阵键盘的试验,采用三段式状态机处理方法. 难点在于检测状态机中:按键消抖以后逐列检测. 电路图: 代码 /********************************Copyright***** ...

  6. ubuntu下安装kde Plasma

    Ubuntu15.04安装KDE Plasma 5.3桌面环境_百度经验 http://jingyan.baidu.com/article/bad08e1ee280e709c8512185.html ...

  7. Android的onCreateOptionsMenu()创建菜单Menu详解(转)

    Android一共有三种形式的菜单:            1.选项菜单(optinosMenu)            2.上下文菜单(ContextMenu)            3.子菜单(s ...

  8. 建模算法(二)——整数规划

    一.概述 1.定义:规划中变量部分或全部定义成整数是,称为整数规划. 2.分类:纯整数规划和混合整数规划. 3.特点: (1)原线性规划有最优解,当自变量限制为整数后: a.原最优解全是整数,那最优解 ...

  9. MSSQL 2005 列转行应用案例

    /*MSSQL 2005 列转行应用案例 By claro(陈亮) 2008-12-2 转载请包含此信息*/ --test table KuCunMX If object_id ('KuCunMX') ...

  10. zookeeper 4 letter 描述与实践

    命令示例描述 Conf echo conf | nc localhost 2181 (New in 3.3.0)输出相关服务配置的详细信息.比如端口.zk数据及日志配置路径.最大连接数,session ...