MySQL DB연결하기
marketdb생성
Apply
use marketdb;
DROP TABLE IF EXISTS BOOK;
CREATE TABLE IF NOT EXISTS Book (
id VARCHAR(10) PRIMARY KEY,
name VARCHAR(20),
unitPrice INTEGER,
author VARCHAR(50),
publisher VARCHAR(20),
description TEXT,
category VARCHAR(20),
unitsInStock LONG,
totalPages LONG,
releaseDate VARCHAR(20),
b_condition VARCHAR(20),
fileName VARCHAR(20)
);
book으로 저장
데이터 입력
INSERT INTO Book VALUES ('ISBN1234', 'HTML5+CSS3', 15000, '황재호', '한빛미디어', '워드나 PPT 문서를 만들 수 있나요? 그러면 문제 없습니다. 지금 바로 웹페이지 제작에 도전해보세요. 지금 당장 컴퓨터가 없어도 괜찮습니다. 코드와 실행 화면이 바로 보여서 눈으로만 읽어도 어떻게 작동하는지 쉽게 파악할 수 있는 것은 기본이고, 중간중간 퀴즈를 추가하여 재미있게 게임하듯 복습할 수 있습니다.', 'Hello Coding', 1000, 288, '2018/03/02', 'new', 'ISBN1234.jpg');
INSERT INTO Book VALUES ('ISBN1235', '쉽게 배우는 자바 프로그래밍', 27000, '우종정', '한빛아카데미', '객체 지향의 핵심과 자바의 현대적 기능을 충실히 다루면서도초보자가 쉽게 학습할 수 있게 구성했습니다. 시각화 도구를 활용한 개념 설명과 군더더기 없는 핵심 코드를 통해 개념과 구현을 한 흐름으로 학습할 수 있습니다. 또한 ‘기초 체력을 다지는 예제 → 셀프 테스트 → 생각을 논리적으로 정리하며 한 단계씩 풀어 가는 도전 과제 → 스토리가 가미된 흥미로운 프로그래밍 문제’ 등을 통해 프로그래밍 실력을 차근차근 끌어올릴 수 있습니다.', 'IT모바일', 1000, 692, '2017/08/02', 'new', 'ISBN1235.jpg');
INSERT INTO Book VALUES ('ISBN1236', '스프링 4입문', 27000, '하세가와 유이치, 오오노 와타루, 토키 코헤이(권은철, 전민수)', '한빛미디어', '스프링은 단순히 사용 방법만 익히는 것보다 아키텍처를 어떻게 이해하고 설계하는지가 더 중요합니다. 예제를 복사해 붙여넣는 식으로는 실제 개발에서 스프링을 제대로 활용할 수 없습니다. 이 책에서는 웹 애플리케이션의 기초를 다지고 스프링 코어를 살펴보며 클라우드 네이티브 입문까지 다룹니다. 이제 막 실무에 뛰어든 웹 애플리케이션 초급자나 개발 경험은 있지만 스프링은 사용해본 적 없는 분을 대상으로 가능한 한 쉽게 설명합니다.', 'IT모바일', 1000, 520, '2017/11/01', 'new', 'ISBN1236.jpg');
데이터 베이스 연결로 dao 의 BookRepository.java의 BookRepository()를 데이터 베이스로 대체한다.
menu.jsp 수정
도서등록, 도서수정, 도서삭제 li 태그 추가
<nav class="navbar navbar-expand navbar-dark bg-dark">
<div class="container">
<ul class="navbar-nav">
<li class="nav-item active"><a class="nav-link"
href="./welcome.jsp">홈페이지</a></li>
<li class="nav-item active ml-5"><a class="nav-link"
href="./books.jsp">도서목록</a></li>
<li class="nav-item active"><a class="nav-link"
href="./addBook.jsp">도서등록</a></li>
<li class="nav-item active"><a class="nav-link"
href="./editBook.jsp?edit=update">도서수정</a></li>
<li class="nav-item active"><a class="nav-link"
href="./editBook.jsp?edit=delete">도서삭제</a></li>
</ul>
</div>
</nav>
데이터 베이스 연결을 위해서는 mysql-connecotr 라이브러리 필요한데 , 저번에 톰캣 서버에 저장해놔서 그대로 놔둠
dbconn.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
Connection conn = null;
try{
String url = "jdbc:mysql://localhost:3306/marketdb?useSSL=false&allowPublicKeyRetrieval=true"; //데이터베이스 주소
String user = "root";
String password = "1234";
//Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
out.println("데이터베이스 연결 성공!<br>");
}catch(SQLException ex){
out.println("데이터베이스 연결이 실패했습니다.<br>");
out.println("SQLException: "+ ex.getMessage());
}
%>
연결 성공 뜨면
//out.println("데이터베이스 연결 성공!<br>"); 주석처리
books.jsp 수정
db로 다 가져온다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<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">
<%@ include file ="dbconn.jsp" %>
<%
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM Book";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
%>
<div class="row">
<div class="col-md-3" align="center">
<img src="/upload/<%=rs.getString("fileName")%>" style="width: 100%" />
</div>
<div class="col-md-7">
<p>
<h5>
<b>[<%=rs.getString("category")%>] <%=rs.getString("name")%></b>
</h5>
<p style="padding-top: 20px"><%=rs.getString("description").substring(0, 100)%>...
<p><%=rs.getString("author")%>
|
<%=rs.getString("publisher")%>
|
<%=rs.getString("unitPrice")%>원
</div>
<div class="col-md-2" style="padding-top: 70px">
<a href="./book.jsp?id=<%=rs.getString("id")%>"
class="btn btn-secondary" role="button">상세정보 »</a>
</div>
</div>
<hr>
<%
} // 반복문 끝나는 부분
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
%>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
도서 상세페이지
book.jsp 수정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page errorPage="exceptionNoBookId.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>도서 상세 정보</title>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
</head>
<body>
<%@ include file="menu.jsp"%>
<div class="jumbotron">
<div class="container">
<h1 class="display-4">도서 정보</h1>
</div>
</div>
<!--db 연결-->
<%@ include file="dbconn.jsp"%>
<%
String bookId = request.getParameter("id");
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM Book WHERE id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, bookId);
rs = pstmt.executeQuery();
if (rs.next()) {
%>
<div class="container">
<div class="row">
<div class="col-md-4">
<img src="/upload/<%=rs.getString("fileName")%>" style="width: 100%" />
</div>
<div class="col-md-8">
<h4>
<b>[<%=rs.getString("category")%>]<%=rs.getString("name")%></b>
</h4>
<p><%=rs.getString("description")%>
<p>
<b>도서코드 : </b><span class="badge badge-danger"> <%=rs.getString("id")%></span>
<p>
<b>저자</b> :
<%=rs.getString("author")%>
<p>
<b>출판사</b> :
<%=rs.getString("publisher")%>
<p>
<b>출판일</b> :
<%=rs.getString("releaseDate")%>
<p>
<b>총 페이지수</b> :
<%=rs.getString("totalPages")%>
<p>
<b>재고수</b> :
<%=rs.getString("unitsInStock")%>
<h4><%=rs.getString("unitPrice")%>원
</h4>
<form name="addForm" action="./addCart.jsp?id=<%= rs.getString("id")%>"
method="post">
<button type="button" class="btn btn-info" onclick="addToCart()">도서주문
»</button>
<a href="./cart.jsp" class="btn btn-warning">장바구니 »</a> <a
href="./books.jsp" class="btn btn-secondary">도서목록 »</a>
</form>
</div>
</div>
<hr>
</div>
<%
}
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
%>
<%@ include file="footer.jsp"%>
<script>
function addToCart() {
if (confirm('도서를 장바구니에 추가하시겠습니까?')) {
document.addForm.submit();
}
}
</script>
</body>
</html>
<%@page import="dto.Book"%>
<%@page import="java.util.ArrayList"%>
<jsp:useBean id="bookDAO" class="dao.BookRepository" scope="session" />
은 이제 필요없음
왜냐하면 sql db에서 들고 올거라서
수정 후 상세정보 잘 출력되는지 확인하기
'BACKEND > Jsp' 카테고리의 다른 글
게시판 만들기-1( db연결확인 ~ 로그인 ) (0) | 2023.10.10 |
---|---|
북마켓 프로젝트 10 (0) | 2023.09.27 |
북마켓 프로젝트 8 (0) | 2023.09.26 |
북마켓 프로젝트 7 (0) | 2023.09.25 |
북마켓 프로젝트 6 (0) | 2023.09.25 |