📒 개발기록/JSP 프로젝트

[JSP][도서쇼핑몰 프로젝트]#11.장바구니 페이지 만들기(2)

초코붕붕 2023. 2. 20. 08:00
728x90

안녕하세요! 오늘은 지난 시간에 이어서 장바구니 페이지의 삭제기능을 만들어 보려고 합니다. 상품을 삭제하고 싶을 때 개별삭제를 할 수도 있고 전체 삭제를 할 수도 있을 텐데요. 간단한 코드이니 빠르게 살펴봅시다.


📋순서

1. 개별 상품 삭제하기

2. 전체 상품 삭제하기

3. 결과


#01. 장바구니에 등록된 개별 상품 삭제

removeCart.jsp를 새로 생성해 줍니다. 그리고 스크립트 태그 안에 다음과 같이 작성해 주면 됩니다.

String id = request.getParameter("id");
if (id == null || id.trim().equals("")) {
	response.sendRedirect("products01.jsp");
	return;
}

요청된 파라미터 아이디를 전송받도록 request내장 객체의 getParameter()메소드를 작성하고, 전송된 아이디가 없을 때 웹페이지 products01.jsp로 이동하도록 response 내장객체의 sendRedirect()메소드를 작성하여 줍니다. 

ProductRepository dao = ProductRepository.getInstance();

상품 데이터 접근 클래스 ProductRdpository의 기본 생성자에 대한 객체 변수 instance를 얻어오도록 작성합니다.

Product book = dao.getProductById(id);
if (book == null) {
	response.sendRedirect("exceptionNoProductId.jsp");
}

상품 아이디를 호출해 주고 getProductById로 불러온 아이디를 Product객체에 저장해 줍니다. 만약 상품아이디에 대한 정보가 없으면 예외처리 페이지로 이동합니다. 

ArrayList<Product> cartList = (ArrayList<Product>) session.getAttribute("cartlist");

장바구니인 cartlist에 등록된 모든 상품을 가져오도록 세션 내장객체의 getAttribute()메소드를 작성합니다.

Product goodsQnt = new Product();

Product객체를 생성해 주고

for (int i = 0; i < cartList.size(); i++) { // 상품리스트 하나씩 출력하기
	goodsQnt = cartList.get(i);
	if (goodsQnt.getBookID().equals(id)) {
		cartList.remove(goodsQnt);
	}
}

cartlist에 등록된 모든 상품을 하나씩 가져와서 요청파라미터 아이디와 같으면 cartlist에서 삭제하도록 합니다. 

▶removeCart.jsp

<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="dto.Product" %>
<%@ page import="dao.ProductRepository" %>

<%
	String id = request.getParameter("id");
	if (id == null || id.trim().equals("")) {
		response.sendRedirect("products01.jsp");
		return;
	}

	ProductRepository dao = ProductRepository.getInstance();
	
	Product book = dao.getProductById(id);
	if (book == null) {
		response.sendRedirect("exceptionNoProductId.jsp");
	}

	ArrayList<Product> cartList = (ArrayList<Product>) session.getAttribute("cartlist");
	Product goodsQnt = new Product();
	for (int i = 0; i < cartList.size(); i++) { // 상품리스트 하나씩 출력하기
		goodsQnt = cartList.get(i);
		if (goodsQnt.getBookID().equals(id)) {
			cartList.remove(goodsQnt);
		}
	}

	response.sendRedirect("cart.jsp");
%>
반응형

#02. 장바구니에 등록된 전체 상품 삭제하기

deleteCart.jsp파일을 하나 생성해 주고 다음과 같이 코드를 작성해 줍니다.

String id = request.getParameter("cartId");
if (id == null || id.trim().equals("")){
	response.sendRedirect("cart.jsp");
	return;
}

요청된 파라미터 cartId를 전송받도록 request내장 객체의 getParameter()메소드를 작성하고 전송된 cartId가 없을 때 웹페이지 cart.jsp로 이동하도록 sendRedirect를 작성합니다.

session.invalidate();

장바구니에 등록된 모든 상품을 삭제하도록 invalidate()메소드를 작성해 줍니다. 

▶removeCart.jsp

<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="dto.Product"%>
<%@ page import="dao.ProductRepository"%>

<%
	String id = request.getParameter("cartId");
	if (id == null || id.trim().equals("")){
		response.sendRedirect("cart.jsp");
		return;
	}
	
	session.invalidate();
	
	response.sendRedirect("cart.jsp");
%>

#03. 결과

실행해서 삭제 버튼을 눌렀을 때 잘 작동하는 것을 볼 수 있습니다.

반응형