본문 바로가기
Spring/Spring MVC 5

커맨드 객체

코동이 2020. 5. 25.

*커맨드 객체

클라이언트가 전달해 주는 파라미터 데이터를 주입 받기 위해 사용하는 객체이다.

 

당연하게도, 객체를 사용하기 위해서는 새로운 클래스를 만들어야 한다.

이 객체의 변수명과 클라이언트가 전달해 주는 변수이름이 같아야 한다.

 

커맨드 객체는 자동으로 HttpServletRequest 객체에 담긴다. 따라서 jsp로 자동으로 전달된다.

<index.jsp>

<form action="test1" method="get">
	data1: <input type="text" name="data1" /><br/>
    data2: <input type="text" name="data2" /><br/>
</form>

=========================================================
<TestController.java>

@GetMapping(@ModelAttribute DataBean bean){
	System.out.println(bean.getData1());
    System.out.println(bean.getData2());
	return "test";
}

==========================================================
<test.jsp>

<h1>test</h1>
<h3>data1 : ${requestScope.dataBean.data1}</h3>
<h3>data2 : ${requestScope.dataBean.data2}</h3>

data1과 data2에 대한 정보가 파라미터로 넘어올 때

@ModelAttribute로 받으면, 별도의 Request 객체 사용 없이 바로 jsp에 넘길 수 있다.

사용법은 class명의 맨 앞의 대문소를 소문자로 바꿔서 [class 이름.변수이름]이다.

 

즉, data1=100&data2=200으로 파라미터가 넘어왔다면,

DataBean 클래스의 setData1(), setData2()가 자동으로 작동하게 된다.

 

Controller에서 bean에 대한 정보를 출력하고 싶다면 getData()1, getData2()를 이용하면 된다.

 

혹시, 기존 class 이름 이외에 다른 class 이름을 사용하고 싶다면 @ModelAttribute("이름")을 추가한다.

객체의 이름이 Bean의 class 이름을 따라가므로 객체 이름을 변경하고 싶을 때 @ModelAttribute("이름")을 사용한다.

 

@GetMapping(@ModelAttribute("testBean") DataBean bean){
	return "test";
}

=============================================================
<test.jsp>
<h1>test</h1>
<h3>data1 : ${requestScope.testBean.data1} </h3>
<h3>data2 : ${requestScope.testBean.data2} </h3>

ModelAttribute는 생략할 수 있지만 클래스명을 바꿔서 사용하고 싶을 때는 꼭 @ModelAttribute를 써주어야 한다.

반응형

'Spring > Spring MVC 5' 카테고리의 다른 글

Redirect와 Forward  (0) 2020.05.26
Form 커스텀 태그  (0) 2020.05.25
ViewResolver  (0) 2020.05.25
파라미터에 객체를 주입받기  (0) 2020.05.25
파라미터 추출하기  (0) 2020.05.25