커맨드 객체는 파라미터를 준비된 클래스로 받는 것으로 보통 DTO형태의 클래스를 매개변수로 합니다.
public class Ex04DTO {
private int n1;
private int n2;
private int answer;
public int getN1() {
return n1;
}
public void setN1(int n1) {
this.n1 = n1;
}
public int getN2() {
return n2;
}
public void setN2(int n2) {
this.n2 = n2;
}
public int getAnswer() {
return answer;
}
public void setAnswer(int answer) {
this.answer = answer;
}
}
<h1>ex04</h1>
<hr>
<form method="POST">
<p>
<input type="number" name="n1" min="0" max="10" placeholder="n1">
+
<input type="number" name="n2" min="0" max="10" placeholder="n2">
</p>
<p><input type="submit"></p>
</form>
@PostMapping
public ModelAndView ex04(Ex04DTO dto) {
ModelAndView mav = new ModelAndView("ex04-result");
int n1 = dto.getN1();
int n2 = dto.getN2();
dto.setAnswer(n1 + n2);
if(dto.getAnswer() == 0) {
mav.setViewName("redirect:/");
}
mav.addObject("dto", dto);
return mav;
}
파라미터 를
커맨드 객체 형식으로 매개변수로 받을 때 요건은 다음과 같습니다.
- 해당 클래스 멤버필드의 명칭과 파리미터 key 값의 명칭 동일
- setter 메서드의 활성화
이상의 두가지 요건을 갖추어야 제대로 작동하게 됩니다.
해당 조건을 갖추게 되면 커맨드 객체의 형태로 파라미터가 넘어가게되고 이는 JSP(Java Server Page)에서 jsp:useBean과 jsp:setProperty가 합쳐진 역할을 단독으로 수행하게 됩니다.
유익한 글이었습니다.