java语言:修改session中的hashMap值,为什么不需要更新session

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletE... public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);
RequestDispatcher dispatcher;
// 如果session不存在,转向 /ch04/books.jsp
if (session == null) {
dispatcher = request.getRequestDispatcher("/ch04/books.jsp");
dispatcher.forward(request, response);
}
// 取出购物车和添加的书籍
Map cart = (Map) session.getAttribute("cart");
BookBean book = (BookBean) session.getAttribute("bookToAdd");
// 如果购物车不存在,创建购物车
if (cart == null) {
cart = new HashMap();
// 将购物车存入session之中
session.setAttribute("cart", cart);
}
// 判断书籍是否在购物车中
CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN());
// 如果书籍在购物车中,更新其数量.
// 否则,创建一个条目到Map中.
if (cartItem != null)
cartItem.setQuantity(cartItem.getQuantity() + 1);
else
cart.put(book.getISBN(), new CartItemBean(book, 1));
// 转向viewCart.jsp显示购物车
dispatcher = request.getRequestDispatcher("/ch04/viewCart.jsp");
dispatcher.forward(request, response);
}

上面的购物车使用hashMap,但是cart.put(book.getISBN(), new CartItemBean(book, 1)); 在hashMap里面又放了一条数据,却没有在session中更新hashMap(我觉得应该有一句:session.setAttribute("cart", cart); ,这里却没有),而session中的cart在输出的时候确实修改过的,为什么,请高人给解释一下
展开
 我来答
zhangligai1988
2011-03-13 · TA获得超过280个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:71.7万
展开全部
明白楼主的意思、在我刚开始学haspmap实现购物车的时候也有这个疑惑、其实这个很简单、就是一个应用数据类型而已。简单来说吧、当我们创建购物车时、内存当初就会开辟一块空间来存放数据、当我们把购物车放入session中后、有一个理解误区、那就是购物车并不是放入了session、还是把购物车的引用地址放入了session、以方便我们通过session快速的找到购物车的hashmap、当我们操作购物车时、是通过session里的引用地址找到了hashmap对象、然后操作它、但是这个对象没有变、session对他的引用地址也没有变、所以不需要再重新放入session。
wlingfeng
2011-03-13 · TA获得超过119个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:130万
展开全部
session当中保存有hashMap的引用,你获得hashMap并往里添加数据,session当中对hashMap的引用并没有改变。所以不需要再次将hashMap加入session
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逃跑的玻璃球子7730
2011-03-14 · TA获得超过129个赞
知道答主
回答量:240
采纳率:0%
帮助的人:74.2万
展开全部
session获取map,直接对其引用地址进行操作!就好比如你遍历一个arrayList里的一个对象,并修改对象里的值, 其arrayList里存的对象的值就直接改变!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式