@GetMapping("/members/new")
public String createForm() {
return "members/createMemberForm";
}
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
http://localhost:8080/members/new 라는 요청이 들어온다면
createForm() 메소드가 호출되면서 members/createMemberForm이라는 파일로 이동시켜준다.
createMemberForm.html

-화면 창-
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<form action="/members/new" method="post">
<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에서 정한 /members/new로 post 방식으로 전송하게 된다.
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
-controller-
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
-MemberForm-
createMemberForm에서 입력된 name은 MemberForm 안에 들어있는 상태로
controller로 이동하여 create()메소드를 호출하게 된다.
메소드 안에서 form으로 전달받은 name을 꺼내 객체로 생성한 member에 setName으로 넣어주고
memberService에 join으로 member를 전달한다.
이후 이전 페이지로 이동
개념정리
get방식과 post방식의 차이
Get: GET 은 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드
Post: POST는 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용 되는 메서드
GET 과 POST 의 차이점
사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
DB로 따지면 GET은 SELECT 에 가깝고, POST는 Create 에 가깝다고 보면 된다.
요청에 body 유무 : GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.
멱등성 (idempotent) : GET 요청은 멱등이며, POST는 멱등이 아니다.
멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
출처 :
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[네트워크] get 과 post 의 차이