• session中删除数组中的某一个值


    这篇随笔简单的讲一下在session中移除数组中的某一项内容,比如这里有一个购物车其中有两件商品,需要移除其中洗发水这一件商品。

    其实在这个session对象中存储了一个数组,在订购页面时选择商品加入这个数组,输出时就遍历这个数组逐个输出,当我们要移除某一个值时,只需要获得需要删除商品的id即可,在数组中remove掉,再把这个新的数组重新写回session即可完成简单的移除操作。

     如果看了上面简单的文字说明后不太清楚的话那就来看一下这两段代码,有一点jsp的皮毛即可看懂了,希望能帮到入门的朋友。

    购物车页面:

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=gb2312"%>
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3 <html>
     4   <head>
     5     <title>购物车</title>
     6   </head>
     7   
     8   <body>
     9     <%
    10         ArrayList goods = (ArrayList)session.getAttribute("goods");
    11         String id_ = request.getParameter("id");
    12         if(goods==null){ //session为空,创建新的session数组
    13             goods = new ArrayList();
    14             session.setAttribute("goods", goods);
    15             out.println("您的购物车为空!<br>");
    16         }else if(goods.size()<=0){ //session数组不为空但是无内,无需新建session
    17             out.println("您的购物车为空!<br>");
    18         }else{ //当有内容时输出session中内容,即购物车中物品
    19             out.println("您的购物车:<br><br>");
    20             for(int i=0;i<goods.size();i++){
    21                 out.print(goods.get(i));
    22     %>
    23     <a href="Cart.jsp?id=<%=i%>">移除</a>
    24     <%
    25                 out.print("<br>");
    26             }
    27         }
    28         
    29         //处理移除session
    30         if(id_!=null){
    31             int id = Integer.parseInt(id_); //获取所在物品的id
    32             goods.remove(id); //移除数组中指第i项
    33             session.setAttribute("goods", goods); //重新将数组写回session
    34             response.sendRedirect("Cart.jsp"); //重定向至此页面
    35         }
    36     %>
    37     <br><a href="Order.jsp">返回订购页</a>
    38   </body>
    39 </html>
    购物车界面

    订购页面:

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=gb2312"%>
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3 <html>
     4   <head>
     5     <title>订购页面</title>
     6   </head>
     7   <body>
     8   <p>商品列表:</p>
     9     <form action="Order.jsp" method="post">
    10           洗发水 <input name="item" type="hidden" value="洗发水 "> <input type="submit" value="添加到购物车">
    11       </form>
    12       <form action="Order.jsp" method="post">
    13           泡泡糖 <input name="item" type="hidden" value="泡泡糖 "> <input type="submit" value="添加到购物车">
    14       </form>
    15       <%
    16         ArrayList goods = (ArrayList)session.getAttribute("goods");
    17         if(goods==null){
    18             goods = new ArrayList();
    19             session.setAttribute("goods", goods);
    20         }else{
    21             String item = request.getParameter("item");
    22             if(item!=null){
    23                 item=new String(item.getBytes("ISO-8859-1"), "gb2312"); //解决乱码问题
    24                 goods.add(item);
    25             }
    26         }
    27     %>
    28     <a href="Cart.jsp">前往购物车</a>
    29   </body>
    30 </html>
    订购页面

    代码演示图

     补充内容

     在传值中,中文很容易出现乱码的情况,这次两个页面中的解决方法是在page指令中加入“ contentType="text/html; charset=gb2312" ”和 “ getBytes("ISO-8859-1"), "gb2312") ”来实现。

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=gb2312"%>
    item=new String(item.getBytes("ISO-8859-1"), "gb2312"); //解决乱码问题
  • 相关阅读:
    RQNOJ 117 最佳课题选择:多重背包
    RQNOJ 95 多多看DVD(加强版):01背包
    RQNOJ 624 运动鞋:dp
    RQNOJ 622 最小重量机器设计问题:dp
    bzoj 3262 陌上花开
    bzoj 3224 Tyvj 1728 普通平衡树
    bzoj 4196 软件包管理器
    luogu 3953 逛公园
    bzoj 2157 旅行
    luogu 3384 【模板】树链剖分
  • 原文地址:https://www.cnblogs.com/shenyuanfeng/p/11854497.html
Copyright © 2020-2023  润新知