Model 객체 (2)
person.jsp - addr
form 태그가 두 개 작성되어 있고 하나는 주석으로 막혀있는데,
action 값이 addr인 것부터 살펴본다.
submit으로 값을 넘기면 addr 어노테이션을 찾아간다.
이 어노테이션은 personController.java에 있으므로 이 쪽을 찾아가서 내용을 실행하게 된다.
인풋 타입의 입력 양식에는 name 값이 할당되어 있다.
각 name, addr이라는 이름의 name 값인데, 이 name값들과 model 객체를 매개변수로 받는 메소드 addr을 실행하게 된다.
이 메소드는 특별한 경우를 제외하고는 String으로 설정하는 것이 일반적이고,
매개변수 앞자리에는 @RequestParam("name")이 생략되어 있다.
이 어노테이션을 생략할 수 있는 이유는 입력 양식의 name 값과 값을 받을 변수가 같게 설정되어 있기 때문이다.
그러면 자동으로 매핑되기 때문에 따로 매핑하지 않아도 된다. 그러니 웬만하면 일치시키는 것이 좋다.
@RequestParam("name") String name
=
String name = request.getParameter("name")
리턴값이 addr 이므로 WEB-INF 하위에
파일명이 리턴값과 같은 addr이고, 확장자가 jsp가 있다면 이 쪽으로 찾아간다.
person.jsp - addr2
form 태그가 두 개 작성되어 있고 하나는 주석으로 막혀있는데,
이번에는 action 값이 addr2 인 것을 살펴본다.
submit 버튼을 누르면 action값 addr2를 넘기게 되고,
컨트롤러의 addr2를 찾아가서 메소드 addr2를 실행한다.
이 메소드가 다른 이름이어도 어노테이션 값만 같으면 이 메소드는 실행된다.
특별한 경우를 제외하고 자료형은 String으로 설정하는 것이 일반적이다.
매개변수로 Person p, Model model을 받도록 되어 있는데
@RequestParam이 생략된 addr과 달리
@ModelAttribute가 생략되어 있고, Person은 DTO클래스이다.
이 어노테이션은 한꺼번에 값을 받을 때 사용한다.
이 DTO의 프로퍼티는 입력 양식의 name값과 일치해야 한다.
그래야 별도의 매핑 작업을 하지 않아도 자동 매칭이 된다.