购物车(jsp servlet)

这个博客展示了如何使用Java JSP和Servlet实现一个简单的购物车功能。通过`BookDao`接口及其实现类,实现了从数据库中获取书籍信息。`Cart`类用于存储购物车中的商品,`CartItem`类用于封装每本书的购买信息。`BusinessService`接口及其实现类处理购书、更新购物车、删除购物车商品等业务逻辑。`BuyServlet`, `DeleteBookServlet`, `ListBookServlet`, `UpdateCartServlet`分别处理购书请求、删除商品请求、显示所有书籍请求和更新购物车商品数量的请求。最后,`listbook.jsp`和`listcart.jsp`是用于展示书籍列表和购物车内容的JSP页面。" 78179292,7102960,Excel工作表快速汇总:SQL语句一键解决,"['Excel技巧', '数据处理', '办公软件']
摘要由CSDN通过智能技术生成

BookDao.java

package com.bhsi.dao;

import java.util.List;
import java.util.Map;

import com.hbsi.domain.Book;

public interface BookDao {
 
  
 public Book find(String id);
 
 public List<Book> getALL();
 
 
}

BookDaoImpl.java
package com.hbsi.dao.impl;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.bhsi.dao.BookDao;
import com.hbsi.domain.Book;
import com.hbsi.utils.DBManager;

public class BookDaoImpl implements BookDao{

 @Override
 public Book find(String id) {
  Connection conn = null;
  PreparedStatement st = null;
  ResultSet rs = null;

  try {
   conn = DBManager.getConnection();
   String sql = "select * from book where id=?";
   st = conn.prepareStatement(sql);

   st.setString(1, id);

   rs = st.executeQuery();
   if (rs.next()) {
    Book b = new Book();
    b.setId(rs.getString("id"));
    b.setName(rs.getString("name"));
    b.setPrice(rs.getDouble("price"));
    b.setAuthor(rs.getString("author"));
    b.setDescription(rs.getString("description"));
    
    return b;
   }
   return null;
  } catch (SQLException e) {
   throw new RuntimeException(e);
  } finally {
   DBManager.colseDb(conn, st, rs);
  }

 }

 
 @Override
 public List<Book> getALL() {
  Connection conn = null;
  PreparedStatement st = null;
  ResultSet rs = null;

  try {
   conn = DBManager.getConnection();
   String sql = "select * from book";
   st = conn.prepareStatement(sql);
   rs = st.executeQuery();
   List<Book> list = new ArrayList<Book>();
   while (rs.next()) {
    Book b = new Book();
    b.setId(rs.getString("id"));
    b.setName(rs.getString("name"));
    b.setPrice(rs.getFloat("price"));
    b.setAuthor(rs.getString("author"));
    b.setDescription(rs.getString("description"));

    list.add(b);
   }
   return list;
  } catch (Exception e) {
   throw new RuntimeException(e);
  } finally {
   DBManager.colseDb(conn, st, rs);
  }
 }

}


Book.java
package com.hbsi.domain;

import java.io.Serializable;

public class Book implements Serializable{
 
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 private String id;
 private String name;
 private double price;
 private String author;
 private String description;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 
 public double getPrice() {
  return price;
 }
 public void setPrice(double price) {
  this.price = price;
 }
 public String getAuthor() {
  return author;
 }
 public void setAuthor(String author) {
  this.author = author;
 }
 public String getDescription() {
  return description;
 }
 public void setDescription(String description) {
  this.description = description;
 }
 
 

}

 Cart.java
package com.hbsi.domain;

import java.util.LinkedHashMap;
import java.util.Map;

//购物车
public class Cart {
 
 //private Map<String,Book> map = new LinkedHashMap<String, Book>();
 //用户会买一本书多本,会出现重复的书,要使用购物项,避免重复书出现。
 private Map<String,CartItem> map = new LinkedHashMap<String, CartItem>();
 private double price;  //总计
 
 public void add(Book book){
  //首先判断要买的书是否已经在购物车里
  CartItem  item = map.get(book.getId());
  if(item!=null){
   item.setQuantity(item.getQuantity()+1);
  }else{
   //第一次买这本书
   item = new CartItem();
   item.setBook(book);
   item.setQuantity(1);
   map.put(book.getId(),item);
  }
  
 }
 
 public Map<String, CartItem> getMap() {

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值