前后端值的传递问题

2,320 阅读1分钟

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(); 

              }