Java后台与js前端之间的通信问题

      今天写代码遇到一个问题,就是需要在js中获取后台传过来的list集合,还需要对list进行遍历获取里面的对象,首先想到的是将list绑定到request对象上转发到前端,然后用EL表达式直接获取该list集合,可是遍历该list出问题了,因为此时list已经不是集合了,而是字符串,对字符串遍历只能得到单个字符,没法获取里面存储的对象,所以这条路走不通。

然后想到了先将数据传到JSP中,用jstl表达式对其进行遍历,将遍历得到的结果装到一个隐藏的div里面,通过jQuery获取该div里的HTML来间接获取list里的内容,这样做

是可以的,代码如下


这样做的坏处是还得写jstl及div,比较麻烦,然后想到了用json,流程是这样的,在后台先将list集合转化为json字符串,然后绑定到request上转发到前端,在js中直接用EL表达式获取已转化为json字符串的list,在js中json字符串会被自动转化为json对象,这样list就变成了json数组,遍历的时候就比较方便了,获取到json对象后,再根据键就可以取到值了,代码如下:

后台:

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
List<Coord> list=dao.findAll();
//==================================
JSONArray jsonArray2 = JSONArray.fromObject(list);//将集合转换为json格式
String jsonString=jsonArray2.toString();//将json转换为字符串
//==================================
req.setAttribute("list", jsonString);
//请求转发
req.getRequestDispatcher("/baidu.jsp").forward(req, resp);
}

前端js:

 var points = new Array();
var list=${list};
for (var i in list) {
var lon=list[i].longitude;//经度
var lat=list[i].latitude;//纬度
points[i]=new BMap.Point(lon,lat);
}

使用JSONArray需要导入包json-lib,在阿里云的maven价包库中坐标为

<dependency>
 
        <groupId>net.sf.json-lib</groupId>
 
        <artifactId>json-lib</artifactId>
 
        <version>2.2.1</version>
 
        <classifier>jdk13</classifier>
</dependency>

导入这个包,与其相关联的包都会导入。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值