js的的数组传递到servlet,并且转换成list类型

总体思路:

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页面传过来的值,让大家看看我接收的值长什么样,更好理解

 有什么不懂可私信或评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值