반응형

 

오늘은 스프링 부트에서 웹 폼(form) 데이터를 DTO(Data Transfer Object)로 받는 방법에 대해 알아보겠습니다.

● 폼 데이터(Form Data): 웹 페이지에서 사용자가 입력한 데이터를 서버로 전송하기 위한 형식을 의미합니다.

● DTO(Data Transfer Object)는 서버와 클라이언트 간에 데이터를 효율적으로 전송하기 위해 사용하는 객체를 말합니다.

 

1. 뷰페이지 생성

{{>layouts/header}}

<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">
    </div>

    <div class="mb-3">
        <label class="form-label">내용</label>
        <textarea class="form-control" rows="3" name="content"></textarea>
    </div>

    <button type="submit" class="btn btn-primary">제출</button>
    <a href="/articles">Back</a>
</form>

{{>layouts/footer}}

뷰페이지를 생성하고 <form> 태그의 action 속성으로 데이터를 어디에 보낼지 정의하고 method 속성으로 데이터를 어떻게 보낼지 정의합니다.

 

2. 컨트롤러 생성

@Controller
public class ArticleController {

    // 폼 페이지 보여주기
    @GetMapping("/articles/new")
    public String newArticleForm() {
        return "articles/new";
    }

    // 폼 데이터 받기
    @PostMapping("/articles/create")
    public String createArticle(ArticleForm form) {
        System.out.println(form.toString());   // 잘 담겼는지 확인
        return "";
    }
}

PostMapping 방식으로 URL주소를 연결합니다

 

3. DTO 생성

// 폼데이터를 받아올 그릇
public class ArticleForm {

    private String title; // 제목 받을 필드
    private String content; // 내용 받을 필드

    public ArticleForm(String title, String content) {
        this.title = title;
        this.content = content;
    }

    @Override
    public String toString() {
        return "AticleForm{" +
                "title='" + title + '\'' +
                ", content='" + content + '\'' +
                '}';
    }
}

 

전송받은 데이터를 담아둘 객체인 DTO를 만들면 컨트롤러에서 폼데이터를 전송받아 DTO에 담습니다.

 

반응형
JoonYong