홍팍 스프링부트 입문 강의 공부한거 기록함.
모든 내용이 있지 않습니다.
질문글 보니까 강의 제목과 링크를 남기면 괜찮다고 하셔서 강의 링크 올립니다.
1.폼 데이터 주고받기
7강
사용자로부터 폼 데이터를 받고, 이를 컨트롤러에서 확인하시오.
CRUD게시판
Create
Read
Update
Delete
이번 강의 Create- 폼 데이터 주고받기를 할 것이다.
폼 데이터:html 요소인 폼태그에 담긴 데이터
게시판에서 사용한게 폼데이터

택배 상자 보낼때 어디로 보낼지 어떻게 보낼지 적는데 폼 태그도 마찬가지다

폼 태그에 적힌대로 데이터가 전송되고 컨트롤러는 이를 객체에 담아 받는다. 이 객체를 DTO라고 함

게시글을 쓴다는 말은 사용자의 입력이 DB라는 창고에 저장되는 과정이다.

이 페이지를 보기 위해서 컨트롤러 추가

데이터를 입력해도 아무 일도 일어나지 않는다.
폼태그를 던질때 어디로, 어떻게 보낼지를 정해야하는데 그러지 않았기 때문이다.
templates/articles/new.mustache
<form class="container" action="/articles/create" method="post" >
action : 어디로 보낼지 method : 어떻게 보낼지
폼데이터를 받을 수 있게 컨트롤러의 메소드를 추가
1-2 폼 데이터 받기
controller/ArticleController
@PostMapping("/articles/create")
public String createArticles(){
return "";
}
아까 post 방식으로 던지기로 했으니까 Controller에서 GetMapping이 아니라 PostMapping으로 받아와야함
어디로 받을지는 form에서 던져진 /articles/create 를 적는다.

form 데이터를 받아올 그릇인(객체) dto 생성
두개의 데이터를 던졌으니까 두개의 필드가 있어야함
dto/ArticleForm
private String title;
private String content;
//생성자 생성
public ArticleForm(String title, String content) {
//두 개 필드 추가
this.title = title;
this.content = content;
}
//toString 생성
@Override
public String toString() {
return "ArticleForm{" +
"title='" + title + '\'' +
", content='" + content + '\'' +
'}';
}
우클릭>generate>constructor>두개 필드 선택(컨트롤 키 누르면서)
우클릭>generate>toString>두개 필드 선택
데이터가 던져지면 post방식으로 던져지는데
컨트롤러 createArticles 메서드에 파라미터로 dto를 넣어야함
파라미터 작성하면 페이지에 적은 입력값이 파라미터로 던져진다.
<form class="container" action="/articles/create" method="post" >
<div class="mb-3">
<label class="form-label">제목</label>
<input type="text" class="form-control" name="title"> //여기 name="title"
</div>
<div class="mb-3">
<label class="form-label">내용</label>
<textarea class="form-control" rows="3" name="content"></textarea> //여기 name="content"
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
서버를 재실행하고 데이터를 입력하면
ArticleForm{title='null', content='null'} 이렇게 뜨는데
dto/ArticleForm 안에 적은 필드에 값이 안 들어가져서다.
/templates/articles/new.mustache에(form) 변수명을 설정 안해서다.
dto와 동일한 필드명을 입력
input문장과 textarea 두개의 데이터가 dto에 연결되어서 전달된다.
ArticleForm{title='ㅇㅁㄴㄹ', content='123'} 성공
요약
뷰페이지에서 폼태그를 통해 데이터를 보냄 어디로 어떻게
이걸 컨트롤러에서 postmapping으로 url 주소로 받는다.
던져진 폼데이터는 dto 객체에 담겨짐 (파라미터)
2. 데이터 생성하기 with JPA
8강 JPA를 활용하여 DB에 데이터를 생성하시오.
데이터베이스:데이터를 관리하는 창고
Server로 받은 데이터를 DB에 저장해야하는데 Server은 Java 언어고 Database는 SQL 언어를 쓴다.
언어가 다르기때문에 DB는 이해하지 못함 이 둘 사이를 연결해주는게 JPA

JPA 핵심 도구
1)Entity:java객체를 DB가 이해할 수 있게 잘 규격화된 데이터
2)Repository: Entity는 Repository를 통해서 DB에 전달되고 처리됨, db속 테이블에 관리됨

페이지에 작성 후 제출하면 서버에 아래와 같이 저장된다.
ArticleForm{title='가가가가ㅏㄱ', content='11111111'} =>dto에 content(가가가, 1111}가 담겨짐

Article{id=null, title='가가가가ㅏㄱ', content='11111111'} =>entity로 변환돼서 ArticleForm->Article로 변했고

Article{id=1, title='가가가가ㅏㄱ', content='11111111'} =>리파지토리에 아티클 넣도록 했더니 saved 변수에 반환됨 saved 변수 출력했더니 타이틀 콘텐트 똑같은데 id 자동생성돼서 id가 1을 갖게 됨
2. DB 테이블과 SQL
9강 저장된 데이터를 직접 DB에서 확인하기
DB에 저장된 데이터는 테이블이라는 틀에 관리됨 행과 열로 구성


데이터가 기록되면서 생성되고 조회, 수정, 삭제 되기도 함
SQL은 insert select update delete로 이루어짐
h2 DB : 웹 콘솔 접근 허용
DB 접근하기 위한 설정 값

Connect 해도 접근 안됨
JDBC URL이(데이터베이스 접근 주소) 매번 바뀌는데 이 값을 찾아줘야함

컨트롤+f 해서 jdbc 찾아줌
'jdbc:h2가 메모리에서 동작하는데 주소가 이거다' 라는 뜻 이걸 복사해서 JDBC URL에 복사 (' ' 빼고)

메모리모드(바로 위 사진에서 mem 을 말함)에서 돌리고 있기 때문에 서버를 껐다 키면 db가 다 날라감

http://localhost:8080/articles/create 에서 데이터 전송하면 이렇게 저장됨

sql문으로 데이터 삽입

다시 조회해보면 아까 삽입한 데이터가 반영되어 있다.
테이블은 행과 열로 이루어짐
insert문은 하나의 행을 추가하는 문
select문은 테이블 값을 조회하는 문
'Springboot' 카테고리의 다른 글
| 홍팍 스프링부트 6 (0) | 2023.08.03 |
|---|---|
| Spring 홍팍 스프링부트, 입문 강의 기록 3 (0) | 2023.08.03 |
| 홍팍 스프링부트 5 (0) | 2023.08.03 |
| 홍팍 스프링부트 4 (0) | 2023.08.01 |
| 홍팍 스프링부트 강의 정리1 (0) | 2023.07.31 |