[Spring] @PostMapping

hkkm·2021년 4월 19일
0

다음과 같이 작성된 html 페이지가 있다가 쳐보자.


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>createMemberForm</title>
</head>
<body>

<div class="container">
  <form action="/members/new" method="post"> <!--post 방식으로 데이터를 넘기면 @PostMapping으로 연결된다.
  단순히 url을 입력하는 방식은 @GetMapping으로 넘어간다.-->
    <div class="form-group">
      <label for="name">이름</label>
      <input type="text" id="name" name="name" placeholder="이름을 입력하세요">
    </div>
    <button type="submit">등록</button>
  </form>
</div> <!--container-->
</body>
</html>

실제 모습은 아래와 같다.

위 코드의 form은 "post" 방식이다.
Spring은 이에 따라서 Controller 중에서 "/members/new" 인자를 가지고 있는 @PostMapping을 찾는다.

    @PostMapping("/members/new")
    public String create(MemberForm form) {
        Member member = new Member();
        member.setName(form.getName());

        memberService.join(member);

        return "redirect:/";
    }

Spring이 form을 통해서 위와 같은 method를 찾았다고 가정해보자.

MemberForm class는 String name이라는 Field 변수를 가지고 있다. 물론 MemberForm에 getter, setter가 구현되어 있어야한다.

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

html 코드에서 <form> 태그 안에는 <input>이라는 element가 있다.
이는 'name'이라는 attribute를 가지고 있다.

이는 post 방식으로 데이터를 넘길 때, MemberForm form의 'name'의 값으로 user가 입력한 값이 값이 들어간다는 것을 의미한다.

이런식으로 Post 방식이 작동한다.

0개의 댓글