📝 오늘의 강의 요약
핵심 키워드: 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 모두 일치하는지 상시 확인
'⏳ Time Log > 1. One Day (Daily · TIL)' 카테고리의 다른 글
| Day 23 (11/19) - JSP 게시판 프로젝트: DB 연동 및 커맨드 패턴의 이해 (0) | 2026.02.19 |
|---|---|
| Day 22 (11/18) - 팀 프로젝트의 시작: 리액트 기초와 JSP/MySQL 심화 정리 (0) | 2026.02.19 |
| Day 20 (11/14) - JSP/Servlet 파일 업로드 구현 (0) | 2026.02.19 |
| Day 19 (11/13) - JSP 심화 (0) | 2026.02.19 |
| Day 18 (11/12) - JSP 기초 (0) | 2026.02.19 |