*커맨드 객체
클라이언트가 전달해 주는 파라미터 데이터를 주입 받기 위해 사용하는 객체이다.
당연하게도, 객체를 사용하기 위해서는 새로운 클래스를 만들어야 한다.
이 객체의 변수명과 클라이언트가 전달해 주는 변수이름이 같아야 한다.
커맨드 객체는 자동으로 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 |