这篇随笔简单的讲一下在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"); //解决乱码问题