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

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

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

购物车页面:

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>购物车</title>
</head> <body>
<%
ArrayList goods = (ArrayList)session.getAttribute("goods");
String id_ = request.getParameter("id");
if(goods==null){ //session为空,创建新的session数组
goods = new ArrayList();
session.setAttribute("goods", goods);
out.println("您的购物车为空!<br>");
}else if(goods.size()<=0){ //session数组不为空但是无内,无需新建session
out.println("您的购物车为空!<br>");
}else{ //当有内容时输出session中内容,即购物车中物品
out.println("您的购物车:<br><br>");
for(int i=0;i<goods.size();i++){
out.print(goods.get(i));
%>
<a href="Cart.jsp?id=<%=i%>">移除</a>
<%
out.print("<br>");
}
} //处理移除session
if(id_!=null){
int id = Integer.parseInt(id_); //获取所在物品的id
goods.remove(id); //移除数组中指第i项
session.setAttribute("goods", goods); //重新将数组写回session
response.sendRedirect("Cart.jsp"); //重定向至此页面
}
%>
<br><a href="Order.jsp">返回订购页</a>
</body>
</html>

购物车界面

订购页面:

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>订购页面</title>
</head>
<body>
<p>商品列表:</p>
<form action="Order.jsp" method="post">
洗发水 <input name="item" type="hidden" value="洗发水 "> <input type="submit" value="添加到购物车">
</form>
<form action="Order.jsp" method="post">
泡泡糖 <input name="item" type="hidden" value="泡泡糖 "> <input type="submit" value="添加到购物车">
</form>
<%
ArrayList goods = (ArrayList)session.getAttribute("goods");
if(goods==null){
goods = new ArrayList();
session.setAttribute("goods", goods);
}else{
String item = request.getParameter("item");
if(item!=null){
item=new String(item.getBytes("ISO-8859-1"), "gb2312"); //解决乱码问题
goods.add(item);
}
}
%>
<a href="Cart.jsp">前往购物车</a>
</body>
</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"); //解决乱码问题

session中删除数组中的某一个值 - 购物车例子 - jsp的更多相关文章

  1. js中删除数组中某一项的方法

    1:js中的splice方法 splice(index,len,[item])    注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...

  2. JS中删除数组中的元素方法

    删除指定下标数组元素 Array.prototype.del=function(index){ if(isNaN(index)||index>=this.length){ return fals ...

  3. [java]删除数组中的某一个元素

    package org.company.project.test; import java.util.Arrays; import java.util.Scanner; public class Ar ...

  4. php删除数组中相同的元素,只保留一个相同元素

    <?php// 删除数组中相同元素,只保留一个相同元素function formatArray($array){sort($array);$tem = ”;$temarray = array() ...

  5. C#如何删除数组中的一个元素

    C#如何删除数组中的一个元素,剩余的元素组成新数组,数组名不变double[] arr = new double[n];需要删除的是第m+1个数据arr[m]求新数组arr.(新数组arr包含n-1个 ...

  6. (实用篇)PHP中unset,array_splice删除数组中元素的区别

    php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除 ...

  7. jst通用删除数组中重复的值和删除字符串中重复的字符

    以下内容属于个人原创,转载请注明出处,非常感谢! 删除数组中重复的值或者删除字符串重复的字符,是我们前端开发人员碰到很多这样的场景.还有求职者在被面试时也会碰到这样的问题!比如:问删除字符串重复的字符 ...

  8. js删除数组中元素 delete 和splice的区别

    例如我有一个数组: var array = ["aa","dd","cc","aa"] ,我想删除这个数组的“dd”元素 ...

  9. JQ删除数组中的某个对象

    ---恢复内容开始--- var pros = []; 全局变量function doSearchSal(){ var param = {}; var searchSal=$.trim($(" ...

随机推荐

  1. kibana自动创建索引

    一般索引按月.季或年为单位创建索引.我这里写成logstash-www-2019-03,www是URL的二级域名.格式类型完全根据自己方便就行. 当ELK集群中的索引过多时,我这里有100多个不同的日 ...

  2. 使用docker搭建redis-cluster环境

    目录 基础环境信息 搭建步骤 搭建中遇到的问题 其他参考     临时接到一个测试任务,而测试需要用到redis-cluster环境,却没有现成的环境可用,于是只能自力更生搭建测试环境.一开始想采用在 ...

  3. ROS学习笔记(二) :使用roslaunch

    目录 roslaunch roslaunch的使用 以turtlesim为例 roslaunch roslaunch是ros自带的一个库,使用roslaunch可以同时运行多个节点,通过编写launc ...

  4. Kth Minimum Clique(2019年牛客多校第二场D题+k小团+bitset)

    目录 题目链接 题意 思路 代码 题目链接 传送门 题意 找第\(k\)小团. 思路 用\(bitset\)来标记每个结点与哪些结点直接有边,然后进行\(bfs\),在判断新加入的点与现在有的点是否都 ...

  5. Codeforces Round #605 (Div. 3)

    地址:http://codeforces.com/contest/1272 A. Three Friends 仔细读题能够发现|a-b| + |a-c| + |b-c| = |R-L|*2 (其中L ...

  6. django 权限设置 左侧菜单点击显示,面包屑

    1.左侧菜单点击显示 就是在点击的时候保留点击的功能 方法. 1.加入新的字段,pid来判断 class Permission(models.Model): """ 权限 ...

  7. 微信小程序中的事件

    事件 说明 bindtap bindload 当图片载入完毕时触发,event.detail = {height, width} bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒 ...

  8. postgres9.5.3升级postgres11.6

    附上postgres下载地址: https://yum.postgresql.org/11/redhat/rhel-7-x86_64/repoview/postgresqldbserver11.gro ...

  9. python语言(八)多线程、多进程、虚拟环境、unittest、生成测试报告

    一.多线程 进程与线程 进程:进程是资源(CPU.内存等)分配的最小单位,进程有独立的地址空间与系统资源,一个进程可以包含一个或多个线程 线程:线程是CPU调度的最小单位,是进程的一个执行流,线程依赖 ...

  10. mysql数据库锁的机制-one

    锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 举例 :以买火车票为例,火车票可面向广大消费者 ...