• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [JSP] JSP로 CRUD 게시판 만들기 (1) - 패키지 및 DB 생성
        2024년 07월 15일
        • Song hyun
        • 작성자
        • 2024.07.15.:22
        728x90
        반응형

        [JSP] JSP로 CRUD 게시판 만들기 (1) - 패키지 및 DB 생성

         

        1. 다이나믹 웹 프로젝트 및 패키지 만들기

        (1) src/main/java: 컨트롤러, 모델, 레파지토리, 유틸 총 4개의 패키지 생성.

        (데이터베이스 쿼리 전송 및 수정 담당)

        (2) resources 폴더: css, 이미지, js 코드 폴더 생성 (프론트 담당)

        (3) views 폴더: 게시판, 댓글, 로그인 JSP 폴더 생성 (1과 2를 연결, 사용자에게 화면 보여줌)

         

         

        2. 라이브러리 적용하기

        *사용 라이브러리

        -HikariCP 라이브러리

        -Jakarta-JSTL 라이브러리 2개

        -Lombok 라이브러리

        -MySQL connector Java 라이브러리

        -SLF4J 라이브러리 (로깅용)

         

         

         

         

        3. 테이블 설계하기 - MySQL 사용

        (1) users 테이블: 사용자 정보 테이블

        (2) board 테이블: 게시글 테이블

        (3) comments 테이블: 댓글 테이블

        drop database if exists db_tboard;
        create database db_tboard;
        use db_tboard;
        
        -- users 테이블 생성
        create table users (
        	id int auto_increment primary key,
            username varchar(50) not null unique,
            password varchar(50) not null,
            email varchar(50) not null unique,
            created_at timestamp default current_timestamp
        );
        
        -- board 테이블 생성
        create table board(
        	id int primary key auto_increment,
            user_id int,
            title varchar(255) not null,
            content text not null,
            created_at timestamp default current_timestamp,
            foreign key (user_id) references users(id) on delete cascade
        );
        
        create table comments(
        	id int auto_increment primary key,
            board_id int,
            user_id int,
        	content text not null,
            created_at timestamp default current_timestamp,
            foreign key (board_id) references board(id) on delete cascade,
            foreign key (user_id) references users(id) on delete cascade
        );
        
        -- 기존 테이블 삭제 시, auto-increment 초기화
        truncate table comments;
        truncate table board;
        truncate table users;
        
        -- users 테이블에 샘플 데이터 삽입
        INSERT INTO users (username, password, email) VALUES ('user1', 'asd123', 'user1@example.com');
        INSERT INTO users (username, password, email) VALUES ('user2', 'asd123', 'user2@example.com');
        INSERT INTO users (username, password, email) VALUES ('user3', 'asd123', 'user3@example.com');
        
        -- board 테이블에 샘플 데이터 삽입
        INSERT INTO board (user_id, title, content) VALUES (1, '자바의 장점', '자바는 플랫폼 독립적이며, 풍부한 라이브러리를 제공합니다.');
        INSERT INTO board (user_id, title, content) VALUES (2, '파이썬과 머신러닝', '파이썬은 머신러닝에 최적화된 언어로, 다양한 라이브러리를 지원합니다.');
        INSERT INTO board (user_id, title, content) VALUES (3, '자바스크립트와 웹 개발', '자바스크립트는 웹 개발의 핵심 언어로, 프론트엔드와 백엔드 모두에서 사용됩니다.');
        
        INSERT INTO board (user_id, title, content) VALUES (1, 'Spring 프레임워크', 'Spring은 자바 기반의 강력한 애플리케이션 프레임워크입니다.');
        INSERT INTO board (user_id, title, content) VALUES (2, 'Django를 활용한 웹 개발', 'Django는 파이썬 기반의 웹 프레임워크로, 빠른 개발이 가능합니다.');
        INSERT INTO board (user_id, title, content) VALUES (3, 'React로 인터랙티브 웹 만들기', 'React는 사용자 인터페이스 구축을 위한 자바스크립트 라이브러리입니다.');
        
        INSERT INTO board (user_id, title, content) VALUES (1, 'JSP와 서블릿', 'JSP와 서블릿을 사용하여 동적인 웹 페이지를 개발할 수 있습니다.');
        INSERT INTO board (user_id, title, content) VALUES (2, 'Flask의 장점', 'Flask는 가벼운 파이썬 웹 프레임워크로, 유연성과 확장성이 뛰어납니다.');
        INSERT INTO board (user_id, title, content) VALUES (3, 'Node.js로 서버 개발', 'Node.js는 자바스크립트를 사용하여 서버 측 애플리케이션을 개발할 수 있습니다.');
        
        INSERT INTO board (user_id, title, content) VALUES (1, '첫 게시글 작성', '첫 게시글을 작성했습니다. 앞으로 자주 올리겠습니다.');
        INSERT INTO board (user_id, title, content) VALUES (2, '두 번째 게시글', '두 번째 게시글입니다. 댓글 많이 달아주세요.');
        INSERT INTO board (user_id, title, content) VALUES (3, '안녕하세요', '안녕하세요, 오늘도 즐거운 하루 되세요.');
        
        -- comments 테이블에 샘플 데이터 삽입
        INSERT INTO comments (board_id, user_id, content) VALUES (1, 2, '자바의 장점에 대해 잘 읽었습니다.');
        INSERT INTO comments (board_id, user_id, content) VALUES (1, 3, '좋은 글 감사합니다.');
        INSERT INTO comments (board_id, user_id, content) VALUES (2, 1, '파이썬과 머신러닝에 관한 글 잘 봤습니다.');
        INSERT INTO comments (board_id, user_id, content) VALUES (2, 3, '유익한 정보 감사합니다.');
        INSERT INTO comments (board_id, user_id, content) VALUES (3, 1, '자바스크립트에 대해 더 알고 싶습니다.');
        INSERT INTO comments (board_id, user_id, content) VALUES (3, 2, '도움이 많이 되었습니다.');
        
        select * from users;
        select * from board;
        select * from comments;
        
        drop table users;
        drop table board;
        drop table comments;
        
        select*from comments;
        delete from users where id=1;
        
        desc users;

         

        *CASCADE란?

        ->CASCADE는 데이터베이스 관리 시스템에서 외래 키 제약 조건을 설정할 때 사용되는 옵션 중 하나이다. 이 옵션은 참조 무결성을 유지하기 위해, 부모 테이블의 행이 변경될 때 자식 테이블의 행이 자동으로 동일한 변경을 적용하게 만든다.

         

        ->CASCADE의 종류

        (1) ON DELETE CASCADE

        : 부모 테이블에서 행이 삭제될 때, 해당 행을 참조하는 모든 자식 테이블의 행들도 자동으로 삭제된다.

         

        (2) ON UPDATE CASCADE

        : 부모 테이블의 기본 키 값이 업데이트 될 때, 해당 기본 키를 참조하는 자식 테이블의 외래 키값도 자동으로 업데이트 된다.

        728x90
        반응형

        'JSP' 카테고리의 다른 글

        [JSP] JSP로 CRUD 게시판 만들기 (3) - JSP 파일 및 로그인 기능 만들기  (1) 2024.07.15
        [JSP] JSP로 CRUD 게시판 만들기 (2) - DB 접근 기술  (0) 2024.07.15
        [JSP] 55. JSTL을 사용하여 CRUD 프로그램 만들기  (0) 2024.07.12
        [JSP] 54. JSTL 라이브러리의 사용  (0) 2024.07.12
        [JSP] 53. JSTL 라이브러리의 설치 및 적용  (0) 2024.07.12
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바