购物车用session怎么实现的

 我来答
鈾氶瓏鈾
2016-07-04 · 知道合伙人软件行家
鈾氶瓏鈾
知道合伙人软件行家
采纳数:718 获赞数:1337

向TA提问 私信TA
展开全部
 public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       response.setContentType("text/html;charset=utf-8");
       PrintWriter out = response.getWriter();
       // 获得session
       request.getSession();    // 创建了一个session
      
       // 获得所有商品
       Map<String, Book> all = DB.getAll();
      
       out.write("本站提供如下商品<br>");
       for(Entry<String,Book> e : all.entrySet()) {
           Book book = e.getValue();
           // 超链接要url重写
           // url重写做了两件事情,第一,获得session的id,第二,将id加到地址后面
           String url = "/javaweb07/servlet/BuyServlet?id="+book.getId();
           String newUrl = response.encodeURL(url);
           out.write(book.getName() + "<a href='"+newUrl+"' target='_blank'>购买</a><br>");
       }
    }
 
BuyServlet.java
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       // 获得id
       String id = request.getParameter("id");
      
       // 找出书
       Book book = DB.find(id);
      
       // 获得购物车
       HttpSession session = request.getSession();
       List cart = (List) session.getAttribute("cart");
       if(cart==null) {
           // 刚进超市,分配购物车
           cart = new ArrayList();
       }
      
       // 加入购物车
       cart.add(book);
      
       // 将购物车找个地方存起来,方便下次购买
       session.setAttribute("cart", cart);
      
       // 第一次创建session的时候需要发Cookie,将sessionid带给浏览器
      
       // 获得sessionid
       String sessionid = session.getId();
       // 发送cookie,Cookie的key是区分大小写
       Cookie cookie = new Cookie("JSESSIONID", sessionid);
       // 设置有效时间
       cookie.setMaxAge(60*60*5);
       response.addCookie(cookie);
      
       // 请求重定向到购物车页面
       String url = "/javaweb07/servlet/ListCartServlet";
       // url重写
       String newUrl = response.encodeRedirectURL(url);
      
       response.sendRedirect(newUrl);
    }
 
 ListCarServlet
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       response.setContentType("text/html;charset=utf-8");
       PrintWriter out = response.getWriter();
      
       // 获取购物车
       // getSession方法会拿着用户的jsessionid去内存找session 找不到才创建
       HttpSession session = request.getSession();
      
       List<Book> cart = (List<Book>) session.getAttribute("cart");
      
       if(cart==null) {
           out.write("对不起!您还没有购买商品!!!");
           return ;
       }
      
       //遍历购物车中的商品显示
       out.write("您购买了如下商品:<br>");
      
       for(Book book : cart) {
           out.write(book.getName() + "," + book.getPrice() + "<br>");
       }
       // 让session立即失效
       //session.invalidate(); 
       out.write("<input type='button' value='进入结算中心' />");
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红尘与君别恋
2016-07-04 · TA获得超过312个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:70.2万
展开全部
建议使用hibernate持久类,这样可以保存对象到集合中,而不是数值,通过struts2标签库,直接访问持久化类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式