자바 온라인 도서 쇼핑 몰(4)카 트 모듈 1

본 고 는 실례 를 들 어 여러분 께 카 트 모듈 의 구체 적 인 코드 를 공유 하 였 으 며,여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
session 도 쿠키 도 아 닌 시 계 를 사용 합 니 다.

>쇼핑 항목 추가
>쇼핑 항목 개수 수정
>항목 삭제
>항목 일괄 삭제
>내 카 트,즉 사용자 에 따라 항목 조회
>선택 한 항목 조회 
1.데이터 시트
insert  into `t_cartitem`(`cartItemId`,`quantity`,`bid`,`uid`,`orderBy`) values ('B8939FC55131469CAB11E3924D40185B',1,'CE01F15D435A4C51B0AD8202A318DCA7','xxx',11); 
2.CartItem

public class CartItem {
 private String cartItemId;//   
 private int quantity;//   
 private Book book;//        
 private User user;//     
 
 //       
 public double getSubtotal() {
 /*
 *   BigDecimal     
 *       String     
 */
 BigDecimal b1 = new BigDecimal(book.getCurrPrice() + "");
 BigDecimal b2 = new BigDecimal(quantity + "");
 BigDecimal b3 = b1.multiply(b2);
 return b3.doubleValue();
 }

 public String getCartItemId() {
 return cartItemId;
 }

 public void setCartItemId(String cartItemId) {
 this.cartItemId = cartItemId;
 }

 public int getQuantity() {
 return quantity;
 }

 public void setQuantity(int quantity) {
 this.quantity = quantity;
 }

 public Book getBook() {
 return book;
 }

 public void setBook(Book book) {
 this.book = book;
 }

 public User getUser() {
 return user;
 }

 public void setUser(User user) {
 this.user = user;
 }
} 

팁:자바 에서 반올림 BigDecimal 에 오차 가 없 음

//       
public double getSubtotal() {
 /*
 *   BigDecimal     
 *       String     
 */
 BigDecimal b1 = new BigDecimal(book.getCurrPrice() + "");
 BigDecimal b2 = new BigDecimal(quantity + "");
 BigDecimal b3 = b1.multiply(b2);
 return b3.doubleValue();
}
 

3.고객 을 통 해 카 트 항목 조회
나의 카 트 항목 중 각 항목 은 도서 의 그림 제목 단 가 를 표시 해 야 하 는데,이것 은 여러 표 의 조회 가 필요 하 다 는 것 을 설명 한다.

public List<CartItem> findByUser(String uid) throws SQLException {
 String sql = "select * from t_cartitem c, t_book b where c.bid=b.bid and uid=? order by c.orderBy";
 List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler(), uid);
 return toCartItemList(mapList);
}
4.카 트 추가
jsp

<div class="divForm">
 <form id="form1" action="<c:url value='/CartItemServlet'/>" method="post">
 <input type="hidden" name="method" value="add"/>
 <input type="hidden" name="bid" value="${book.bid }"/>
    :<input id="cnt" style="width: 40px;text-align: center;" type="text" name="quantity" value="1"/> 
 </form>
 <a id="btn" href="javascript:$('#form1').submit();"></a>
</div>
CartItemServlet

public String add(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException {
 /*
 * 1.        CartItem(bid, quantity)
 */
 Map map = req.getParameterMap();
 CartItem cartItem = CommonUtils.toBean(map, CartItem.class);
 Book book = CommonUtils.toBean(map, Book.class);
 User user = (User)req.getSession().getAttribute("sessionUser");
 cartItem.setBook(book);
 cartItem.setUser(user);
 cartItemService.add(cartItem);
 return myCart(req, resp);
}
CartItemService

public void add(CartItem cartItem) {
 try {
 /*
 * 1.   uid bid               
 */
 CartItem _cartItem = cartItemDao.findByUidAndBid(
 cartItem.getUser().getUid(),
 cartItem.getBook().getBid());
 if(_cartItem == null) {//          ,      
 cartItem.setCartItemId(CommonUtils.uuid());
 cartItemDao.addCartItem(cartItem);
 } else {//         ,    
 //               ,       
 int quantity = cartItem.getQuantity() + _cartItem.getQuantity();
 //           
 cartItemDao.updateQuantity(_cartItem.getCartItemId(), quantity);
 }
 } catch(Exception e) {
 throw new RuntimeException(e);
 }
} 
CartItemDao

public void addCartItem(CartItem cartItem) throws SQLException {
 String sql = "insert into t_cartitem(cartItemId, quantity, bid, uid)" +
 " values(?,?,?,?)";
 Object[] params = {cartItem.getCartItemId(), cartItem.getQuantity(),
 cartItem.getBook().getBid(), cartItem.getUser().getUid()};
 qr.update(sql, params);
}
 5.카 트 모듈 페이지 javascript---검색
총계
전체 선택 에 click 이벤트 추가
모든 항목 의 체크 상자 에 click 이벤트 추가
마이너스 에 click 이벤트 추가
플러스 에 click 이벤트 추가
일괄 삭제
 list.jsp 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>cartlist.jsp</title>
  
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">  
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css">
  -->
  <script src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script>
  <script src="<c:url value='/js/round.js'/>"></script>
  
  <link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/cart/list.css'/>">
<script type="text/javascript">
$(function() {
  showTotal();//    
  
  /*
       click  
  */
  $("#selectAll").click(function() {
    /*
    1.        
    */
    var bool = $("#selectAll").attr("checked");
    /*
    2.                  
    */
    setItemCheckBox(bool);
    /*
    3.           
    */
    setJieSuan(bool);
    /*
    4.       
    */
    showTotal();
  });
  
  /*
             click  
  */
  $(":checkbox[name=checkboxBtn]").click(function() {
    var all = $(":checkbox[name=checkboxBtn]").length;//       
    var select = $(":checkbox[name=checkboxBtn][checked=true]").length;//            

    if(all == select) {//     
      $("#selectAll").attr("checked", true);//       
      setJieSuan(true);//       
    } else if(select == 0) {//      
      $("#selectAll").attr("checked", false);//    
      setJieSuan(false);//     
    } else {
      $("#selectAll").attr("checked", false);//    
      setJieSuan(true);//             
    }
    showTotal();//      
  });
  
  /*
       click  
  */
  $(".jian").click(function() {
    //   cartItemId
    var id = $(this).attr("id").substring(0, 32);
    //          
    var quantity = $("#" + id + "Quantity").val();
    //          1,   1,         ,      。
    if(quantity == 1) {
      if(confirm("          ?")) {
        location = "/goods/CartItemServlet?method=batchDelete&cartItemIds=" + id;
      }
    } else {
      sendUpdateQuantity(id, quantity-1);
    }
  });
  
  //      click  
  $(".jia").click(function() {
    //   cartItemId
    var id = $(this).attr("id").substring(0, 32);
    //          
    var quantity = $("#" + id + "Quantity").val();
    sendUpdateQuantity(id, Number(quantity)+1);
  });
});

//      ,    。
function sendUpdateQuantity(id, quantity) {
  $.ajax({
    async:false,
    cache:false,
    url:"/goods/CartItemServlet",
    data:{method:"updateQuantity",cartItemId:id,quantity:quantity},
    type:"POST",
    dataType:"json",
    success:function(result) {
      //1.     
      $("#" + id + "Quantity").val(result.quantity);
      //2.     
      $("#" + id + "Subtotal").text(result.subtotal);
      //3.       
      showTotal();
    }
  });
}

/*
 *     
 */
function showTotal() {
  var total = 0;
  /*
  1.               !     
  */
  $(":checkbox[name=checkboxBtn][checked=true]").each(function() {
    //2.        ,        
    var id = $(this).val();
    //3.            ,     
    var text = $("#" + id + "Subtotal").text();
    //4.     
    total += Number(text);
  });
  // 5.            
  $("#total").text(round(total, 2));//round()       total  2 
}

/*
 *              
 */
function setItemCheckBox(bool) {
  $(":checkbox[name=checkboxBtn]").attr("checked", bool);
}

/*
 *         
 */
function setJieSuan(bool) {
  if(bool) {
    $("#jiesuan").removeClass("kill").addClass("jiesuan");
    $("#jiesuan").unbind("click");//         click  
  } else {
    $("#jiesuan").removeClass("jiesuan").addClass("kill");
    $("#jiesuan").click(function() {return false;});
  }
  
}

/*
 *     
 */
function batchDelete() {
  // 1.              
  // 2.      ,                  
  // 3.   location CartItemServlet,  method=batchDelete,  cartItemIds=   toString()
  var cartItemIdArray = new Array();
  $(":checkbox[name=checkboxBtn][checked=true]").each(function() {
    cartItemIdArray.push($(this).val());//            
  });
  location = "/goods/CartItemServlet?method=batchDelete&cartItemIds=" + cartItemIdArray;
}

/*
 *   
 */
function jiesuan() {
  // 1.            id,     
  var cartItemIdArray = new Array();
  $(":checkbox[name=checkboxBtn][checked=true]").each(function() {
    cartItemIdArray.push($(this).val());//            
  });  
  // 2.      toString(),       cartItemIds  hidden
  $("#cartItemIds").val(cartItemIdArray.toString());
  //      ,       
  $("#hiddenTotal").val($("#total").text());
  // 3.       
  $("#jieSuanForm").submit();
}
</script>
 </head>
 <body>

<c:choose>
  <c:when test="${empty cartItemList }">
  <table width="95%" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td align="right">
        <img align="top" src="<c:url value='/images/icon_empty.png'/>"/>
      </td>
      <td>
        <span class="spanEmpty">            </span>
      </td>
    </tr>
  </table> 
  </c:when>
  <c:otherwise>
<table width="95%" align="center" cellpadding="0" cellspacing="0">
  <tr align="center" bgcolor="#efeae5">
    <td align="left" width="50px">
      <input type="checkbox" id="selectAll" checked="checked"/><label for="selectAll">  </label>
    </td>
    <td colspan="2">    </td>
    <td>  </td>
    <td>  </td>
    <td>  </td>
    <td>  </td>
  </tr>



<c:forEach items="${cartItemList }" var="cartItem">
  <tr align="center">
    <td align="left">
      <input value="${cartItem.cartItemId }" type="checkbox" name="checkboxBtn" checked="checked"/>
    </td>
    <td align="left" width="70px">
      <a class="linkImage" href="<c:url value='/jsps/book/desc.jsp'/>"><img border="0" width="54" align="top" src="<c:url value='/${cartItem.book.image_b }'/>"/></a>
    </td>
    <td align="left" width="400px">
      <a href="<c:url value='/jsps/book/desc.jsp'/>"><span>${cartItem.book.bname }</span></a>
    </td>
    <td><span>&yen;<span class="currPrice">${cartItem.book.currPrice }</span></span></td>
    <td>
      <a class="jian" id="${cartItem.cartItemId }Jian"></a><input class="quantity" readonly="readonly" id="${cartItem.cartItemId }Quantity" type="text" value="${cartItem.quantity }"/><a class="jia" id="${cartItem.cartItemId }Jia"></a>
    </td>
    <td width="100px">
      <span class="price_n">&yen;<span class="subTotal" id="${cartItem.cartItemId }Subtotal">${cartItem.subtotal }</span></span>
    </td>
    <td>
      <a href="<c:url value='/CartItemServlet?method=batchDelete&cartItemIds=${cartItem.cartItemId }'/>">  </a>
    </td>
  </tr>
</c:forEach>
  
  <tr>
    <td colspan="4" class="tdBatchDelete">
      <a href="javascript:batchDelete();">    </a>
    </td>
    <td colspan="3" align="right" class="tdTotal">
      <span>  :</span><span class="price_t">&yen;<span id="total"></span></span>
    </td>
  </tr>
  <tr>
    <td colspan="7" align="right">
      <a href="javascript:jiesuan();" id="jiesuan" class="jiesuan"></a>
    </td>
  </tr>
</table>
  <form id="jieSuanForm" action="<c:url value='/CartItemServlet'/>" method="post">
    <input type="hidden" name="cartItemIds" id="cartItemIds"/>
    <input type="hidden" name="total" id="hiddenTotal"/>
    <input type="hidden" name="method" value="loadCartItems"/>
  </form>

  </c:otherwise>
</c:choose>
 </body>
</html>

팁:js 중 반올림 round.js

// 5.            
$("#total").text(round(total, 2));//round()       total  2  


6.일괄 삭제 기능-삭제
jsp

function batchDelete() {
 // 1.              
 // 2.      ,                  
 // 3.   location CartItemServlet,  method=batchDelete,  cartItemIds=   toString()
 var cartItemIdArray = new Array();
 $(":checkbox[name=checkboxBtn][checked=true]").each(function() {
  cartItemIdArray.push($(this).val());//            
 });
 location = "/goods/CartItemServlet?method=batchDelete&cartItemIds=" + cartItemIdArray;
}
하나 삭제

if(quantity == 1) {
 if(confirm("          ?")) {
  location = "/goods/CartItemServlet?method=batchDelete&cartItemIds=" + id;
 }
} else {
 

7.수량 수정
jsp

//      ,    。
function sendUpdateQuantity(id, quantity) {
 $.ajax({
 async:false,
 cache:false,
 url:"/goods/CartItemServlet",
 data:{method:"updateQuantity",cartItemId:id,quantity:quantity},
 type:"POST",
 dataType:"json",
 success:function(result) {
 //1.     
 $("#" + id + "Quantity").val(result.quantity);
 //2.     
 $("#" + id + "Subtotal").text(result.subtotal);
 //3.       
 showTotal();
 }
 });
}
servlet

public String updateQuantity(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException {
 String cartItemId = req.getParameter("cartItemId");
 int quantity = Integer.parseInt(req.getParameter("quantity"));
 CartItem cartItem = cartItemService.updateQuantity(cartItemId, quantity);
 
 //         json  
 StringBuilder sb = new StringBuilder("{");
 sb.append("\"quantity\"").append(":").append(cartItem.getQuantity());
 sb.append(",");
 sb.append("\"subtotal\"").append(":").append(cartItem.getSubtotal());
 sb.append("}");
 
 resp.getWriter().print(sb);
 return null;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기