cookie应用 显示上次浏览商品的实现过程

public class CookieDemo1 extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  
  //显示所有书名
  out.print("本网站的商品有:<br/>");
  BookDao bd = new BookDao();
  List<Book> list = bd.getAll();
  for(Book book:list){
   //System.out.println(book.getId());
   //out.print("<a href='/BookHistory/servlet/CookieDemo2'?id="+book.getId()+">"+book.getName()+"</a><br/>");
   out.print("<a href='/BookHistory/servlet/CookieDemo2?id="+book.getId()+"' target='_blank'>"+book.getName()+"</a><br/>");
  }
  
  
  
  
  //显示浏览过的书名   bookhistory=1,2,3
  out.print("你浏览过的商品:<br/>");
  Cookie[] cookies = request.getCookies();
  for(int i=0;cookies!=null && i<cookies.length;i++){
   if(cookies[i].getName().equals("bookhistory")){
    String[] ids = cookies[i].getValue().split(",");
    for(String id:ids){
     Book book = bd.getBook(id);
     out.print(book.getName()+"<br/>");
    }
   }
  }
  
  
  

 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request, response);
 }

}

 

 

 

 

public class CookieDemo2 extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  
  //显示书的详细信息,根据id获取
  String id = request.getParameter("id");
  System.out.println(id);
  BookDao bd = new BookDao();
  Book book = bd.getBook(id);
  System.out.println(book);
  out.print("书号:"+book.getId()+"<br/>");
  out.print("书名:"+book.getName()+"<br/>");
  out.print("作者:"+book.getAuthor()+"<br/>");
  out.print("描述:"+book.getDescript()+"<br/>");
  
  
  
  
  
  
  String cookieValue = buildCookValue(id,request);
  Cookie cookie = new Cookie("bookhistory",cookieValue);
  cookie.setMaxAge(30*24*3600);
  cookie.setPath("/BookHistory");
  response.addCookie(cookie);
  
  

 }
 
 public String buildCookValue(String id,HttpServletRequest request){
  String bookhistory=null;
  Cookie[] cookies = request.getCookies();
  for(int i=0;cookies!=null && i<cookies.length;i++){
   if(cookies[i].getName().equals("bookhistory")){
    bookhistory = cookies[i].getValue();
   }
  }
  if(bookhistory == null){
   return id;
  }
  LinkedList<String> list = new LinkedList(Arrays.asList(bookhistory.split(",")));
  
  if(list.contains(id)){
   list.remove(id);
   list.addFirst(id);
  }else{
   //bookhistory=2,3,5   1  1,2,3
   //bookhistory=2,3     1  1,2,3
   if(list.size()>=3){
    list.removeLast();
    list.addFirst(id);
   }else{
    list.addFirst(id);
   }
   
  }
  StringBuffer sb = new StringBuffer();
  for(String bid: list){
   sb.append(bid+",");
  }
  
  return  sb.deleteCharAt(sb.length()-1).toString();
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request, response);
 }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购物车案例: 基本设计思想: (1)使用session机制,保存用户状态(用户购买的商品)。 (2)为了方便对购买操作的处理(比如,购买商品、 删除已经购买的商品、查看已经购买的商品、计价等等), 设计一个Cart类,封装这些操作。Cart对象会放在Session对象里。 具体的设计: 表:t_computer create table t_computer( id bigint primary key auto_increment, name varchar(50), description varchar(100), pic varchar(255), price double(8,2)); 实体类: Computer dao: ComputerDAO Comuter findById(long id) List findAll() save(Computer computer); ComputerDAOJdbcImpl 测试dao: 购物车的设计: CartItem //商品条目 属性: int qty //购买产品的数量 Computer c //购买的产品是什么 方法: get/set方法 Cart //购物车 属性: List items //存放所有购买的商品 方法: boolean add(CartItem item) //boolean值如果是false,表示 已经购买过该商品。 void delete(long id) //删除某个商品。id是产品的ID号。 void modify(long id,int qty) //修改商品的数量 double sum() //计价 void clear() //清空商品 List list //列出所有商品 页面: cart_list.jsp: 功能:列出所有商品,用户点击链接实现购买。 实现:查询t_computer表(由ShoppingServlet来负责查询) cart.jsp 功能:列出所有已经购买的商品,并且可以修改数量、 删除某个商品、清空购物车、返回到cart_list.jsp。 实现:(ShoppingServlet调用以下方法) 列出所有已经购买的商品: cart.list() 修改数量:cart.modify() 删除:cart.delete() 清空:cart.clear() ShoppingServlet: (1)创建Session: request.getSession(); (2)创建Cart,并且将Cart放到session (3)调用Cart的方法,完成请求;也会调用 ComputerDAO完成数据库操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值