yoil이라는 view의 이름이 어떻게 "/WEB_INF/views/yoil.jsp"로 바뀌는지 알아보자.
spring폴더의 servlet-contect.xml은 웹설정 파일이다. 위 부분이 view를 설정하는 부분이고, 접두사 prefix로 경로 "/WEB-INF/views/"를 붙이고 접미사 suffix로 ".jsp"를 붙이라는 코드이다. 이 설정은 수정할 수 있다.
만약 반환 타입이 void로 view의 이름을 반환하지 않으면 어떻게 될까? view의 이름이 mapping된 URL의 이름으로 결정된다.
getYoilMVC.jsp파일을 만들고, 톰캣을 실행한다.
반환된는 view가 mapping된 주소의 이름과 같은 jsp파일이 실행된다. 보통 이런 식으로 사용하지는 않지만 URL이름과 view의 이름이 같을 때 URL만 바꿔 변경포인트가 줄어드는 장점이 있다.
Model과 View를 같이 쓰는 방법이 있다. 반환 타입을 ModelAndView로 바꾸고, ModelAndView객체를 생성한다. ModelAndView 객체에 담을 때는 addAttribute 메서드가 아니라 addObject 메서드를 사용한다. ModelAndView에서 View를 반환하기 위해 setViewName 메서드를 사용한다. 그 결과 Model, View가 담긴 mv를 return에 반환한다.
Model을 매개변수로 선언 했을 때는 DispatcherServlet이 Model을 생성한다. Model을 매개변수로 선언하지 않으면 DispatcherServlet에서 Model을 생성하지 않고 ModelAndView mv = new ModelAndView( );에서 Model을 생성한다. 차이는 이 객체에 Model뿐만 아니라 View의 이름도 저장할 수 있다. ModelAndView에 결과를 저장하고 View의 이름을 같이 담아서 반환하고 DispatcherServlet에게 넘겨 Model 값을 View에게 전달한다.
반환 타입이 String이면 return에 View의 이름을 적는다. 만약 반환 타입을 void로 지정하지 않으면 mapping된 url의 이름이 View의 이름이 된다. ModelAndView는 객체에 Model을 저장하고 View 이름을 지정해서 반환한다.
'스프링의 정석 > Ch. 02 Spring MVC' 카테고리의 다른 글
12. 관심사의 분리와 MVC패턴 - 원리(2) -> 다시 듣기 (0) | 2023.07.07 |
---|---|
11. 관심사의 분리와 MVC패턴 - 원리(1) (0) | 2023.07.06 |
ch2_10. 관심사의 분리와 MVC패턴 - 실습(1) (0) | 2023.04.12 |
ch2_09. 관심사의 분리와 MVC패턴 - 이론 (0) | 2023.04.12 |
ch2_08. 텍스트와 바이너리, MIME, Base64 (0) | 2023.04.12 |