화면 음악 c 구조 로 상품 구 매 실현(2)

9369 단어 mvc상품 구 매
지난 글 에서 mode 1 모델 을 사용 하여 상품 의 조 회 를 실현 하 였 으 며,이 글 은 전편 을 바탕 으로 뮤 직 비디오 구조 로 상품 의 구 매 를 실현 하 였 다.
실행 결과:

상대 와 상편  저희 가 카 트 가 많아 졌어 요.
우리 가 물품 을 구 매 할 때,카 트 에 필요 한 속성 은 구 매 한 상품 과 수량 이기 때문이다.   그래서 우 리 는 맵 의 키 로 구 매 한 상품 을 저장 합 니 다.
물론 총 가격 도 있 습 니 다.카 트 를 구입 하 는 방법 은 상품 을 추가 하 는 것 입 니 다.  상품 삭제  총가격 을 계산 하 다  그 중 총 가격 은 상품 을 추가 하고 삭제 할 때마다 다시 계산 해 야 한다.  카 트 상품 집합  카 트 를 초기 화 할 때 한 번 만 예화 하면 됩 니 다.

package entity; 
 
import java.util.HashMap; 
 
public class Cart { 
  //        
  private HashMap<Items,Integer> cart; 
  //    
  private double totalPrices; 
  public Cart() { 
    cart=new HashMap<Items, Integer>(); 
    totalPrices=0.0; 
  } 
  public HashMap<Items, Integer> getCart() { 
    return cart; 
  } 
  public void setCart(HashMap<Items, Integer> cart) { 
    this.cart = cart; 
  } 
  public double getTotalPrices() { 
    return totalPrices; 
  } 
  public void setTotalPrices(double totalPrices) { 
    this.totalPrices = totalPrices; 
  } 
  //         
  public boolean addToCart(Items item,int counts){ 
    //                   
    if(cart.containsKey(item)){ 
      cart.put(item, cart.get(item)+counts); 
    }else{ 
      cart.put(item, counts); 
    } 
    //       
    calTotalPrice(item.getPrice()*counts); 
    return true; 
  } 
  //          
  public boolean removeFromCart(Items item){ 
    if(cart!=null&&cart.containsKey(item)){ 
      calTotalPrice(-item.getPrice()*cart.get(item)); 
      cart.remove(item); 
    } 
    return true; 
  } 
  //      
  private void calTotalPrice(double price){ 
    totalPrices+=price; 
  } 
} 
CartServlet 의 doGett 방법 은 action 에 따라 상응하는 처 리 를 한다

if (request.getParameter("action") != null) { 
      action = request.getParameter("action"); 
 
      if ("add".equals(action)) { //      
        if (addGoodsToCart(request, response)) { 
          request.getRequestDispatcher("../success.jsp").forward( 
              request, response); 
        } else { 
          request.getRequestDispatcher("../failure.jsp").forward( 
              request, response); 
        } 
 
      } else if ("show".equals(action)) {//       
        request.getRequestDispatcher("../cart.jsp").forward(request, 
            response); 
      } else if ("delete".equals(action)) {//      
        deleteGoodFromCart(request, response); 
        request.getRequestDispatcher("../cart.jsp").forward(request, 
            response); 
      } 
    } 
상품 인터페이스 에서 우 리 는 카 트 에 넣 을 때 현재 상품 의 번 호 를 카 트 에 전달 하 는 servlet 류 CartServlet 을 클릭 하여 현재 물품 을 처리 하고 현재 물품 을 카 트 에 넣 습 니 다.
카 트 에 넣 기 전에 카 트 를 처음 만 드 는 건 지 아 닌 지 를 먼저 판단 하 겠 습 니 다.  (카 트 는 하나 밖 에 없 을 거 야.  여러 개가 있 을 수 없다)카 트 를 처음 만 들 었 다 면
현재 카 트 를 session 에 넣 고 ItemsDao 대상 을 통 해 getItemById(id)방법 으로 상품 대상 을 획득 합 니 다.  。그리고 해당 상품 의 대상 과 상품 의 수량 을 카 트 에 넣 습 니 다.

//         
  private boolean addGoodsToCart(HttpServletRequest request, 
      HttpServletResponse response) { 
    String id=request.getParameter("id"); 
    String counts=request.getParameter("num"); 
    Items item=dao.getItemById(Integer.parseInt(id)); 
    //              
    if(request.getSession().getAttribute("cart")==null){ 
      Cart cart=new Cart(); 
      request.getSession().setAttribute("cart", cart); 
      request.getSession().setAttribute("dao", dao); 
    } 
    Cart cart=(Cart) request.getSession().getAttribute("cart"); 
    //          
    if(cart.addToCart(item, Integer.parseInt(counts))){ 
      return true; 
    }else{ 
      return false; 
    } 
  } 
하면,만약,만약...   CartServlet 카 트 페이지 로 다시 설정

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> 
<%@ page import="entity.Cart" %> 
<%@ page import="entity.Items" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
  <base href="<%=basePath%>"> 
  <title>My JSP 'cart.jsp' starting page</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"> 
  --> 
  <link type="text/css" rel="stylesheet" href="css/style1.css" /> 
  <script language="javascript"> 
    function delcfm() { 
      if (!confirm("     ?")) { 
        window.event.returnValue = false; 
      } 
    } 
  </script> 
 </head> 
  
 <body> 
  <h1>     </h1> 
  <a href="goods.jsp">  </a> >> <a href="goods.jsp">    </a> 
  <hr>  
  <div id="shopping"> 
  <form action="" method="">    
      <table> 
        <tr> 
          <th>    </th> 
          <th>    </th> 
          <th>    </th> 
          <th>    </th> 
          <th>  </th> 
        </tr> 
        <%  
          //    session          
          if(request.getSession().getAttribute("cart")!=null) 
          { 
        %> 
        <!--       --> 
           <%  
             Cart cart = (Cart)request.getSession().getAttribute("cart"); 
             HashMap<Items,Integer> goods = cart.getCart(); 
             Set<Items> items = goods.keySet(); 
             Iterator<Items> it = items.iterator(); 
              
             while(it.hasNext()) 
             { 
              Items i = it.next(); 
           %>  
        <tr name="products" id="product_id_1"> 
          <td class="thumb"><img src="images/<%=i.getPicture()%>" /><a href=""><%=i.getName()%></a></td> 
          <td class="number"><%=i.getPrice() %></td> 
          <td class="price" id="price_id_1"> 
            <span><%=i.getPrice()*goods.get(i) %></span> 
            <input type="hidden" value="" /> 
          </td> 
          <td class="number"> 
            <%=goods.get(i)%>          
          </td>             
          <td class="delete"> 
           <a href="servlet/CartServlet?action=delete&id=<%=i.getId()%>" onclick="delcfm();">  </a>                    
          </td> 
        </tr> 
           <%  
             } 
           %> 
        <!--     --> 
         
      </table> 
       <div class="total"><span id="total">  :<%=cart.getTotalPrices() %>¥</span></div> 
       <%  
        } 
       %> 
      <div class="button"><input type="submit" value="" /></div> 
    </form> 
  </div> 
 </body> 
</html> 
상품 삭제 CartServlet 클래스 호출 을 클릭 하면 상품 삭제 방법

//          
  private boolean deleteGoodFromCart(HttpServletRequest request, 
      HttpServletResponse response) { 
    // session         
    Cart cart = (Cart) request.getSession().getAttribute("cart"); 
    if (cart != null) { 
      int id = Integer.parseInt(request.getParameter("id")); 
      if (cart.removeFromCart(dao.getItemById(id))) { 
        return true; 
      } 
    } 
    return false; 
 
  } 
논리 코드 는 주로 위 와 같다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기