[Spring] ViewResolver

2024. 10. 11. 18:50Spring

오늘은 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