1. 对于一般的web开发来讲,大多数都是通过json格式来进行值的传递。
对于一个jsp界面来讲,通过界面获取到文本框里面的值以后通过ajax的形式向后端传递数值,如{'name':'zhangsan'} ,后台可以直接通过request获取到值。
对于后端往前端传值,一般采用也是采用json格式,如果多个数值一般封装成List集合的形式返回。通常是List里嵌套Map,即List<Map<String,Object>>
通过代码 String json = JSONArray.fromObject(list).toString();
通过response将数据返回到界面:response.getWriter().print(json);
而界面拿到数据之后也需要将数据转换为界面能识别的json格式,以一个简单的ajax请求为列子:
$.post( 'servlet/Action',
{ 'name':'张三', 'nickName':'zexi' },
function(data){
var list =JSON.parse(data);
for (var i = 0; i < list.length; i++) {
}
});
2.对于从前端传递中文到后端,会造成乱码问题,此时需要在界面上将需要传递的值先变为字节码,通过特定编码格式的字节码传递到后端,后但在根据相应的格式进行解码:
2.1 var name = $("#id").val();
在获取到值之后,中文传入后端会出现乱码的情况,如果是Ajax传入,中文处理方式 为:encodeURI(name),如果是直接下载报表相关功能,基本都是用window.location.href="具体的下载地址,并带上参数",此时需要使用的中文处理方式为:encodeURI(encodeURI(name))
传递到后端之后在按照相应的编码格式进行解码:
name = URLEncoder.encode(name, "UTF-8");
2.2 前端获取多个数据往后端传值,一般采用数组中套对象的方法,例:
var arr = {};
arr['tt1'] = tt1;
arr['tt2'] = tt2;
'arr':JSON.stringify(map)
后端解析方式:
JSONArray arr = JSONArray.fromObject(params.get("arr"));
for (int i = 0; i < arr.size(); i++) {
JSONObject jsonMap = JSONObject.fromObject(arr.get(i));
String tt1 = jsonMap.get("tt1").toString();
String tt2 = jsonMap.get("tt2").toString();
}