반응형
지난 번에 만들었던 OldController를 수정해서 뷰 리졸버의 작동을 살펴보자.
( 프로젝트 전체: https://github.com/yeon-06/inflearnSpring/tree/master/mvc1 )
OldController
@Component("/springmvc/old-controller")
public class OldController implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception {
System.out.println("OldController.handleRequest");
return new ModelAndView("new-form");
}
}
- jsp 파일의 논리 이름을 반환하도록 수정
- 권장하지는 않지만 return new ModelAndView("/WEB-INF/views/new-form.jsp");로 변경해도 동작은 한다.
application.properties
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
- Spring boot는 InternalResourceViewResolver라는 View resolver를 자동으로 등록
- 위 설정 정보를 사용
동작 과정
- 핸들러 어댑터 호출 // "new-form"이라는 논리 뷰 이름 획득
- ViewResolver 호출 // InternalResourceViewResolver 호출
- InternalResourceViewResolver // return InternalResourceView
- InternalResourceView // JSP처럼 forward()를 호출해 처리할 수 있는 경우에 사용
- view.render() // view.render() 호출 -> InternalResourceView는 forward() 사용해 JSP 실행
+ InternalResourceViewResolver는 JSTL 라이브러리가 있으면 JstlView를 반환한다. (기능 추가됨)
+ forward()를 이용하는건 JSP뿐. 다른 뷰들은 바로 렌더링 가능.
본 게시글은 김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의를 구매 후 정리하기 위한 포스팅입니다.
내용을 임의로 추가, 수정, 삭제한 부분이 많으며 정확한 이해를 위해서 강의를 구매하시는 것을 추천 드립니다.
반응형
'Develop > Spring+JPA' 카테고리의 다른 글
[Spring] 요청 매핑 (0) | 2021.06.25 |
---|---|
[스프링 MVC] @Controller, @RequestMapping (0) | 2021.05.27 |
[스프링 MVC] 핸들러 매핑, 핸들러 어댑터 (0) | 2021.05.24 |
[스프링 MVC] 스프링 MVC 구조, DispatcherServlet (0) | 2021.05.24 |
[Spring] Path with "WEB-INF" or "META-INF" 에러 (2) | 2021.05.21 |