사용자로부터 폼데이터를 받고 컨트롤러에서 확인하기.
< form > 태그에 담긴 데이터를 폼데이터라고 한다.
: 인터넷 게시판에 글을 쓰면 폼데이터에 담긴다.
컨트롤러가 폼데이터를 받고 DTO라는 객체에 담는다.
(DB로 보내기는 생략)
클라이언트가 데이터 입력 > 서버의 컨트롤러가 데이터를 받아 DTO객체에 추가. > DTO 객체 확인해보기
뷰 페이지에 폼 태그를 통해 폼 데이터를 설정해준다.
폼 데이터에는 어디로, 어떻게 보낼지 정보를 포함해야 한다.
어디로 보낼지는 action = "/articles/create
어떻게 보낼지는 method = "post" 방식
(method는 post 또는 get 방식이 있다.)
또한 input과 textarea 값의 name을 지정한다.
(dto객체에서 선언한 필드와 동일한 이름의 name 값으로..)
나머지는 디자인 부분..
<!--templates/articles/new.mustache-->
{{>layout/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>
</form>
{{>layout/footer}}
뷰 페이지를 보여주는 메소드
//ArticleController.java
@GetMapping("/articles/new")
public String newArticleForm(){
return "articles/new";
}
폼 데이터를 받는 메소드
post 방식이므로 @PostMapping
//ArticleController.java
@PostMapping("/articles/create")
public String createArticle(ArticleForm form){
System.out.println(form.toString());
return "";
}
폼 데이터를 받는 DTO 객체 만들기
두개의 입력받을 데이터가 있으므로 두개의 필드 title, content
데이터가 잘 받아졌는지 확인하기 위해서 generate>toString 메소드도 추가 해준다.
컨트롤러의 메소드가 파라미터를 통해 DTO객체를 받아와서 폼데이터를 확인할 수 있다.
//폼데이터를 받아올 그릇이다. /dto/ArticleForm.java
public class ArticleForm {
private String title;
private String content;
public ArticleForm(String title, String content){
this.title = title;
this.content = content;
}
//toString 추가...
}
폼태그를 통해 where, how, name을 지정한 뷰 페이지를 만들고.
폼데이터를 지정된 주소에 포스트 매핑으로 보낸다.
@PostMapping("/articles/create")
던져진 폼 데이터는 DTO 객체에 담겨진다.