새소식

반응형
Java/Spring

Dispatcher Servlet(Front Controller), ViewResolver

  • -
반응형

기존 Servlet 방식

사용자의 요청을 servlet에게 전달하기 위해선 web.xml의 <servlet> 태그를 통해 servlet을 등록한다.

<servlet>

<servlet-name>testServlet</servlet-name>

<servlet-class>servlet class</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>testServlet</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

등록된 servlet에 해당하는 url pattern을 체크하기 위해 <servlet-mapping> 태그도 사용한다.

하지만 아래의 그림과 같이 수많은 사용자의 요청을 처리하기 위해선 여러개의 servlet이 등록되어야 하는 불편함이 있다. 사용자 요청에 맞는 servlet을 생성하고 해당 servlet에 맞는 controller에게 요청을 보내준다.

- Front Controller 패턴 적용

Front Controller 패턴을 적용하면 맨앞에 존재하는 Front Controller Servlet이 모든 요청을 받아 맞는 Controller에게 전달한다.

장점 : 모든 사용자의 요청을 받아 처리 하기 때문에 에러페이지 처리, 공지 등 한곳에서 처리한 후 컨트롤러에게 넘길수 있다.

- Dispatcher Servlet (Front Controller Servlet)

Spring 에서 Front Controller 패턴을 취하는 Servlet 을 미리 만들어 놨는데 그게 바로 Dispatcher Servlet이다.

사용자의 모든 요청을 한곳에서 받아서 HandlerMapping을 통해 적절한 Controller에게 넘겨주고 실행 결과를 Http Response형태로 만드는 역할을 한다.

- ViewResolver

ViewResolver는 사용자가 요청한것에 대한 응답 view를 렌더링하는 역할을 한다. view 이름으로부터 맞는 객체를 매핑한다.

개발자가 Dispatcher Servlet에 별도의 ViewResolver를 설정하지 않는다면 Dispatcher Servlet에 기본적으로 등록되어있는 InternalResourceViewResolver 를 사용한다.

반응형

'Java > Spring' 카테고리의 다른 글

HandlerInterceptor  (0) 2021.08.28
JVM, 자바 메모리 영역(코드, 데이터, Static, 스택, 힙)  (0) 2021.08.28
DI(Dependency Injection, 의존성 주입)  (0) 2021.08.28
@Qualifier 어노테이션  (0) 2021.08.28
Java hashCode(), equals()  (0) 2021.08.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.