⏳ Time Log/1. One Day (Daily · TIL)

Day 21 (11/17) - SQL 기초

this.Serena 2026. 2. 19. 00:08

📝 오늘의 강의 요약

핵심 키워드: MySQL 환경 설정, JSP/Servlet 파일 업로드, cos.jar, DAO/VO 패턴, 서버 실제 경로(RealPath)

  • MySQL: 8.0 버전 설치, 환경변수 설정 및 데이터베이스/테이블 제어 명령어 실습
  • JSP/Servlet: MultipartRequest를 이용한 첨부파일 처리 및 서버 저장 경로 확인
  • 프로젝트 구조: DAO(데이터 접근), VO(데이터 객체), DB, SQL 간의 유기적 관계 정립
  • 주의사항: 데이터베이스 컬럼명과 자바 필드명의 대소문자 구분 및 일치 작업 필수

☕ JSP & Servlet: 파일 업로드 핵심

1. 파일 업로드 환경 구축

  • 라이브러리: cos.jar (MultipartRequest 클래스 사용을 위해 WEB-INF/lib에 추가)
  • 인코딩 설정: multipart/form-data 형식을 사용할 경우 request.setCharacterEncoding 외에 별도의 처리 필요
  • 저장 경로: 이클립스 메타데이터 내 임시 서버 경로(wtpwebapps)에 저장되므로 context.getRealPath("upload")로 확인

2. MultipartRequest 활용 (doPost)

  • 역할: 일반 파라미터와 파일 데이터를 동시에 처리하는 객체
  • 필수 설정 요소:
    • request: 요청 객체
    • path: 서버 내 실제 저장 경로
    • sizeLimit: 최대 업로드 용량 설정 (예: 20MB = 20*1024*1024)
    • encType: 인코딩 방식 (주로 utf-8)
    • DefaultFileRenamePolicy: 중복 파일명 발생 시 자동으로 이름 변경 (예: file1, file2)

🐬 MySQL 환경 구축 및 DB 연동

1. 설치 및 초기 설정

  • 설치 경로: Program Files\MySQL\MySQL Server 8.0\bin을 시스템 환경변수 PATH에 등록
  • 접속 및 DB 생성:
    • mysql -u root -p: 관리자 접속
    • create database edudb;: 신규 데이터베이스 생성
    • use edudb;: 사용할 데이터베이스 선택

2. 테이블 제어 명령어 (SQL)

  • DESC 테이블명: 테이블 구조(컬럼, 타입, PK 여부 등) 확인
  • ALTER TABLE: 기존 테이블에 새로운 컬럼 추가 (ADD 키워드 사용)
  • AUTO_INCREMENT: 데이터 삽입 시 번호가 1씩 자동으로 증가하는 속성 (오라클의 Sequence 역할)
  • Primary Key (PK): 데이터 무결성을 위한 중복 불가, NULL 불가 제약 조건

🗂️ 핵심 개념 및 구조 정립

1. 웹 애플리케이션 계층 구조

  • VO (Value Object): 데이터를 담는 바구니 (DB 컬럼과 매칭되는 필드 보유)
  • DAO (Data Access Object): 데이터베이스에 직접 접근하여 CRUD(생성, 조회, 수정, 삭제) 수행
  • Servlet (Controller): 사용자 요청을 받아 DAO를 호출하고 결과를 JSP로 전달
  • JSP (View): 처리된 결과를 사용자 화면에 출력

2. 명명 규칙 주의사항

  • Case Sensitivity: DB 컬럼명(pictureurl)과 Java VO 필드명(pictureUrl)이 다를 경우 데이터 매핑 오류 발생 가능성 존재
  • Form Action: JSP 내 form 태그에 action이 없을 경우, 직전에 호출했던 서블릿 주소로 재요청이 전송됨

🛠️ 실습 메모 및 트러블슈팅

  • 파일 경로 확인: 콘솔창에 찍히는 path를 통해 실제 파일이 업로드되는 물리적 위치 파악 가능
  • MySQL 팁: CMD 창에서 화면이 복잡할 때 \! cls 명령어로 화면 정리 가능
  • 인코딩: 한글 깨짐 방지를 위해 utf-8 설정이 서블릿과 JSP, DB 모두 일치하는지 상시 확인