[스프링부트] 3장 게시판 만들고 새 글 작성하기 : Create

May29·2023년 11월 21일
post-thumbnail

목표는 완독 🫠


1. 폼 데이터란 (p98)

  • 폼 데이터 : html form 태그에 실려 전송되는 데이터
  • form 태그에 실려 전송되는 데이터는 컨트롤러가 객체(=DTO)에 담는다
    • DTO : Data Transfer Object


2. 폼 데이터 DTO로 받기(p99~110)

2-1. (기본) View, Controller 만들기

2-1-1. view

  • fri.mustache 파일을 생성한다 (그냥 오늘이 금요일이라 fri로 했다 연습이니까..)
  • 아래처럼 코드를 작성한다
  • 기본 레이아웃은 2장에서 사용했던 것을 사용했다

2-1-2. controller

  • FriController 자바를 생성한다
  • 아래처럼 코드를 작성한다

2-1-3. 확인

  • localhost:8080/fri

2-2. 데이터 전송/받기

2-2-1. 데이터 전송

  • fri 페이지에서 입력한 제목과 내용 데이터를 어디로, 어떻게 보낼지 정한다
    • 어디로 : action="/accept"
    • 어떻게 : method="post"
      • get과 post가 있는데
      • get은 URL 내용을 포함하고, post는 HTML 본문에 포함

2-2-2. 데이터 받기

  • 전송되는 데이터는 컨트롤러의 DTO에 담겨서 받아진다
    • DTO 생성 → View 와 DTO 연결 → 컨트롤러와 DTO 연결

1) DTO 생성

  • FriDTO 자바를 생성한다
  • 아래와 같이 코드를 작성한다
    • 각 전송받을 데이터가 제목과 내용이니까 title과 content로 지정

2) View와 DTO 연결

  • 각 내용이 입력될 곳에 다음과 같이 추가한다

3) 컨트롤러와 DTO 연결

  • FriDTO를 dto로 연결한다
  • FriDTO의 toString() 메서드를 출력한다

4) 확인

  • DTO에 데이터가 잘 담겨져 있는지 확인한다
  • localhost:8080/fri 페이지에서 제목과 내용을 입력하고 Submit 버튼을 누르면 Run 페이지에서 다음과 같이 출력되는걸 볼 수 있다

3. DTO DB에 저장(p111~126)

  • 스프링부트 생성 때 추가한 H2 Database가 DB가 된다
  • DB를 제어할 때 SQL 대신 JPA를 사용한다
    • 스프링부트 생성 때 추가한 Spring Data JPA가 이 역할을 한다
  • DTO를 엔티티로 변환 → 리파지터리로 엔티티를 DB에 저장
    • 엔티티 : 이를 기반으로 테이블이 만들어진다
    • 리파지터리 : 엔티티가 DB 속 테이블에서 관리할 수 있게 한다

3-1. DTO를 엔티티로 변환

3-1-1. 엔티티 자바 파일 생성(클래스 생성)

  • FriEntity 자바 파일 생성
  • 아래와 같이 코드 작성
    • DTO에서 받았던 데이터를 다시 엔티티로 받아온다

3-1-2. DTO 파일에 엔티티 메서드 추가

  • FriDTO 파일에 다음 코드를 추가한다
    • 받은 데이터를 FriEntity(엔티티)로 보낸다

3-1-3. 컨트롤러에 DTO를 엔티티 변환하는 코드 작성

  • FriController에 다음 코드를 추가한다

3-2. 리파지터리로 엔티티를 DB에 저장

  • DTO에서 엔티티로 변환됐고 이 엔티티는 리파지터리로 DB에 저장하고 관리한다

3-2-1. 리파지터리 인터페이스 파일 생성

  • FriRepository 인터페이스 파일 생성
  • FriRepository 파일에 다음과 같이 코드를 추가한다
    • CrudRespository로 DB에 데이터를 생성, 읽기, 수정, 삭제 등 기본 동작을 사용할 수 있다
  • FriController 파일에 다음과 같이 코드를 추가한다

3-3. 확인

  • localhost:8080/fri 에서 제목과 내용을 입력하고 출력값을 확인해 본다
    • 첫째줄 : DTO가 받은 데이터
    • 두번째줄 : DTO에서 엔티티로 변환된 후
    • 세번째줄 : DB에 저장된 데이터 출력
  • 웹에서 데이터를 입력받으면 DTO가 받고 엔티티로 변경하고 리파지터리를 이용해서 DB에 저장한다
    • 근데 왜 DTO에서 엔티티로 변경하는 과정을 거쳐야 하는 거지?

4. DB 조회(p127~133)

1) application.properties에서 다음과 같이 추가한다

  • 첫번째 줄에 있는 거는 웹에서 한글이 ??로 출력되면 추가하는 거다

2) localhost:8080/h2-console 에 접속

  • JDBC URL에는 매실행마다 값을 찾아서 넣어줘야 한다
  • RUN 탭에서 ctrl+f로 jdbc를 찾아서 'jdbc:h2:mem: ~'으로 되는 걸 붙여넣는다
  • 그리고 Connet를 누른다

3) 확인

  • localhost:8080/fri에서 제목과 내용을 입력하면
    • 값이 실시간으로 추가되는걸 볼 수 있다(물론 Run을 눌러야)

끝!🥳🥳

profile
안녕하세요 좋은날입니다

0개의 댓글