커맨드 객체란?

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}
반응형

'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