본문 바로가기

JSP/Shopping Cart 03

Shopping Cart 03

장바구니에 상품을 저장하는 기능과 상품저장 후에 장바구니 내용 보기 페이지로 이동이되는 기능을 추가한다.
Cart 클래스에 몇개의 메소드를 추가했다.

cartAdd.jsp
<%@ page pageEncoding="EUC-KR" %>
<jsp:useBean id="cart" class="shopping.Cart" scope="session"/>
<%
 String item = request.getParameter("item");
 if(item.equals("notebook")){%>
  <jsp:useBean id="notebook" class="shopping.Notebook">
   <jsp:setProperty name="notebook" property="*"/>
  </jsp:useBean>
  <%cart.add(notebook);%>
<% }else if(item.equals("mp3")){%>
  <jsp:useBean id="mp3" class="shopping.MP3">
   <jsp:setProperty name="mp3" property="*"/>
  </jsp:useBean>
  <%cart.add(mp3);%>
<% }else if(item.equals("navigation")){%>
  <jsp:useBean id="navigation" class="shopping.Navigation">
   <jsp:setProperty name="navigation" property="*"/>
  </jsp:useBean>
  <%cart.add(navigation);%>
<% }
%>
<%-- 이곳에서 포워드를 하면 목적지 페이지가 화면에 출력되었을 경우,
  새로고침 버튼을 누를 때마다 request가 전달되므로 중복해서 장바구니에
  상품이 저장되는 오류를 초래한다. 그러므로 request를 전달하지 않고 새로
  고침기능이 실행되는 response.sendRedirect()를 사용한 것이다.-- %>
  <%--jsp:forward page="cartView.jsp"/--%>
<%response.sendRedirect("cartView.jsp"); %>


Cart.java

package shopping;
import java.util.*;

public class Cart {
 
 Vector<Goods> v = new Vector<Goods>();
 
 public Cart() {}
 
 public void add(Goods g){
 boolean found = false;
 for(int i=0;i<v.size();i++){
  if(v.get(i).getName().equals(g.getName())){
   v.get(i).setQty(v.get(i).getQty()+g.getQty());
   found=true;
   System.out.println("수량증가 성공");
   return;
  }
 }
 if(!found) v.add(g);
 System.out.println("상품 새로 추가");
 }
 
 public void deleteAll(){
  v.removeAllElements();
 }
 
 public void delete(String name, int qty){
  for(int i=0;i<v.size();i++){
   if(v.get(i).getName().equals(name)){
    v.get(i).setQty(v.get(i).getQty()-qty);
   }
  }
 }
 
 public int getTotalPrice(){
  int total=0;
  for(int i=0;i<v.size();i++){
   total += v.get(i).getPrice()*v.get(i).getQty();
  }
  return total;
 }
 
 public Vector<Goods> getGoods(){
  return v;
 }
}

cartView.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%@ page import="java.util.*, shopping.*" %>
<jsp:useBean id="cart" class="shopping.Cart" scope="session"/>
<html>
<head>
<title>장바구니 보기</title>
</head>
<body><p><center>
장바구니 내용 보기<hr width=60%>
<table border=0><tr><td bgcolor="orange">
<table border=1 cellspacing=0 cellpadding=5 bgcolor="white">
<%
 Vector<Goods> v = cart.getGoods();
 for(int i=0;i<v.size();i++){ %>
  <tr><td align=right>상품명</td><td align=left><%=v.get(i).getName()%></td></tr>
  <tr><td align=right>제조사</td><td align=left><%=v.get(i).getCompany()%></td></tr>
  <tr><td align=right>단가</td><td align=left><%=v.get(i).getPrice()%></td></tr>
  <tr><td align=right>수량</td><td align=left><%=v.get(i).getQty()%></td></tr>
  <tr><td align=right>단가x수량</td><td align=left><%=v.get(i).getSumPrice()%></td></tr>
  <tr><td align=right>총액</td><td align=left><%=cart.getTotalPrice()%>원</td></tr>
<%}
%>
</table></td></tr></table></center>
</body>
</html>