Back-end/Spring boot

Form data 주고받기, JPA로 데이터 생성하기 ( 게시판 만들기 시작 )

Coding Kitsune 2022. 6. 23. 17:59

지금까지 배운것과 함께 CRUD 정도를 구현할 수 있는 게시판 만들기를 구현해보고자 한다.

 

CREATE 를 위해서 폼 태그를 알아보아야 한다.

 

<form> 에서 어디로 어떻게 보낼지를 적어 전송되고 컨트롤러는 이를 객체에 담아 받는다.

 

이 때 폼 데이터를 받는 객체를 DTO 라고 한다.

 

 

 

 

사용자의 입력이 DB 라는 창고에 저장이 되야한다.

 

우선 데이터를 받아서 확인하는 것부터 연습해보자,

 

templates 안에 article이라는 폴더를 만들어 그 안에 게시판 글을 입력 받는 new.mustache를 작성,

 

입력폼을 간단하게 만들고, 이를 제어할 수 있는 컨트롤러를 만든다.

 

부트스트랩으로 간단하게 받아와서 입력창을 만들어주었다.

 

form 태그를 던질 때 두가지를 적어줘야하는데, 어디로 보낼지  / 어떻게 보낼지 이다.

 

어디로 보낼지 -> action=""

 

어떻게 보낼지 -> method=""

 

{{>layouts/header}}
<form class="container" action="/articles/create" method="post">
    <div class="mb-3">
        <label class="form-label">titles</label>
        <input type="text" class="form-control" name="title">
    </div>
    <div class="mb-3">
        <label class="form-label">content</label>
        <textarea class="form-control" rows="3" name="content"></textarea>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
    <a href="/articles">Back</a>
</form>
{{>layouts/footer}}

 

 

그 후 컨트롤러에 새롭게 메소드를 추가해줘야한다.

 

기존의 겟매핑이 아닌 포스트매핑으로 받아야한다.

 

우리가 POST 방식으로 보내기로 정했기 때문,

 

이제 이 객체를 dto 로 만들어줘야하고 이를 만들어줘야한다.

 

기본패키지에 dto 라는 새로운 패키지를 추가해준다.

 

그 안에 ArticleForm이라는 클래스를 생성해준다.

 

두개의 data를 던졌으니 두개의 필드를 선언해줘야한다.(title, content)

 

생성자를 추가해줘야하는데, 추후에 롬복을 통해 이 과정도 생략이 가능하다.

 

@AllArgsConstructor
@ToString
public class ArticleForm {

    private String title;
    private String content;

    public Article toEntity() {
        return new Article(null, title, content);
    }
}

 

여기까지 작업이 이루어지면 폼태그를 통해 dto에 실어서 데이터를 db 직전까지 보내는

 

과정이 이루어진다.