일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 참조변수
- java
- 오블완
- 인터페이스
- 스프링
- HttpServletResponse
- ocp
- JSON
- 의존관계
- 추상클래스
- 다형성
- 스프링컨테이너
- 코드트리
- 프록시
- objecterror
- html form
- 백준
- equals()
- DI
- http 메시지 컨버터
- fielderror
- 테스트코드
- 티스토리챌린지
- 코드트리조별과제
- 김영한
- 싱글톤
- 코딩테스트
- @configuration
- 서블릿
- 오버라이딩
- Today
- Total
minOS
스프링 MVC - 구조 이해(3) 본문
뷰 리졸버
@Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return new ModelAndView("new-form"); } }
View를 사용할 수 있도록 다음 코드를 추가했다. `return new ModelAndView("new-form");`
실행오류페이지가 나오지만 호출은 된다.
application.properties`에 다음 코드를 추가하면spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
뷰리졸버가 잘 동작했음을 알 수 있다.
스프링 부트는 `InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록하는데, 이때 `application.properties` 에 등록한 `spring.mvc.view.prefix` , `spring.mvc.view.suffix` 설정 정보를 사용해서 등록한다.
참고로 권장하지는 않지만 설정 없이 다음과 같이 전체 경로를 주어도 동작하기는 한다.`return new ModelAndView("/WEB-INF/views/new-form.jsp");`
스프링 부트가 자동 등록하는 뷰 리졸버
1 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. (예: 엑셀 파일 생성 기능 에 사용) 2 = InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.
1. 핸들러 어댑터 호출
핸들러 어댑터를 통해 `new-form` 이라는 논리 뷰 이름을 획득한다.
2. ViewResolver 호출
`new-form` 이라는 뷰 이름으로 viewResolver를 순서대로 호출한다.
`BeanNameViewResolver는 `new-form` 이라는 이름의 스프링 빈으로 등록된 뷰를 찾아야 하는데 없다. InternalResourceViewResolver가 호출된다.
3. InternalResourceViewResolver
이 뷰 리졸버는 InternalResourceView` 를 반환한다.
4. 뷰 - InternalResourceView
`InternalResourceView` 는 JSP처럼 포워드 `forward()` 를 호출해서 처리할 수 있는 경우에 사용한다.
5. view.render()
`view.render()가 호출되고 `InternalResourceView는 forward()를 사용해서 JSP를 실행한다.
'TIL > 김영한의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 카테고리의 다른 글
스프링 MVC - 로깅 알아보기 (0) | 2024.07.20 |
---|---|
스프링 MVC - 구조 이해(4) (0) | 2024.07.19 |
스프링 MVC - 구조 이해(2) (0) | 2024.07.18 |
스프링 MVC - 구조 이해(1) (0) | 2024.07.18 |
MVC 프레임워크 만들기 - 프론트 컨트롤러 Ver 5 (0) | 2024.07.11 |