总体思路:
1.数组转成json传递到servlet接收;
2.接收的是String类型的,将String类型里面的双引号和[]两个括号去除,只留下逗号
3.将String类型根据逗号转成数组类型
4.定义一个list类型,将数组类型遍历,同时将遍历出来的数据放到list
其实很简单,只不过需要转的次数较多,但是也能实现。上代码
jsp里面的js用ajax传值
JSON.stringify()这个就是转json格式,括号里面是我的值
$.ajax({
type:"post",
url:"balances?listId="+JSON.stringify(listId)+"&&listNum="+JSON.stringify(listNum)+
"&&listPrice="+JSON.stringify(listPrice)+"&&listSumPrice="+JSON.stringify(listSumPrice)+"&&userId="+$("[name='userId']").val(),
dataType:"text",
success:function (data) {
location.href="submit.jsp";
}
})
下面是servlet页面,我基本上每行都加有注释,饱和式注释
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String listId = request.getParameter("listId");
String listNum = request.getParameter("listNum");
String listPrice = request.getParameter("listPrice");
String listSumPrice = request.getParameter("listSumPrice");
String userId = request.getParameter("userId");
//提前定义三个字符串,对接收过来的数据,进行清除无用的符号,方便转换成数组
String yin ="\"";
String zuo ="[";
String you ="]";
//商品id的操作
String listId1=listId.replace(yin,"");//去除"双引号
String listId2=listId1.replace(zuo,"");//去除[
String listId3=listId2.replace(you,"");//去除]
String[] tag = listId3.split(",");//将String类型转成String数组。(以逗号分隔)
List<String> goodsIdlist = new ArrayList<String>();//定义一个list
for (int i=0;i< tag.length;i++){//遍历数组,并将数组数据写入list。
goodsIdlist.add(tag[i]);
}
//商品的数量操作
String listNum1=listNum.replace(zuo,"");//去除[
String listNum2=listNum1.replace(you,"");//去除]
String[] tag1 = listNum2.split(",");//将String类型转成String数组。(以逗号分隔)
List<String> goodsNumber = new ArrayList<String>();//定义一个list,准备接收数组的内容
for (int i=0;i< tag1.length;i++){//遍历数组,并将数组数据写入list。
goodsNumber.add(tag1[i]);
}
//商品的小计价格操作
String listPrice1=listPrice.replace(yin,"");//去除"双引号
String listPrice2=listPrice1.replace(zuo,"");//去除[
String listPrice3=listPrice2.replace(you,"");//去除]
String[] tag2 = listPrice3.split(",");//将String类型转成String数组。(以逗号分隔)
List<String> goodsPrice = new ArrayList<String>();//定义一个list,准备接收数组的内容
for (int i=0;i< tag2.length;i++){//遍历数组,并将数组数据写入list。
goodsPrice.add(tag2[i]);
}
//总价格操作:
String sumPrice = listSumPrice.replace(yin,"");//去除总价格的引号
double goodsSumPrice=Double.parseDouble(sumPrice);//强制转换为double类型
GoodsDao gid = new GoodsDaoImpl();//实现接口
Goods goods=null;//提前定义一个对象,接收查询的goods对象
List<Goods> goodsList= new ArrayList<Goods>();//定义一个list,接收goods对象
for (String s:goodsIdlist){//开始遍历
int goodsId = Integer.parseInt(s);//强制转换goodsIdlist的数据为int类型
goods=gid.findById(goodsId);//根据goodsIdlist的数据来查询,并且用goods接收
goodsList.add(goods);//将接收的goods对象,存入到goodsList里面
}
AddressDao aid = new AddressDaoImpl();
List<Address> addresses = aid.findAll(Integer.parseInt(userId));
request.getSession().setAttribute("address",addresses);//传递地址
request.getSession().setAttribute("goodsList",goodsList);//传递商品信息
request.getSession().setAttribute("goodsNumber",goodsNumber);//传递物品的数量
request.getSession().setAttribute("goodsPrice",goodsPrice);//传递商品小计价格
request.getSession().setAttribute("goodsSumPrice",goodsSumPrice);//传递总价格
response.getWriter().write("1");
request.getRequestDispatcher("submit.jsp").forward(request,response);//转发跳转至其他页面
另外我附一张我从jsp页面传过来的值,让大家看看我接收的值长什么样,更好理解
有什么不懂可私信或评论