Study/WebServer
[웹 쇼핑몰 실습] 상품 이미지 등록하기
Gyuri
2021. 8. 22. 23:29
상품 목록 페이지 수정
products.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="dto.Product"%>
<%@ page import="dao.ProductRepository"%>
<jsp:useBean id="productDAO" class="dao.ProductRepository" scope="session" />
<html>
<head>
<meta charset="UTF-8">
<head>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
<title>상품 목록</title>
<body>
<jsp:include page="menu.jsp" />
<div class="jumbotron">
<div class="container">
<h1 class="display-3">상품 목록</h1>
</div>
</div>
<%
ArrayList<Product> listOfProducts = productDAO.getAllProducts();
ProductRepository dao = ProductRepository.getInstance();
%>
<div class="container">
<div class="row" align="center">
<%
for (int i = 0; i < listOfProducts.size(); i++) {
Product product = listOfProducts.get(i);
%>
<div class="col-md-4">
<img src="./resources/images/<%=product.getFilename()%>"
style="width:100%">
<h3><%=product.getPname()%></h3>
<p><%=product.getDescription()%>
<p><%=product.getUnitPrice()%>원
<p><a href="./product.jsp?id=<%=product.getProductId()%>"
class="btn btn-secondary" role="button"> 상세 정보 »</a>
</div>
<%
}
%>
</div>
<hr>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
상품 상세 정보 페이지 수정
product.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="dto.Product"%>
<%@page import="dao.ProductRepository"%>
<jsp:useBean id="productDAO" class="dao.ProductRepository"
scope="session" />
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
<meta charset="UTF-8">
<title>상품 상세 정보</title>
</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 = productDAO.getProductById(id);
%>
<div class="container">
<div class="row">
<div class="col-md-5">
<img src="./resources/images/<%=product.getFilename()%>"
style="width:100%"/>
</div>
<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><a href="#" class="btn btn-info">상품 주문 »</a>
<a href="./products.jsp" class="btn btn-secondary"> 상품 목록 »</a>
</div>
</div>
<jsp:include page="footer.jsp"/>
</body>
</html>
상품 이미지 업로드하기
- 상품 이미지 파일의 저장 위치 만들기 : c드라이브에 upload 폴더 생성 후 이 폴더에 상품 이미지 파일명을 상품 아이디로 하여 등록
- 오픈 라이브러리 cos.jar 등록 : MultipartRequest 클래스를 이용한 파일 업로드를 위해 cos.jar ㅍ파일 등록
- 상품 목록 페이지 수정(products.jsp)
<img src="./resources/images/<%=product.getFilename()%>" style="width:100%">
- 상품 상세 정보 페이지 수정(product.jsp)
<img src="./resources/images/<%=product.getFilename()%>" style="width:100%"/>
- 상품 정보 등록 페이지 수정(addProduct.jsp)
<%@ page contentType="text/html; charset=utf-8"%> <html> <head> <link rel="stylesheet" href="./resources/css/bootstrap.min.css" /> <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"> <form name="newProduct" action="./processAddProduct.jsp" class="form-horizontal" method="post" enctype="multipart/form-data"> <div class="form-group row"> <label class="col-sm-2">상품 코드</label> <div class="col-sm-3"> <input type="text" name="productId" class="form-control" > </div> </div> <div class="form-group row"> <label class="col-sm-2">상품명</label> <div class="col-sm-3"> <input type="text" name="name" class="form-control" > </div> </div> <div class="form-group row"> <label class="col-sm-2">가격</label> <div class="col-sm-3"> <input type="text" name="unitPrice" class="form-control" > </div> </div> <div class="form-group row"> <label class="col-sm-2">상세 정보</label> <div class="col-sm-5"> <textarea name="description" cols="50" rows="2" class="form-control"></textarea> </div> </div> <div class="form-group row"> <label class="col-sm-2">제조사</label> <div class="col-sm-3"> <input type="text" name="manufacturer" class="form-control"> </div> </div> <div class="form-group row"> <label class="col-sm-2">분류</label> <div class="col-sm-3"> <input type="text" name="category" class="form-control" > </div> </div> <div class="form-group row"> <label class="col-sm-2">재고 수</label> <div class="col-sm-3"> <input type="text" name="unitsInStock" class="form-control" > </div> </div> <div class="form-group row"> <label class="col-sm-2">상태</label> <div class="col-sm-5"> <input type="radio" name="condition" value="New " > 신규 제품 <input type="radio" name="condition" value="Old" > 중고 제품 <input type="radio" name="condition" value="Refurbished" > 재생 제품 </div> </div> <div class="form-group row"> <label class="col-sm-2">이미지</label> <div class="col-sm-5"> <input type="file" name="productImage" class="form-control"> </div> </div> <div class="form-group row"> <div class="col-sm-offset-2 col-sm-10 "> <input type="submit" class="btn btn-primary" value="등록" > </div> </div> </form> </div> </body> </html>
- 상품 등록 처리 페이지 수정(processAddProduct.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.oreilly.servlet.*"%> <%@ page import="com.oreilly.servlet.multipart.*"%> <%@ page import="java.util.*"%> <%@page import="dto.Product"%> <%@page import="dao.ProductRepository"%> <% request.setCharacterEncoding("UTF-8"); String filename = ""; String realFolder = "C:\\upload"; //웹 어플리케이션상의 절대 경로 String encType = "utf-8"; //인코딩 타입 int maxSize = 5 * 1024 * 1024; //최대 업로드될 파일의 크기5Mb MultipartRequest multi = new MultipartRequest(request, realFolder, maxSize, encType, new DefaultFileRenamePolicy()); String productId = multi.getParameter("productId"); String name = multi.getParameter("name"); String unitPrice = multi.getParameter("unitPrice"); String description = multi.getParameter("description"); String manufacturer = multi.getParameter("manufacturer"); String category = multi.getParameter("category"); String unitsInStock = multi.getParameter("unitsInStock"); String condition = multi.getParameter("condition"); Integer price; if (unitPrice.isEmpty()) price = 0; else price = Integer.valueOf(unitPrice); long stock; if (unitsInStock.isEmpty()) stock = 0; else stock = Long.valueOf(unitsInStock); Enumeration files = multi.getFileNames(); String fname = (String) files.nextElement(); String fileName = multi.getFilesystemName(fname); ProductRepository dao = ProductRepository.getInstance(); Product newProduct = new Product(); newProduct.setProductId(productId); newProduct.setPname(name); newProduct.setUnitPrice(price); newProduct.setDescription(description); newProduct.setManufacturer(manufacturer); newProduct.setCategory(category); newProduct.setUnitsInStock(stock); newProduct.setCondition(condition); newProduct.setFilename(fileName); dao.addProduct(newProduct); response.sendRedirect("products.jsp"); %>