스프링

Model 객체 (2)

Kiwisae 2022. 10. 4. 15:15

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값과 일치해야 한다.

그래야 별도의 매핑 작업을 하지 않아도 자동 매칭이 된다.