개발로그필름
[쉽게 배우는 JSP 웹 프로그래밍] 13장 웹 쇼핑몰 예제 코드 본문
728x90
반응형
SMALL
WebMarket/src/dto/Product.java
package dto;
import java.io.Serializable;
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
private String productId; // 상품 아이디
private String pname; // 상품명
private Integer unitPrice; // 상품 가격
private String description; // 상품 설명
private String manufacturer; // 제조사
private String category; // 분류
private long unitsInStock; // 재고 수
private String condition; // 신상품 or 중고품 or 재생품
private String filename; // 이미지 파일명
private int quantity; // 장바구니에 담은 개수
public Product() {
super();
}
public Product(String productId, String pname, Integer unitPrice) {
this.productId = productId;
this.pname = pname;
this.unitPrice = unitPrice;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public Integer getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Integer unitPrice) {
this.unitPrice = unitPrice;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public long getUnitsInStock() {
return unitsInStock;
}
public void setUnitsInStock(long unitsInStock) {
this.unitsInStock = unitsInStock;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
WebMarket/WebContent/product.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="dto.Product" %>
<%@ page import="dao.ProductRepository" %>
<%@ page errorPage="exceptionNoProductId.jsp" %>
<jsp:useBean id="productDAO" class="dao.ProductRepository" scope="session" />
<html>
<head>
<link rel = "stylesheet" href="./resources/css/bootstrap.min.css" />
<title>상품 상세 정보</title>
<script type="text/javascript">
function addToCart() {
if (confirm("상품을 장바구니에 추가하시겠습니까?")) {
document.addForm.submit();
} else {
document.addForm.reset();
}
}
</script>
</head>
<body>
<jsp:include page="menu.jsp" />
<div class="jumbotron">
<div class="container">
<h1 class="display-3">상품 정보</h1>
</div>
</div>
<%
String id = request.getParameter("id");
ProductRepository dao = ProductRepository.getInstance();
Product product = dao.getProductById(id);
%>
<div class="container">
<div class="row">
<div class="col-md-5">
<img src="./resources/images/<%=product.getFilename() %>" style="width: 100%">
</div>
<div class="col-md-6">
<h3><%=product.getPname() %></h3>
<p><%=product.getDescription() %>
<p> <b>상품 코드 : </b><span class="badge badge-danger"><%=product.getProductId() %></span>
<p> <b>제조사</b> : <%=product.getManufacturer() %>
<p> <b>분류</b> : <%=product.getCategory() %>
<p> <b>재고 수</b> : <%=product.getUnitsInStock() %>
<h4><%=product.getUnitPrice() %>원</h4>
<p> <form name="addForm" action="./addCart.jsp?id=<%=product.getProductId() %>" method="post">
<a href="#" class="btn btn-info" onclick="addToCart()"> 상품 주문 »</a>
<a href="./cart.jsp" class="btn btn-warning"> 장바구니 »</a>
<a href="./products.jsp" class="btn btn-secondary">상품 목록 »</a>
</form>
</div>
</div>
<hr>
</div>
<jsp:include page="footer.jsp"/>
</body>
</html>
WebMarket/WebContent/addCart.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("products.jsp");
return;
}
ProductRepository dao = ProductRepository.getInstance();
Product product = dao.getProductById(id);
if (product == null) {
response.sendRedirect("exceptionNoProductId.jsp");
}
ArrayList<Product> goodsList = dao.getAllProducts();
Product goods = new Product();
for (int i=0; i<goodsList.size(); i++) {
goods = goodsList.get(i);
if (goods.getProductId().equals(id)) {
break;
}
}
ArrayList<Product> list = (ArrayList<Product>) session.getAttribute("cartlist");
if (list == null) {
list = new ArrayList<Product>();
session.setAttribute("cartlist", list);
}
int cnt = 0;
Product goodsQnt = new Product();
for(int i=0; i<list.size(); i++) {
goodsQnt = list.get(i);
if (goodsQnt.getProductId().equals(id)) {
cnt++;
int orderQuantity = goodsQnt.getQuantity() + 1;
goodsQnt.setQuantity(orderQuantity);
}
}
if (cnt == 0) {
goods.setQuantity(1);
list.add(goods);
}
response.sendRedirect("product.jsp?id=" + id);
%>
WebMarket/WebContent/cart.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="dto.Product" %>
<%@ page import="dao.ProductRepository" %>
<html>
<head>
<link rel = "stylesheet" href="./resources/css/bootstrap.min.css" />
<%
String cartId = session.getId();
%>
<title>장바구니</title>
</head>
<body>
<jsp:include page="menu.jsp" />
<div class="jumbotron">
<div class="container">
<h1 class="display-3">장바구니</h1>
</div>
</div>
<div class="container">
<div class="row">
<table width="100%">
<tr>
<td align="left"><a href="./deleteCart.jsp?cartId=<%=cartId %>" class="btn btn-danger">삭제하기</a></td>
<td align="right"><a href="#" class="btn btn-success">주문하기</a></td>
</tr>
</table>
</div>
<div style="padding-top: 50px">
<table class="table table-hover">
<tr>
<th>상품</th>
<th>가격</th>
<th>수량</th>
<th>소계</th>
<th>비고</th>
</tr>
<%
int sum = 0;
ArrayList<Product> cartList = (ArrayList<Product>)session.getAttribute("cartlist");
if (cartList == null)
cartList = new ArrayList<Product>();
for (int i=0; i<cartList.size(); i++) { // 상품 리스트 하나씩 출력하기
Product product = cartList.get(i);
int total = product.getUnitPrice() * product.getQuantity();
sum = sum + total;
%>
<tr>
<td><%=product.getProductId()%> - <%=product.getPname()%></td>
<td><%=product.getUnitPrice() %></td>
<td><%=product.getQuantity() %></td>
<td><%=total%></td>
<td><a href="./removeCart.jsp?id=<%=product.getProductId()%>" class="badge badge-danger">삭제</a></td>
</tr>
<%
}
%>
<tr>
<th></th>
<th></th>
<th>총액</th>
<th><%=sum %></th>
<th></th>
</tr>
</table>
<a href="./products.jsp" class="btn btn-secondary"> « 쇼핑 계속하기</a>
</div>
<hr>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
WebMarket/WebContent/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("products.jsp");
return;
}
ProductRepository dao = ProductRepository.getInstance();
Product product = dao.getProductById(id);
if (product == 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.getProductId().equals(id)) {
cartList.remove(goodsQnt);
}
}
response.sendRedirect("cart.jsp");
%>
WebMarket/WebContent/deleteCart.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");
%>
반응형
LIST
'IT > 쉽게 배우는 JSP 웹 프로그래밍' 카테고리의 다른 글
[쉽게 배우는 JSP 웹 프로그래밍] 15장 웹 쇼핑몰 예제 코드 (0) | 2022.12.08 |
---|---|
[쉽게 배우는 JSP 웹 프로그래밍] 14장 웹 쇼핑몰 예제 코드 (0) | 2022.12.07 |
[쉽게 배우는 JSP 웹 프로그래밍] 11장 웹 쇼핑몰 예제 코드 (0) | 2022.12.05 |
[쉽게 배우는 JSP 웹 프로그래밍] 10장 웹 쇼핑몰 예제 코드 (0) | 2022.12.04 |
[쉽게 배우는 JSP 웹 프로그래밍] 9장 웹 쇼핑몰 예제 코드 (0) | 2022.12.03 |