어제 봤던 뷰 리졸버에 이어서 렌더링 과정을 살펴봤다. 컨텐츠 네고시에이션 뷰리졸버에 등록이 되어있는 듯 한데, 여기서 뷰 리졸버 목록을 찾고 가장 적합한걸 리턴한다. 리스트의 우선순위와 헤더로 찾는 듯 하다. 컨텐츠 네고시에이션이 같은 URL을 공유하는 자원들을 리스폰스 타입에 따라 다르게 리턴해주는 것으로 이해했는데 정확한것인지 모르겠다.
뷰 리졸버에서 뷰를 찾아오면 해당 뷰에서 렌더링을 진행한다. 템플릿 뷰일 경우 해당 뷰에서 파싱을 진행한 뒤, 서블릿의 PrintWriter
에 append해준다. 아마 마지막에 flush를 해주는듯한데, 여기는 다시 찾아봐야 할 것 같다. 후처리 부분에서 보내주는 것 같다. 여기서 또 궁금해진게, 자원들이 한 번에 넘어오지 않고 서로 다르게 넘어간다. 예전에 비슷한 주제로 발표하는걸 들었던 것 같은데 정확한 동작을 봐야할 것 같다.
가장 궁금했던 것은, 그렇다면 저 PrintWriter
에 있는 버퍼는 과연 누구와 연결돼있느냐 였다. 애초에 response와 request가 어디서 오느냐에 관한 문제이기도 한데, 서블릿에서 사용하는 것은 서버와 연결돼있다. catalina에 있는 Connector를 가져온다. 그 뒤 Connector에서 createResponse를 해준다. 브라우저와 직접 연결된 부분은 서버 안쪽까지 봐야하는 것 같다.
Powered with by Gatsby 2.0