2024. 10. 11. 18:50ㆍSpring
오늘은 ViewResolever에 대해서 한 번 알아보자.
public class IndexController implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws Exception {
ModelAndView mav = new ModelAndView("/WEB-INF/view/index.jsp");
mav.addObject("text", "Spring MVC");
return mav;
}
}
원래 view로 이동하기 위해서 controller에서는 경로를 적어줘야한다.
하지만 위와 같이 복잡한 경로를 모든 컨트롤러에 계속해서 적어주는 것은 아주 불편할 것이다.
모든 경로는 "/WEB-INF/view/ ... .jsp" 라는 공통 부분이 있다.
이 공통부분을 제외하고 jsp페이지의 이름만 적는다면 경로를 적을때 훨씬 수월할 것이다.
이때 공통부분을 알아서 적용시킬 수 있는 것이 바로 ViewResolever이다.
ViewResolver
ViewResolver의 종류는 많은 데 그 중 InternalResourceViewResolver는 뷰 이름을 실제 JSP 파일의 경로로 변환하는 역할을 한다.
스프링은 ModelAndView에서 객체를 반환할 때 InternalResourceViewResolver를 거쳐서 처리함으로써
뷰 이름을 경로로 바꿀 수 있게된다.
prefix는 뷰 이름의 앞에, suffix는 뷰 이름의 뒤에 붙여져서 파일 경로를 생성한다.
ViewResolver 설정하기
설정을 위해 dispatcher-servlet.xml 파일로 들어간다.
bean태그를 만들고 옵션의 클래스 부분을 작성해야 하는데,
실수를 줄이기 위해 아무 클래스에 들어가서 InternalResourceViewResolver를 임포트해서
임포트 부분의 경로를 복사해서 붙이는 것이 좋다.
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
이렇게 설정해주면 이제 ModelAndView에 복잡한 경로를 넣지 않고 view의 이름만
작성해 주어도 페이지 이동이 가능하다.
물론, 해당 페이지는 WEB-INF/view 폴더 안에 존재해야 한다.
처음엔 그냥 흘려듣고 넘어갔던 내용인데, 이러한 사소한(?) 용어까지 정확히 짚고 넘어가야
나중에 그 다음 내용을 들어도 코드의 흐름을 파악할 때 더 수월하게 이해가 된다고 생각이 들어서
다시 한 번 정리해 보았다.
'Spring' 카테고리의 다른 글
[Spring] DispatcherServlet (0) | 2024.10.12 |
---|---|
[Spring] QueryString (0) | 2024.10.11 |
[Spring] 인증 메일 보내기 (1) | 2024.10.11 |
[Project] 실시간 1:1 채팅 (0) | 2024.10.10 |
[Spring] WebSocket - 실시간 채팅 (0) | 2024.10.10 |