session自动更新 购物车条目 原因:本质是,对 内存和磁盘的区别,以及session是个内存中的map,不清楚

来源:互联网 发布:上古世纪捏脸数据大全 编辑:程序博客网 时间:2024/05/01 23:32
//===ok(teacher)  public String delItem(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //CartServlet?method=addCart&pid=${pro.pid} String pid = request.getParameter("pid");Cart cart = (Cart) request.getSession().getAttribute("cart");cart.delByPid(pid);/*//==######=不用更新session,购物车条目也能更新原因:【内存中应用对象之间的依赖,根据地址值(变量名--所谓引用)依赖】。===【session里存的是 引用(地址值),remove之后,session存的地址(cart变量)是不变的,访问session再去访问存的地址对应的对象值时,值就已经变了。===依赖的应用类型改变,自动改变】===【存储关系,实际是依赖关系。】===那模product.setCategory(category)为什么存的是对象?==因为存到磁盘了。持久化了。【内存和磁盘有本质区别:①内存:栈内存、堆内存===一般程序运行结束会释放内存:(session的生命周期未到期,也是在【磁盘】中持久化了一个session"备份"---查看监听器:session的钝化和激活));②磁盘:涉及到数据持久化(物理存在)。product.setCategory(category)存的是对象,说的是存入数据库持久化了。=====这里。假如购物车存在数据库而不是session,那么,每次删除一个购物车条目时,就必须更新session:【session.setAttribute("cart",cart)】,才能保证页面购物车条目显示更新。】==######=Session本身是一个Map对象,【session看做是运行中内存中临时创建的Map对象,Map引用到其他《内存中的》引用对象(这里是cart),存的是cart的堆内存地址;cart改变,下次session 根据cart地址 访问对应的】*///request.getSession().setAttribute("cart", cart);//==######==【没有这句话,session也能自动更新购物车条目。原因如上】return "/cart.jsp";}

阅读全文
0 0