헬린코린이

[Spring Framework] View Resolver 본문

Programming/Spring Framework

[Spring Framework] View Resolver

HCD 2023. 3. 9. 09:34

스프링 백엔드에서 데이터를 처리하거나 가지고 왔다면, 이 데이터를  View의 영역으로 전달을 해야 한다. 이때 View를 어떤 것을 사용할지 자유롭게 설정을 할 수 있는데 이 설정 역할을 하는 것이 View Resolver라고 생각하면 된다

 

- DispatcherServlet에게 뷰 정보를 전달하는 방법은 두 가지가 있습니다.

1) View 타입의 오브젝트를 주는 방법

2) String 타입의 뷰이름을 주는 방법

String View 이름을 주는 경우 이름으로부터 실제로 사용할 View 객체를 결정해주는 View Resolver가 필요합니다

VIew 오브젝트를 넘겨주는 것 보다, View 이름을 넘겨주어서 View Resolver를 사용하는 것이 성능 면에서 유리합니다.

 

특정 View Resolver를 빈으로 등록하지 않는다면,

DispatcherServlet은 기본 View Resolver인 InternalResourceViewResolver를 사용합니다.

 

1. InternalResourceViewResolver

 Default View Resolver로 JSP를 뷰로 사용할 때 쓰입니다.

 DispatcherServlet에게 아무런 View Resolver를 등록하지 않으면, 기본으로  동작하는 View Resolver입니다.

 하지만 View Resolver를 등록하지 않고 사용하는 일은 거의 없습니다. 

 왜냐하면, 기본 View Resolver도 아래와 같이 프로퍼티를

 수정해줘야 편리하게 사용할 수 있기 때문입니다.

 파일의 위치가 “webapp/WEB-INF/views/”에 위치하고 있다고 가정하면

 <!-- VR 생성 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <!-- Spring에서는 Resolver류를 사용할적에 이름을 보고 다니기때문에 이름이 정해져있음 -->
       <!-- value값 설정: WEB-INF하위의 페이지가 VR 거쳐서 가야하기 때문에 -->
       <property name="prefix" value="/WEB-INF/view/"/>
       <property name="suffix" value=".jsp"/>   
       <!--메인을 포워딩해야하는데 앞뒤로 붙여서 포워딩할래~
            데이터를 봐야하는 경우 -> forward
            앞 WEB-INF / 뒤 .jsp는 VR가 붙여줌 -->
    </bean>

View Resolver

는 컨트롤러에서 포워드 방식으로 보내야 작동을 하기 때문에 컨트롤러에서

@RequestMapping(value="/main.do")
	public String handleRequest(BoardDAO boardDAO, Model mdeol){
		System.out.println("MainController 입장");

		return "main";
	}

이렇게 보내면 View Resolver가 동작하여 /WEB-INF/view/main.jsp로 가게 될것입니다.

Comments