ViewResolver에 대해 이해하려고하니 DispatcherServlet이 나오고, DispatcherServlet을 이해하려고 보니 먼저 Servlet에 대해 조금이라도 알아야겠다고 생각했다.
서블릿을 배운걸 바탕으로 종합적으로 한 문장으로 표현해보자면,
서블릿이란 자바로 웹 프로그램을 만들기 위해서 가져야할 가장 기본적인 서버 어플리케이션이다.
자세한 내용은 따로 포스트를 했다.
Servlet은 뭔지 알았다. DispatcherServlet은?
일단 Dispatch는 택배에서 발송하다는 의미로 쓰이는걸 많이봤따. 발송하는 사람의 역할을 하는 Servlet?
뭘 발송할까? 요청받은 것을 고객에게 발송한다는 의미로 해석하면 맞을것 같다.
Servlet을 배운 대로라면, 클라이언트가 특정 서블릿을 요청하는 것을 받기 위해서 톰캣에다가 그것을 설정해줬었다.(web.xml)
기존에는 모든 서블릿에 대해 URL 매핑을 활용하기 위해서 web.xml에 모두 등록해주어야 했지만, Spring MVC의 DispatcherServlet는 앞단에서 요청받은 걸 다시 클라이언트에게 발송한다.
그 과정은 이 이미지가 너무 설명이 잘되어있는거 같아 가져왔다.
참고 여기 굿굿
https://mangkyu.tistory.com/18
이때까지 미션하면서 String 값으로 뷰를 리턴했다. 그냥 쓰면서 그냥 이렇게하면 작동하네~정도로 넘어갔었는데,
String 값을 리턴하면 리턴 값으로부터 실제로 사용할 뷰 객체를 결정해주는 뷰 리졸버가 필요하다고한다.
뷰 리졸버는 리턴값으로부터 사용할 뷰 오브젝트를 매핑해준다. 매핑해주는 방법에도 여러가지가 있다고 한다.
특정 뷰리졸버를 빈으로 등록하지 않으면 DispatcherServlet은 기본 뷰 리졸버이고 JSP 사용을 위한 InternalResourceViewResolver를 사용한다.
여기서 템플릿엔진이랑 좀 헷갈리는데 미션에 난 handlbars를 쓰고 있다. 찾아보니 web.xml도 없다.
그런데 application.properties에 들어가보니까
handlebars.suffix=.html
handlebars.cache=false
라고 되어있따.
이거 어디서 주워들어서 설정해준건지 원래설정되어있는건지 기억이안난다.
여튼 중요한건 web.xml이 왜 없고,,,,그러니까 지금까지 배운걸 보면 모두 jsp를 이용하는거 같은데...
템플릿엔진이 어느 위치에 있는 기술인지 정확하게 알아야할 것 같다.
MessageConverter는 낼 알아보자. 이해안가는 곳이 한두군데가 아님