2 minute read

JSP - 8 (중요!!!)

  • 통합 개발 환경(이클립스)과 데이터베이스(MySQL) 연동
  • JDBC로 데이터베이스와 JSP 연동



이클립스<->DB 연동

  • 이클립스에서 DB 직접 제어
    • 이클립스에서 제공하는 Data Source Explorer 뷰 사용
    • 쿼리문 작성 및 수행 자유롭게
    1. 데이터베이스 추가
      • (1) MySQL root 계정 접속
      • (2) 데이터베이스 생성

        create database JSPBookDB;

    1. 데이터베이스 커넥션 설정
      • (1) 이클립스 - Data Source Explorer 뷰
      • (2) 뷰에서 Database Connection - New 선택
      • (3) Connection Profile Types - MySQL
      • (4) Specity a Driver… - New Driver Definition
      • (5) New Driver Definition, 각 탭마다 설정
        • Name/Type 탭 - MySQL JDBC Driver 5.1
        • JAR List 탭 - 기존 드라이버 Remove/Add - ‘mysql-connector-java-8.0.29.jar’
        • Properties 탭 - MySQL에서 생성한 DB 이름, 설정한 포트, 계정 등 입력 후 OK
      • (6) Test Connection 확인 후 Finish
    1. 데이터베이스 제어
      • 만들어진 DB에서 ‘Open SQL Scrapbook’
      • 스크랩북 이용해서 쿼리문 작성 및 저장

        이클립스에서 쿼리문 실행 = 내용 드래그 후 ‘Alt + x’






JDBC로 DB<->JSP 연동 - 1. JDBC 개요

  • JDBC(Java DataBase Connectivity)
    • 자바/JSP 프로그램 내에서 DB와 관련된 작업을 할 수 있는 자바 표준 인터페이스
    • 관계형 DB 시스템에 접근, SQL문 실행하기 위한 자바 API or 라이브러리
  • JDBC 사용한 JSP<->DB 연동 단계
    • (1) java.sql.* 패키지 임포트
    • (2) JDBC 드라이버 로딩
    • (3) DB 접속을 위한 Connection 객체 생성
    • (4) Statement / PreparedStatement / CallableStatement 객체 생성
    • (5) 쿼리 실행
    • (6) 실행의 결과 값 사용
    • (7) 사용된 객체 (Statement / PreparedStatement …) 종료



JDBC로 DB<->JSP 연동 - 2. JDBC 드라이버 로딩 및 DBMS 접속

  • JDBC 드라이버 로딩 (드라이버 인터페이스 구현)
    • Class.forName() 메서드 사용
    • 자동으로 객체 생성
    • DriverManager 클래스에 등록
  • Connection 객체 생성
    • DriverManager 클래스의 getConnection() 메서드 사용
    • ex.1 static Connection getConnection(String url)
    • ex.2 static Connection getConnection(String url, String user, String password)
    • ex.3 static Connection getConnection(String url, Properties info)
  • 데이터베이스 연결 닫기
    • 생성한 Connection 객체, close() 메서드로 해제
  • 드라이버 로딩 및 DBMS 접속 예(ex.)

connectionExample



JDBC로 DB<->JSP 연동 - 3. 데이터베이스 쿼리 실행

  • 알아두기!
    • 쿼리 실행 객체는 Statement, PreparedStatement, CallableStatement
    • 쿼리 실행 성공/실패 여부와 상관없이, 실행객체와 Connection 객체의 리소스는 해제해야 함!
  • Statement 객체로 데이터 접근
    • 정적인 쿼리에 사용
    • 한 객체당 하나의 쿼리만 사용 후 해제!
    • 간단한 쿼리문에 사용
stmt 메서드 반환형 설명
executeQuery(String sql) ResultSet 객체 SELECT문 실행
executeUpdate(String sql) int 삽입, 수정, 삭제 관련 SQL문 실행
close() void Statement 객체 반환


  • stmt ex 1-1. 데이터베이스 커넥션 설정

dbConnection

  • stmt ex 1-2. 테이블 생성

createTable

  • stmt ex 1-3. 프로젝트 실행 코드

insertProcess

  • stmt ex 1-4. insert 결과

insertResult2

insertResult




  • PreparedStatement 객체로 데이터 접근
    • 동적 쿼리에 사용
    • 하나의 객체로 여러 번의 쿼리 실행 가능
    • 쿼리문에, 정해지지 않은 값은 물음표(?)로 표시하여 사용
    • 매개변수가 많아 쿼리문을 정리해야 할 때 유용
    • setXxx() 메서드
      • 물음표(?)에 값을 할당!
      • setString/setInt/setLong/setObject…(int 위치값, 각 데이터형 변수X)
pstmt 메서드 반환형 설명
executeQuery() ResultSet 객체 SELECT문 실행
executeUpdate() int 삽입, 수정, 삭제 관련 SQL문 실행
close() void PreparedStatement 객체 반환




JDBC로 DB<->JSP 연동 - 4. 쿼리문 실행 결과 값 가져오기

  • ResultSet 객체
    • SELECT 쿼리문의 실행 결과 값 가져옴






과제

  • 15, 16단원 연습문제 / ~7/22(금)까지

  • 이형록_220526_JSP과제

  • 내용

    • 1~3번
      • 교재 읽고 답 찾기
      • 메모장에 타이핑
    • 4~6번
      • 교재 읽고 실습
      • 기본 소스 임포트 해서 확인
    • 7번
      • Book Market Mall 만들기 - 정답 소스 없음 (구글에 검색!!)
      • 수업용 예제, ‘Web Market Mall’ 참고!






점점 어렵다.. 잘 이해가 안된다..

번외 과제 있음 => ‘상품 상세 정보’ 화면에서 이상한 점 확인 및 수정 (힌트: DB)

Updated: