Cart 클래스에 몇개의 메소드를 추가했다.
cartAdd.jsp
<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 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>