dto 폴더 생성 -> Book 클래스 생성
DTO : 데이터를 전달하는 객체
책이라면 책에 관련된 데이터를 전달하는 객체임
package dto;
public class Book {
private String bookId; // 도서 아이디
private String name; // 도서명
private Integer unitPrice; // 가격
private String author; // 저자
private String description; // 설명
private String publisher; // 출판사
private String category; // 분류
private long unitsInStock; // 재고 수
private long totalPages; // 페이지 수
private String releaseDate; // 출판일(월/년)
private String condition; // 신규 도서 or 중고 도서 or E-Book
public Book() {
// 기본생성자는 이미 생성자가 있을 경우에 자동생성이 안된다. 만들어야함
}
public Book(String bookId, String name, Integer unitPrice) {
this.bookId = bookId;
this.name = name;
this.unitPrice = unitPrice;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Integer unitPrice) {
this.unitPrice = unitPrice;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
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 long getTotalPages() {
return totalPages;
}
public void setTotalPages(long totalPages) {
this.totalPages = totalPages;
}
public String getReleaseDate() {
return releaseDate;
}
public void setReleaseDate(String releaseDate) {
this.releaseDate = releaseDate;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
}
dao 패키지 -> BookRepository 클래스 생성
BookRepository 클래스
일단 임의로 몇개의 책을 넣어보기로함
package dao;
import java.util.ArrayList;
import dto.Book;
public class BookRepository {
private ArrayList<Book> listOfBooks = new ArrayList<Book>();
//dto의 Book import
//모든 책리스트를 리턴하는 메서드
public BookRepository() {
Book html = new Book("ISBN1234", "HTML5+CSS3", 15000);
html.setAuthor("황재호");
html.setCategory("Hello Coding");
html.setCondition("New");
html.setDescription(
"워드나 PPT 문서를 만들 수 있나요? 그러면 문제 없습니다. 지금 바로 웹페이지 제작에 도전해보세요. 지금 당장 컴퓨터가 없어도 괜찮습니다. 코드와 실행 화면이 바로 보여서 눈으로만 읽어도 어떻게 작동하는지 쉽게 파악할 수 있는 것은 기본이고, 중간중간 퀴즈를 추가하여 재미있게 게임하듯 복습할 수 있습니다.");
html.setPublisher("한빛미디어");
html.setReleaseDate("2018/03/02");
html.setTotalPages(288);
html.setUnitsInStock(1000);
Book java = new Book("ISBN1235", "쉽게 배우는 자바 프로그래밍", 27000);
java.setAuthor("우종정");
java.setCategory("IT모바일");
java.setCondition("New");
java.setDescription(
"객체 지향의 핵심과 자바의 현대적 기능을 충실히 다루면서도초보자가 쉽게 학습할 수 있게 구성했습니다. 시각화 도구를 활용한 개념 설명과 군더더기 없는 핵심 코드를 통해 개념과 구현을 한 흐름으로 학습할 수 있습니다. 또한 ‘기초 체력을 다지는 예제 → 셀프 테스트 → 생각을 논리적으로 정리하며 한 단계씩 풀어 가는 도전 과제 → 스토리가 가미된 흥미로운 프로그래밍 문제’ 등을 통해 프로그래밍 실력을 차근차근 끌어올릴 수 있습니다.");
java.setPublisher("한빛아카데미");
java.setReleaseDate("2017/08/02");
java.setTotalPages(692);
java.setUnitsInStock(1000);
Book spring = new Book("ISBN1236", "스프링4 입문", 27000);
spring.setAuthor("하세가와 유이치, 오오노 와타루, 토키 코헤이(권은철, 전민수)");
spring.setCategory("IT모바일");
spring.setCondition("New");
spring.setDescription(
"스프링은 단순히 사용 방법만 익히는 것보다 아키텍처를 어떻게 이해하고 설계하는지가 더 중요합니다. 예제를 복사해 붙여넣는 식으로는 실제 개발에서 스프링을 제대로 활용할 수 없습니다. 이 책에서는 웹 애플리케이션의 기초를 다지고 스프링 코어를 살펴보며 클라우드 네이티브 입문까지 다룹니다. 이제 막 실무에 뛰어든 웹 애플리케이션 초급자나 개발 경험은 있지만 스프링은 사용해본 적 없는 분을 대상으로 가능한 한 쉽게 설명합니다.");
spring.setPublisher("한빛미디어");
spring.setReleaseDate("2017/11/01");
spring.setTotalPages(520);
spring.setUnitsInStock(1000);
listOfBooks.add(html);
listOfBooks.add(java);
listOfBooks.add(spring);
}
public ArrayList<Book> getAllBooks() {
return listOfBooks;
}
}
BookRepository 을 만들게 되면 안에 있는 html, java,spring 책 세 권이 배열에 담겨서 생성된다.
welcome페이지 복사해서
books.jps 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="dto.Book"%>
<%@page import="java.util.ArrayList"%>
<!-- BookRepository객체 생성 -->
<jsp:useBean id="bookDAO" class="dao.BookRepository" scope="session"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/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">
<%
ArrayList<Book> listBooks =bookDAO.getAllBooks();
for(int i=0;i<listBooks.size();i++){
Book book = listBooks.get(i);
%>
<div class="row">
<div class="col-md-10">
<p><h5><b>[<%=book.getCategory()%>] <%=book.getName()%></b></h5>
<p style="padding-top: 20px"><%=book.getDescription().substring(0, 100)%>...
<p><%=book.getAuthor()%> | <%=book.getPublisher()%> | <%=book.getUnitPrice()%>원
</div>
<div class="col-md-2" style="padding-top: 70px">
<a href="./book.jsp?id=<%=book.getBookId()%>"
class="btn btn-secondary" role="button">상세정보 »</a>
</div>
</div>
<hr>
<%
}// 반복문 끝나는 부분
%>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
dao.BookRepository 책 세권을 반복문을 사용해서 출력하기
한 권의 책이 출력되는 부분인데,
class ="row"는 부트스트랩이다.
아래 div 두 개의 col-md-10 / col-md-2 크기로 공간 지정해줌
총 12열이라서 col-md-10이 12열 중 10열 차지 col-md-2 가 2열 차지한다고 생각하면된다.
화면 출력
'BACKEND > Jsp' 카테고리의 다른 글
북마켓 프로젝트 4 (0) | 2023.09.22 |
---|---|
북마켓 프로젝트 3 (0) | 2023.09.22 |
북마켓 프로젝트 1 (0) | 2023.09.22 |
브라우저에 데이터 저장하는 Cookies 예제 (0) | 2023.09.20 |
JSP session (세션) 및 예제 (0) | 2023.09.20 |