[图-1]整体结构图

package cn.itcast;import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class ListBookServlet*/
public class ListBookServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置中文编码。response.setContentType ( "text/html;charset=utf-8");//提示PrintWriter out = response.getWriter();Collection<Book> books = BookDB.getAll();out.write("本站提供的图书有:<br />");//把数目列出来for (Book book : books){String url = "/chapter5/PurchaseServlet?id=" + book. getId ();System.out.println(url);//地址是/chapter5/PurchaseServlet?id=1out.write (book.getName ()+ "<a href='"+ url+"'>点击购买</a><br />");}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
package cn.itcast;import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;/*** Servlet implementation class CartServlet*/
public class CartServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public CartServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();List<Book> cart=null;boolean purFlag=true;HttpSession session=request.getSession(false);if(session==null){purFlag=false;}else{cart=(List) session.getAttribute("cart");if(cart==null){purFlag=false;}}//页面展示if(!purFlag){out.write("对不起");}else{out.write("您购买的书有");double price=0;for(Book book:cart) {out.write(book.getName());}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
package cn.itcast;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;/*** Servlet implementation class PurchaseServlet*/
public class PurchaseServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse*      response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置一个ID接受量String id=request.getParameter("id");//id没有,就到数目列表页面if(id==null){String url="/chapter5/ListBookServlet";response.sendRedirect(url);return ;}Book book =BookDB.getBook(id);//创建或者获得session对象HttpSession session =request.getSession();//从session中获得购物车List<Book> cart=(List) session.getAttribute("cart");//创建购物车if(cart==null){//首次购买,创建一个购物车cart=new ArrayList<Book>();//将购物车存入session对象session.setAttribute("cart", cart);}//将商品放入购物车cart.add(book);//创建cookie存放session的标识符Cookie cookie =new Cookie("jsess",session.getId());System.out.println(session.getId());cookie.setMaxAge(60*30);cookie.setPath("/chapter5");response.addCookie(cookie);//重定向到购物车界面String url="/chapter5/CartServlet";response.sendRedirect(url);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

Session创建的时候会返回一个存放此session的id的cookie给浏览器保存在缓存中。
session id会由服务器端写入到cookie中,后期访问服务器端会以此id为标识。cookie失效时间可以服务器端自己设置。

案例中又手动创建了一个Cookie所以又两个Cookie

实现购物车的Session相关推荐

  1. 购物车(session版)

    目录: 一:详解购物车 1.1:购物车页面数据绑定 1.2:购物车功能(添加,删除,结算) 二:项目美化小知识 一:详解购物车 注:session版购物车它是在eclipse项目中利用Java Res ...

  2. php购物车(session)

    为什么80%的码农都做不了架构师?>>>    购物车的简单功能: @session_start();     class cut{         function insert( ...

  3. php购物车内物品删除,求助 购物车 用session删除 列表的一条

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 执行代码: include("data.php"); include("fuc.php"); session_st ...

  4. 购物车的实现(jsp的session+Java的Map的结合)

    1:电商如此发达的现在,作为一个web开发程序猿,如果不会写购物车,真是有点不好意思找工作.所以抓紧练习啊,从上篇博客中抽离出如何实现购物车的功能. 2:首先需要理解购物车实现的一些基本步骤. 2.1 ...

  5. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session chsakell分享了前端使用AngularJS,后端使用ASP.NE ...

  6. Redis数据结构Hash应用场景-存储商品、购物车、淘宝短链接、分布式Session、用户注册、发微博功能

    Hash应用场景 Hash Hash应用场景 redis存储java对象常用String,那为什么还要用hash来存储? SpringBoot+redis+hash存储商品数据 短链接 场景1:淘宝短 ...

  7. Servlet session: 用session实现简单 购物车

    目录 实现步骤 导航栏 Book BookDB listBookServlet purcharseServlet cartServlet web.xml 实现步骤 1. 创建 Book 封装图书信息 ...

  8. 【SSH网上商城项目实战17】购物车基本功能的实现

    上一节我们将商品的详细页面做完了,并使用了hibernate的二级缓存加载详细页面来提高系统的性能.这节我们开始做购物车部分. 1. 添加新的表 首先我们向数据库中添加几张表:用户表.订单状态表.订单 ...

  9. Asp.Net Session学习总结

    ASP.NET 中的 Session 怎么正确使用 https://www.cnblogs.com/ideacore/p/6423281.html Session对象用于存储从一个用户开始访问某个特定 ...

最新文章

  1. iOS SDK:iOS调试技巧
  2. profiles 配置详解
  3. 用Python和OpenCV创建一个图片搜索引擎的完整指南
  4. 计划策略-50-没有最终装配的计划
  5. unity发布android报错,Unity移动端入门 - Android那些事 /AAR包发布错误
  6. java 虚基类_重拾C++之虚函数和虚基类以及抽象类
  7. url 解析一个url里面的参数,获取地址栏参数信息
  8. rhel5下的DNS服务器架设
  9. android开发,加法,上课写的demo
  10. CCCC-GPLT L1-040. 最佳情侣身高差 团体程序设计天梯赛
  11. HDMI和DVI的HDCP握手问题分析及其解决方案精粹
  12. Bug(七)—— error LNK2019:无法解析的外部符号
  13. php算法不大于n的质数,php求不大于n的质数
  14. PAT A1053 Path of Equal Weight [树的DFS遍历]
  15. Excel数据分析高级技巧①——动态图表制作(offset,vlookup,控件…)
  16. linux deepin 命令行,深度Deepin操作系统中常用命令、系统命令、通用命令
  17. kafka:sync、async以及oneway 几种发送消息模式
  18. win10进不了BIOS界面
  19. Preparing: insert into user(uuid,username,gender,age,phone,address) values(?,?,?,?,?,?,?)
  20. MAC设置L2TP连接公司内部网络

热门文章

  1. Vue中使用节流Lodash throttle
  2. 物联网搜集大量数据协助制定业务策略 成为银行业竞争利器
  3. 微信小程序scroll-viwe遇到的问题
  4. java selenium (十三) 智能等待页面加载完成
  5. 手机浏览器页面知识收集(转)
  6. huffman编码——原理与实现
  7. Entity Framework 6新特性:全局性地自定义Code First约定
  8. Unity -- .NET下的原生Ioc框架
  9. 批量创建Linux用户账号
  10. 成长的勇气:一位IT人的辞职