JDBC 기본 방법으로 DB연결하기

    kjh95.tistory.com/284

     

    JSP | 웹스토어 주문처리 페이지 | Session, Cookie | 주문완료 페이지 | 영수증 페이지 | 웹 사이트 구

    kjh95.tistory.com/246 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 스토어.." data-og-host="kjh95.tistory.com" data-og-source-url="https://kj..

    kjh95.tistory.com


    이클립스 sql 편집기 실행

    정상적인 화면

    쿼리문 저장경로


    주석 : ctrl+/

    실행 : alt + x

    product.sql

    --	private String productId;    //상품 아이디
    --	private String pname;         //상품
    --	private Integer unitprice;   //상품가격
    --	private String description;  //상품 설명
    --	private String menufecturer; //제조사
    --	private String category;     //분류
    --	private long numberOfstock;  //재고 수
    --	private String condition;    //신상품 or 중고품 or 재생품
    --	private String filename;     //제품이미지
    
    
    -- product 테이블 생성
    drop table if exists product;
    create table product(
    	productId		varchar(10)			not null,
    	pname			varchar(20),
    	unitprice		integer,
    	description		varchar(200),
    	menufecturer	varchar(20),
    	category		varchar(20),
    	numberOfstock	long,
    	conditions		varchar(20),
    	filename		varchar(200),
    	primary key(productId)
    )default charset=utf8mb4;
    
    -- DAO ProductRepository.java
    --		Product phone = new Product("P1234", "iPhone 12 Pro Max", 1490000);
    --		phone.setDescription("6.7-unch, 2778*1284-pixel, OLED Super Retina XDR display, cameras");
    --		phone.setCategory("Smart Phone");
    --		phone.setMenufecturer("Apple");
    --		phone.setUnitprice(1490000);
    --		phone.setNumberOfstock(7000);
    --		phone.setCondition("New");
    --		phone.setFilename("iphone-12-pro-max-gold-hero.jpg");
    
    insert into product values("P1234", "iPhone 12 Pro Max", 1490000,
    						"6.7-unch, 2778*1284-pixel, OLED Super Retina XDR display, cameras",
    						"Apple",
    						"Smart Phone",
    						7000,
    						"New",
    						"iphone-12-pro-max-gold-hero.jpg");
    
    -- DAO ProductRepository.java					
    --		Product notebook = new Product("P1235", "LG 울트라 기어", 1930000);
    --		notebook.setDescription("15-unch, 1920*1080-pixel, IPS LED display, 10세대 인텔 코어 i7-10510U 프로세서");
    --		notebook.setCategory("notebook");
    --		notebook.setMenufecturer("LG");
    --		notebook.setUnitprice(1930000);
    --		notebook.setNumberOfstock(5000);
    --		notebook.setCondition("Refurbished");
    --		notebook.setFilename("usp_0103.jpg");
    
    insert into product values("P1235", "LG 울트라 기어", 1930000,
    						"15-unch, 1920*1080-pixel, IPS LED display, 10세대 인텔 코어 i7-10510U 프로세서",
    						"LG",
    						"notebook",
    						5000,
    						"Refurbished",
    						"usp_0103.jpg");
    
    -- DAO ProductRepository.java
    --		Product tablet = new Product("P1236", "갤럭시 탭 S7+", 1149500);
    --		tablet.setDescription("12-unch, 2800*1752-pixel, Super AMOLED display, Octa-Core 프로세서");
    --		tablet.setCategory("Tablet");
    --		tablet.setMenufecturer("SAMSUNG");
    --		tablet.setUnitprice(1149500);
    --		tablet.setNumberOfstock(3000);
    --		tablet.setCondition("Old");
    --		tablet.setFilename("b008b623-6fe8-4191-82bd-d988db87e6e6.jpg");				
    
    insert into product values("P1236", "갤럭시 탭 S7+", 1149500,
    						"12-unch, 2800*1752-pixel, Super AMOLED display, Octa-Core 프로세서",
    						"SAMSUNG",
    						"Tablet",
    						3000,
    						"Old",
    						"b008b623-6fe8-4191-82bd-d988db87e6e6.jpg");
    						
    						
    

    실행 : alt + x

    생성확인 DBever

     

    dao에 있던 더미데이터를 DB에 insert하기

    상품 목록을 DB로 옮긴다.

    DAO ProductRepository.java

    product.sql

    DBever 확인

    이클립스 화면


    DB연동 위해서 파일 추가

     

    dbconn.jsp

    <%@page import="java.sql.SQLException"%>
    <%@page import="java.sql.DriverManager"%>
    <%@page import="java.sql.Connection"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <!-- 상품 조회, 등록, 수정, 삭제하기 (DB연동) -->
    
    <%
    	try {
    		Connection conn = null;
    		
    		String url = "jdbc:mysql://localhost:3306/webstoredb?serverTimezone=UTC";
    		String user = "root";
    		String password = "7496";
    		
    		Class.forName("com.mysql.cj.jdbc.Driver");			//드라이버명
    		DriverManager.getConnection(url, user, password);	//연결객체생성
    		
    		System.out.println("데이터베이스 연결 되었습니다.");
    		
    	}catch(SQLException e) {
    		System.out.println("데이터베이스 연결 실패했습니다.");
    		e.printStackTrace();
    	}
    %>

    메뉴 만들기

    기존 메뉴에서 내용추가

    메뉴 가로로 나오게 만들기 - 부트스트랩 css 적용

    menu.jsp 

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <% request.setCharacterEncoding("UTF-8"); %>
    
    <nav class="navbar navbar-expand navbar-dark bg-dark"><!-- 네비게이션 바를 만듬 -->
    	<div class="container">							  <!-- container라는 클래스부터 내용을 표시함 -->
    		<div class="navbar-header">					  <!-- 네비게이션 헤더 -->
    			<a class="navbar-brand" href="./welcome.jsp">HOME</a>
    		</div>
    		
    		<!-- 네비게이션 바 요소를 추가등록 -->
    		<div>
    			<ul class="navbar-nav mr-auto">		<!-- mr-auto : 마진공간 자동설정 -->
    				<li class="nav-item"><a href="products.jsp" class="nav-link">상품목록</a></li>
    				<li class="nav-item"><a href="addProduct.jsp" class="nav-link">상품등록</a></li>
    				<li class="nav-item"><a href="#" class="nav-link">상품수정</a></li>
    				<li class="nav-item"><a href="#" class="nav-link">상품삭제</a></li>
    			</ul>
    		</div>
    		
    	</div>
    </nav>

     

    연동 순서 참고

    수정

    DB연결 추가

    products.jsp 

    <%@page import="java.sql.DriverManager"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.sql.PreparedStatement"%>
    <%@page import="java.text.DecimalFormat"%>
    <%@page import="kr.gov.dao.ProductRepository"%>
    <%@page import="kr.gov.dto.Product"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%-- <jsp:useBean id="productDAO" class="kr.gov.dao.ProductRepository" scope="session"/> --%>
    
    <% 
    	request.setCharacterEncoding("UTF-8"); 
    	DecimalFormat dfFormat = new DecimalFormat("###,###");		//숫자 천단위 구분 표시
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>상품 목록</title>
     <!--  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"> -->
      <link rel="stylesheet" href="./resources/css/bootstrap.min.css">  
    </head>
    <body>
    	<jsp:include page="menu.jsp"/>
    
    	<div class="jumbotron">
    		<div class="container">
    			<h1 class="display-3">상품 목록</h1>
    		</div>
    	</div>
    	
    <%-- 	
    	<%	
    		//싱글톤 객체사용
    		ProductRepository dao = ProductRepository.getInstance();	
    	
    		//상품목록 가져옴
    		ArrayList<Product> listOfProducts = dao.getAllProducts();	
    	%> 
    --%>
    	
    	<div class="container">
    		<div class="row" align="center">
    			<%-- <%@ include file="dbconn.jsp" %> --%>		
    			<%
    				/* 				
    				for(int i = 0; i<listOfProducts.size(); i++){
    					Product product = listOfProducts.get(i);
    				*/
    				
    				Connection conn = null;
    				
    				String url = "jdbc:mysql://localhost:3306/webstoredb?serverTimezone=UTC";
    				String user = "root";
    				String password = "7496";
    				
    				Class.forName("com.mysql.cj.jdbc.Driver");					//드라이버명
    				conn = DriverManager.getConnection(url, user, password);	//연결객체생성
    				
    				PreparedStatement pstmt = null;
    				ResultSet rs = null;
    				String sql = "select * from product";
    				
    				pstmt = conn.prepareStatement(sql);		/* Connection객체에 쿼리문을 넘겨주고 prepareStatement를 얻음 */
    				rs = pstmt.executeQuery();				/* 쿼리문 결과 받아옴 */
    				
    				while(rs.next()) {
    				
    				
    			%>
    			<div class="col-md-4">
    				<!-- 경로를 지정해서 이미지를 출력 -->
    				<%-- <img alt="" src="C:/workspace-jsp/upload/<%=product.getFilename() %>" style="width:100%"> --%>
    				<img alt="" src="${pageContext.request.contextPath}/resources/images/<%=rs.getString("filename") %>" style="width:100%">
    				<h3><%=rs.getString("pname") %></h3>
    				<p><%=rs.getString("description") %></p>
    				<p><%=dfFormat.format(Integer.parseInt(rs.getString("unitprice"))) %>원</p>
    				<p><a href="./product.jsp?id=<%=rs.getString("productId") %>" 
    				class="btn btn-secondary" role="button">상세 정보 &raquo;</a></p>
    			</div>			 
    			<%
    				}
    				if(rs != null) rs.close();
    				if(pstmt != null) pstmt.close();
    				if(conn != null) conn.close();
    			%>
    		</div>
    		<hr>
    	</div>
    	
    	<jsp:include page="footer.jsp"/>
    </body>
    </html>

    정상적으로 실행됨 DB에서 읽어온 화면

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading