학습목표
Project의 구조 및 기능에 대해 설명할 수 있다.
SQL 문에 대해 설명할 수 있다.
프로젝트 개요
- 회원모듈
- 회원가입
- 로그인
- 로그아웃
- 게시판 모듈
- 글쓰기
- 글 목록
- 글 상세 보기 및 수정
- 글 삭제(관리자)
System
H2 Database
- https://www.h2database.com
- 자바(Java) 기반의 오픈소스 관계형 데이터베이스
- 브라우저 기반의 콘솔 모드 제공
- 저용량의 가볍고 빠른 데이터베이스
- 표준 SQL 지원
- 애플리케이션 개발 DB로 많이 이용 (실전 응용프로그램의 DB로 이용하기엔 부적절함)
SQL(Structured Query Language)
DB에 데이터를 정의, 조작, 제어하기 위해 사용하는 명령어
- DDL(Data Definition Language)
- DB를 생성하거나 테이블을 만들고 조작하는 언어
- CREATE : DB, 테이블 생성
- ALTER : 테이블 수정
- DROP : DB, 테이블 삭제
- DB를 생성하거나 테이블을 만들고 조작하는 언어
- DML(Data Manipulation Language)
- DB에 저장된 데이터를 조회하거나 조작하는 언어
- SELECT : 데이터 조회
- INSERT : 데이터 저장
- UPDATE : 데이터 수정
- DELETE : 데이터 삭제
- DB에 저장된 데이터를 조회하거나 조작하는 언어
- DCL(Data Control Language)
테이블(TABLE)
관련된 데이터가 있는 공간
- 행(ROW)과 열(COLUMN)로 구성
SELECT
테이블에 저장된 데이터 검색
명령어 획득할 컬럼 예약어 테이블명
- SELECT name, address FROM users
- SELECT * FROM users : users 테이블의 모든 데이터
- SELECT * FROM users WHERE id=1 : WHERE - 조건, column의 값이 1인 데이터
INSERT
테이블에 데이터 저장
명령어 예약어 테이블명 컬럼명 예약어 데이터
- INSERT INTO users(name, address) values("test", "seoul")
- INSERT INTO users values(1, "test", "seoul") : users 테이블의 모든 컬럼에 데이터 저장
UPDATE
테이블에 데이터 수정
명령어 테이블명 예약어 컬럼명 데이터 조건
- UPDATE users SET address="busan" WHERE id=1
- UPDATE users SET address="seoul", role="user" WHERE id=1 // 한꺼번에 여러 컬럼 업데이트
DELETE
테이블에 데이터 삭제
명령어 예약어 테이블명 조건
- DELETE FROM users WHERE id=1
실습
게시판 기능 프로젝트, 회원가입 받기 → 가입 정보 인증 처리 → 글 게시 및 조회
이 기능을 제공하기 위해서는 회원 가입했던 내용 및 작성 내용이 저장되어 있어야 함
--> 데이터 저장을 위해 DB 사용 (H2 DB)
H2 콘솔에서 URL 로컬 호스트로 지정
회원가입 정보 저장을 위한 테이블, 게시글 저장을 위한 테이블이 필요
USERS 테이블에 ID, PASSWORD, NAME, ROLE 컬럼 확인 가능
INSERT INTO USERS VALUES ('admin', 'admin', 'admin', 'Admin')
INSERT INTO USERS VALUES ('guest', 'guest', 'guest', 'User')
데이터 추가/확인
게시판에 등록되는 글을 저장하기 위한 테이블 Board 생성
CREATE TABLE BOARD (
SEQ NUMBERS(5) PRIMARY KEY,
TITLE VARCHAR2(200),
WRITER VARCHAR2(20),
CONTENT VARCHAR2(2000),
REGDATE DATE DEFALUT SYSDATE
)
유저가 입력한 게시판에 제목, 본문내용을 저장하기 위한 컬럼
근데 SYSDATE not found 에러가 떠서 뭐지? 하면서 찾아봤는데 sysdate가 H2 업데이트되면서 막힌 것 같다고 now는 된다고해서 now로 했더니 됐다
CREATE TABLE BOARD (
SEQ NUMBER(5) PRIMARY KEY,
TITLE VARCHAR2(200),
WRITER VARCHAR2(20),
CONTENT VARCHAR2(2000),
REGDATE DATE DEFAULT NOW()
)
테스트용으로 하나의 데이터만 INSERT
INSERT INTO BOARD (SEQ, TITLE, WRITER, CONTENT) VALUES(1, 'hello', 'guest', 'helloworld...')
미니 게시판을 만들기 위해 완전히 새로운 프로젝트를 만들고 진행
Eclipse -> File -> New -> Dynamic Web Project
Generate web.xml deployment descriptor 체크
JSTL Library 데이터베이스 연동을 위한 JDBC Driver 등이 필요함
이전에 만든 프로젝트에서 WEB-INF/lib 안에 있는 jstl 복사해서 현재 프로젝트에 붙여넣기
JDBC 드라이버는 이용하고자 하는 데이터베이스에 따라 Library가 상이함
--> H2 DB를 사용하면 H2 DB를 위한 JDBC 드라이버가 필요
H2 DB가 설치된 디렉토리 -> bin -> jar 파일이 JDBC 드라이버임
jar파일도 WEB-INF 폴더에 복사
'온라인 강좌 > JSP & Servlet 활용' 카테고리의 다른 글
20차시 Project - 인증 (0) | 2023.07.05 |
---|---|
19차시 Project - 회원등록 (1) | 2023.07.05 |
17차시 Spring Boot (0) | 2023.07.04 |
16차시 MVC Model (0) | 2023.07.04 |
15차시 Custom Tag (0) | 2023.07.03 |