본문으로 바로가기

DispatcherServlet 이란?

category 스프링 2020. 6. 7. 01:08

안녕하세요 풍림개발자입니다.
Servlet을 공부하면서 정리할 부분을 글로 올리려고 합니다.
하지만 서블릿의 방대한 양을 기술하기보단 스프링 mvc의 핵심
web.xml에 설정하고 사용하는 servlet!
DispatcherServlet을 통해 알아보도록 하겠습니다.

Servlet은?

Java를 사용하여 웹을 만들기 위해 필요한 기술. 설명하자면 브라우저에서 클라이언트의 요청이 있을 때 그 결과를 응답 해주어야 하는데 응답 결과를 만들어주는 프로그램을 Java로 사용하고 그 역할을 수행하는것이 Servlet입니다

DispatcherServlet

dispacth는 보내다 라는 뜻을 가지고있다.

서블릿컨테이너에서 클라이언트의 모든 요청을 이놈이 받습니다 그래서 front controller라고 불리우는데 이후 적절한 controller를 찾아 요청을 넘깁니다. 이때 DispatcherServlet이 처리해줄 요청 URL패턴은 개발자가 따로 지정해주어야 합니다.

DispatcherServlet의 장점

이전에는 사용자의 요청을 일일히 전달하기 위해 web.xml에 수맣은 servlet 등록하고 매핑하는 과정이 필요했지만 FrontController패턴인 DispatcherServlet의 등장으로 이러한 번거로움을 없앨 수 있습니다.

DispatcherServlet의 흐름

DispatcherServlet web.xml에 설정하기

   
 <!-- ApplicationContext 빈 설정 파일-->
 <context-param>
 	 <param-name>contextConfigLocation</param-name>
         <param-value>
         <!--빈 설정 파일들간에 구분은 줄바꿈(\n),컴마(,),세미콜론(;)등으로 한다.-->
         /WEB-INF/config/easycompany-service.xml,/WEB-INF/config/easycompany-dao.xml 
      </param-value>
</context-param>

<!-- 웹 어플리케이션이 시작되는 시점에 ApplicationContext을 로딩하며, 로딩된 빈정보는 모든 WebApplicationContext들이 참조할 수 있다.-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>employee</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/config/easycompany-service.xml
        </param-value>
    </init-param>
</servlet>

 <servlet>
    <servlet-name>webservice</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/config/easycompany-webservice.xml
        </param-value>
    </init-param>
</servlet>

이 디스패처서블릿 등록 내용이고 contextConfigLocation을 통해 설정된 빈들을 등록한다.

 

'스프링' 카테고리의 다른 글

스프링의 AOP 란?  (0) 2020.06.23
스프링의 @ModelAttribute 어노테이션  (0) 2020.06.15
AJAX란?  (0) 2020.06.15
인터셉터(Interceptor)란?  (0) 2020.06.13
스프링 프로젝트 생성하기  (1) 2020.04.18