본문 바로가기

JSP 웹 프로그래밍/쇼핑몰 페이지 만들기

[웹 쇼핑몰]상품 목록 표시하기

하고자 하는 모양

VO

[ 상품 클래스 생성, 멤버 변수 선언 / 기본 생성자 작성 /  모든 멤버 변수의 Setter/Getter( ) 메소드 작성]

더보기
ProductVO.java

 

package kr.or.ddit.vo;

//자바빈 클래스
//자바빈규약 : 프로퍼티, 기본생성자, getter/setter메소드
public class ProductVO {
	//멤버변수 (필드) = 프로퍼티
	private String product_id;
	private String pname;
	private long   unitPrice;
	private String description;
	private String manufacturer;
	private String category;
	private long   unitsInStock;
	private String condition;
	
	//기본 생성자 (생략가능)
	public ProductVO() {}
	
	//생성자(상품아이디, 상품명, 상품가격)
	public ProductVO(String product_id, String pname, long unitPrice) {
		this.product_id = product_id;
		this.pname = pname;
		this.unitPrice = unitPrice;
	}
	

	
	//getter/setter메소드
	public String getProduct_id() {
		return product_id;
	}


	public void setProduct_id(String product_id) {
		this.product_id = product_id;
	}

	public String getPname() {
		return pname;
	}

	public void setPname(String pname) {
		this.pname = pname;
	}

	public long getUnitPrice() {
		return unitPrice;
	}

	public void setUnitPrice(long 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;
	}


	
	@Override
	public String toString() {
		return "ProductVO [product_id=" + product_id + ", pname=" + pname + ", unitPrice=" + unitPrice
				+ ", description=" + description + ", manufacturer=" + manufacturer + ", category=" + category
				+ ", unitsInStock=" + unitsInStock + ", condition=" + condition + "]";
	}

	
	

}​

DAO

[  멤버 변수와 기본 생성자 만들기 / 상품 목록으 가져오는 메소드 만들기 ]

더보기

ProductRepository.java

package kr.or.ddit.dao;

import java.util.ArrayList;

import kr.or.ddit.vo.ProductVO;

public class ProductRepository {
	
	//정보를 한번에 보내기 위해 생성함
	private ArrayList<ProductVO> listofProducts = new ArrayList<ProductVO>();
	
	//싱글톤 객체 
	private static ProductRepository instance = new ProductRepository();
	public  static ProductRepository getInstance() {
		return instance;
	}
	
	//기본생성자. 3개의 상품 정보를 설정 
	private 	   ProductRepository() {
	
	 //최신 아이폰 
	 ProductVO phone = new ProductVO("P1234", "iPhone 15s", 1250000);
	 phone.setDescription("4.7-inch, 1334x750 Renina HD display");
	 phone.setCategory("smart Phone");
	 phone.setManufacturer("Apple");
	 phone.setUnitsInStock(1000);
	 phone.setCondition("New");
	 
	 //최신 노트북 
	 ProductVO notbbook = new ProductVO("P1235", "Mac Book", 2000000);
	 notbbook.setDescription("13.3-inch, ISP LED display, 5rd Generation Intel");
	 notbbook.setCategory("NoteBook");
	 notbbook.setManufacturer("LG");
	 notbbook.setUnitsInStock(1000);
	 notbbook.setCondition("Old");
	 
	 //최신 태블릿
	 ProductVO tablet = new ProductVO("P1236", "갤럭시 탭 S9 Ultra", 1700000);
	 tablet.setDescription("212.8*125.6*6.6mm, Super AMOLED display");
	 tablet.setCategory("Tablet");
	 tablet.setManufacturer("Samsung");
	 tablet.setUnitsInStock(1000);
	 tablet.setCondition("Refurbished");
	 
	 
	 listofProducts.add(phone);
	 listofProducts.add(notbbook);
	 listofProducts.add(tablet);
	 
	}
	
	//ProductVO 객체 타입의 변수 listofProducts에 저장된 모든 상품 목록을 가져옴 
	public ArrayList<ProductVO> getAllProducts(){
		return listofProducts;
	}
}

JSP

[ 상품 목록 출력 웹 페이지 만들기 ] 

더보기

products.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="kr.or.ddit.dao.ProductRepository"%>
<%@ page import="kr.or.ddit.vo.ProductVO"%>
<%@ page import="java.util.ArrayList"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/css/bootstrap.min.css">
<title>상품목록</title>
</head>
<body>
	<%//스크립틀릿 
		//클래스 				객체			클래스				메소드
		ProductRepository prodcutDAO = ProductRepository.getInstance();//호출 => 클래스의 메소드를 호출해서 객체를 가져오기
		// 객체 타입				변수				객체			메소드 
		ArrayList<ProductVO> listofProducts = prodcutDAO.getAllProducts();//호출 => 객체를 준비하고 객체로 부터 메소드를호출해서 변수레 대입 
		
		//out.print("listofProducts : " + listofProducts );
	%>
	
	<!--자바에 있는걸 JSP로 가져오기  -->
	<!-- JSPL		변수				값 		변수       -->
	<c:set var="listofProducts" value="<%=listofProducts%>" />
<%-- 	<p>${listofProducts}</p> --%>
	
 <!--디렉티브 태그 	속성 	 속성의 값 -->
 	<%@include file="menu.jsp" %>
	<!--   상품 목록시작 	   -->
	<div class="jumbotron">
		<div class="container">
			<h1 class="display-3">상품 목록</h1>
		</div>
	</div>
	<div clas="container">
		<div class="row" align="center">
			<!-- 상품 반복부분 시작
				listofProducts : ArrayList<ProductVO> listofProducts
			 -->
			 <!-- 객체 타입의 변수 listofProducts에 저장된 상품 목록 개수만큼 실행하는 JSTL 반복문 -->
			<c:forEach var="productVO" items="${listofProducts}" varStatus="stat" >
				<div class="col-md-4">
						<!-- EL 표현문 변수를가져와서 출력하는 부분  -->
					<h3>${productVO.pname}</h3>
					<p>${productVO.description}</p>
					<p>${productVO.unitPrice} </p>
					<P>
						<a href="/product.jsp?productId=${productVO.productId}"
							class="btn btn-secondary">상세정보 &raquo;</a>
					</P>
				</div>
			</c:forEach>
			<!-- 상품 반복부분  끝 -->
		</div>
		<hr>
	</div>
	<!--   상품 목록 끝  	   -->
	<%@include file="footer.jsp" %>
</body>
</html>