[JSP] 장바구니

Whatever·2022년 1월 19일
0

JSP

목록 보기
21/30

장바구니에 물건 넣기


확인 클릭 시 장바구니에 물품이 담긴다.

장바구니 클릭 시 아까 담았던 물품 리스트를 확인할 수 있음.

addCart.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="dto.Product"%>
<%@page import="ch04.com.dao.ProductRepository"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	String id = request.getParameter("id");
	//id가 없거나 값이 없을 때
	if(id==null || id.trim().equals("")){
		response.sendRedirect("products.jsp");
		return;
	}
	
	//상품저장소 객체 생성
	ProductRepository dao = ProductRepository.getInstance();
	
	//상품 아이디에 해당하는 정보를 얻어와보자
	Product product = dao.getProductById(id);
	//id의 값이 P9999
	if(product == null){
		response.sendRedirect("/exceptionNoProductId.jsp");
	}
	
	//모든 상품을 가져와보자
	List<Product> goodsList = dao.getAllProducts();
	Product goods = new Product();
	for(int i = 0; i < goodsList.size(); i++){
		//요청 파라미터 아이디의 상품이 존재하는지 검사
		goods = goodsList.get(i);
		//A.equals(id)
		if(goods.getProductId().equals(id)){
			//for문에서 벗어나라
			break;
		}
	}
	
	//*요청 파라미터 아이디의 상품을 담은 장바구니를 초기화
	//세션:cartlist를 얻어와 ArrayList 객체에 저장
	ArrayList<Product> list = (ArrayList<Product>)session.getAttribute("cartlist");
	out.print("list의 크기 : " + list);
	//만약 cartlist라는 세션 정보가 없다면 ArrayList객체를 생성하고 cartlist세션 생성
	if(list == null){
		list = new ArrayList<Product>();
		session.setAttribute("cartlist", list);
	}
	//list : 장바구니에 담긴 상품 목록
	int cnt = 0;
	Product goosQnt = new Product();
	for(int i =0;i<list.size();i++){
		goosQnt = list.get(i);
		//요청 파라미터 아이디 addCart.jsp?id=P1234의 상품이
		//장바구니에 담긴 목록이 있다면
		//해당 상품의 수량을 1 증가
		if(goosQnt.getProductId().equals(id)){
			int orderQuantity = goosQnt.getQuantity() + 1;
			goosQnt.setQuantity(orderQuantity);
		}
	}
	//요청 파라미터 아이디addCart.jsp?id=P1234의 상품이
	//장바구니에 담긴 목록에 없다면 해당 상품의 수량을 1로 처리
	if(cnt == 0){
		goods.setQuantity(1);
		list.add(goods);
	}
	
	response.sendRedirect("product.jsp?id="+id);
%>

product.jsp

<%@page import="dto.Product"%>
<%@page import="ch04.com.dao.ProductRepository"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" 
href="<%=request.getContextPath()%>/css/bootstrap.min.css" />
<title>상품 상세 정보</title>
<script type="text/javascript">
	function addToCart(){
		//확인 : true, 취소 : false
		if(confirm("상품을 장바구니에 추가하시겠습니까?")){ //확인
			document.addForm.submit();
		}else{ //취소
			document.addForm.reset();
		}
	}
</script>
</head>
<body>
<%-- <jsp:useBean id="productDAO" class="ch04.com.dao.ProductRepository" /> --%>
<%
	ProductRepository productDAO = ProductRepository.getInstance();
%>
	<div class="jumbotron">
		<div class="container">
			<h1 class="display-3">상품 정보</h1>
		</div>
	</div>
	<%
	//product.jsp?id=P1234
	String id = request.getParameter("id");
// 	out.print("id : " + id + "<br />");
	
// 	ProductRepository productDAO = new ProductRepository();
	Product product = productDAO.getProductById(id);
	%>
	<c:set var="product" value="<%=product%>" />
	<div class="container">
		<div class="row">
			<div class="col-md-5">
				<img src="/upload/${product.filename}" style="width:100%;" />
			</div>
			<div class="col-md-6">
				<h3>${product.pname}</h3>
				<p>${product.description}</p>
				<p>
					<b>상품코드 : </b>
					<span class="badge badge-danger">${product.productId}</span>
				</p>
				<p><b>제조사</b> : ${product.manufacturer}</p>
				<p><b>분류</b> : ${product.category}</p>
				<p><b>제고 수</b> : ${product.unitsInStock}</p>
				<h4>${product.uniPrice}원</h4>
				<p>
					<form name="addForm" method="post" 
					action="addCart.jsp?id=${product.productId}">
						<a href="#" class="btn btn-info" onclick="addToCart()">
						상품 주문 &raquo;</a>
						<a href="cart.jsp" class="btn btn-warning">장바구니&raquo;</a>
						<a href="products.jsp" class="btn btn-secondary">상품 목록&raquo;</a>
					</form>
				</p>
			</div>
		</div>
	</div>
</body>
</html>

=> 장바구니 버튼과 script를 추가하여 상품 주문 버튼을 클릭할 때 장바구니에 물품이 담기는 함수를 작성

삭제하기 클릭 시

장바구니에 담긴 모든 물품이 삭제된다.

0개의 댓글