728x90
커맨드 객체란?
- 클라이언트가 전달해주는 파라미터 데이터를 주입 받기 위해 사용되는 객체
<form action="test" method="post">
data1 : <input type="text" name="data1"/>
data2 : <input type="text" name="data2"/>
<button type="submit">확인</button>
</form>
이런 폼으로 데이터를 전송(post)하면
@PostMapping으로 맵핑이 되어 실행된다. 이때 MemberDTO 객체로 주입을 받는걸로 되어있다.
@PostMapping("/test")
public String test(@ModelAttribute MemberDTO member){
member.getData1();
member.getData2();
}
이 때 MemberDTO 라는 클래스를 만들어야 한다. 이 클래스를 커맨드 객체라고 한다.
public class MemberDTO{
private String data1;
private String data2;
public String getData1() {
return data1;
}
public void setData1(String data1) {
this.data1 = data1;
}
public String getData2() {
return data2;
}
public void setData2(String data2) {
this.data2 = data2;
}
}
이 MemberDTO라는 클래스는 data1과 data2를 주입받을 수 있다.
form으로 전송된 데이터들이 이 커맨드 객체에 담겨져 컨트롤러로 전송되게 된다.
@ModelAttribute 어노테이션을 사용하여 주입받은 객체는 request에 담겨서 return으로 전달하겠다를 의미한다.
그래서 따로 request를 해주지 않아도 전달이 된다.
출력
<h1>test</h1>
data 1 : ${requestScope.memberDTO.data1}
data 1 : ${requestScope.memberDTO.data2}
MemberDTO로 담겨져 전달되지만 출력시엔 첫글자는 대문자가 아닌 소문자로 해야한다.
* request 이름을 직접 지정도 가능하다.
@PostMapping("/test")
public String test(@ModelAttribute("testData") MemberDTO member){ //이때는 생략불가능
}
<h1>test</h1>
data 1 : ${requestScope.testData.data1}
data 1 : ${requestScope.testData.data2}
728x90
'Back-End > Spring(Boot)' 카테고리의 다른 글
스프링 Redirect / Forward (0) | 2021.03.06 |
---|---|
스프링 Form 커맨드 태그 (0) | 2021.03.05 |
스프링 ViewResolver (0) | 2021.03.05 |
객체로 파라미터 주입받기 (0) | 2021.03.05 |
스프링 파라미터 추출 (0) | 2021.03.05 |