기록과 정리

Form을 이용한 POST 데이터 전송 본문

IT/FrontEnd

Form을 이용한 POST 데이터 전송

zepetto 2021. 1. 20. 21:37

개발하면서 헷갈렸던 부분이 있어 정리를 해본다.

 

폼을은 클라이언트에서 서버로 정보 (데이터) 를 제공해주는 방법이다.

예시)

- 게시글 작성 후, 서버로 데이터를 전송할 때

- 로그인시 , ID&Password를 서버로 전송할 때

 

전송해주는 방법은 크게 2가지로 나눌 수 있다.

 

1. Form에서 직접 action url 을 지정해줌으로써 서버로 전달.

2. ajax를 이용하여 서버로 전달

Form으로 직접 서버로 전달할 경우 , 'application/x-www-form-urlencoded' 으로 자동 설정된다.

form enctype 옵션 값으로 데이터 전달 타입을 변경할 수 있으나 한정적이며 application/json type이 없다.

이럴 경우 2번의 방법(ajax)으로 서버로 전달을 하는 방법을 사용한다. 그러면 dataType으로 원하는 데이터 전달타입을 기입하여 설정할 수 있다.

 

만약 json 타입의 데이터를 서버로 전송할 경우, 전송받는 컨트롤러에서 @RequestBody 어노테이션으로 받아야한다.

1번의 방법으로 Form 전송시, 클라이언트 단에서 서버로 전송시, input type의 name을 Entity 에서 선언한 변수명과 동일하게 서버로 전송해주도록 한다.

 

 

name을 꼭 명시해주자.

ps) SpringJPA를 사용한다면 Formmater가 자동으로 지원이 되기 때문에 서버사이드에서 매핑을 해주나, 단순히 SpringMvc라면 Formatter를 만들어주어야한다. 위 그림처럼 Board처럼 객체를 받을 경우 SpringJpa를 사용하도록 하자.

정정) @ModelAttribute 어노테이션을 사용하면 복합객체  Board와 같은 Entity 를 View로 부터 받아올 수 있다. 또한 @ReqeustParm과 마찬가지로 @ModelAttribute도 생략가능하다. 그런데 명시적으로 써주는 방법이 덜 헷갈릴것 같다.