SPRING

[Srping] web.xml

주노팍 2021. 8. 24. 22:28
반응형

1. web.xml

  - web.xml은 설정을 위한 설정 파일 / DD (Deployment Desciptor : 배포설명자)

  - WAS가 처음 구동될 때 web.xml을 읽어 웹 애플리케이션 설정을 구성

  - DispatcherServlet을 등록해주면서 스프링 설정 파일을 지정

  - DispatcherServlet은 초기화 과정에서 지정된 설정 파일을 이용해 스프링 컨테이너를 초기화함

* 참고사이트 : https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc

 

Web on Servlet Stack

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more com

docs.spring.io

  - Spring MVC 에서의 구체적인 설정내용

     : DispatcherServlet ( 클라이언트의 요청을 처리 )

     : ContextLoaderListner (웹 어플리케이션 컨텍스트 단위의 설정을 로드)

     : Filter

 

     1). DispatcherServlet

         - Spring Container를 생성한다. ( Spring Container : Controller의 lifecycle 관리 )

         - 클라이언트의 요청을 처리한다.

            1-1). 클라이언트의 요청을 처리할 Controller를 찾는다

               - 컨트롤러를 찾는 일은 Handler Mapping 이라는 객체가 처리한다.

               - 이 객체는 클라이언트의 요청 경로를 이용해 Controller를 검색, 그리고 DispatcherServlet에게 리턴한다.

                  ex) 클라이언트가 'http://**/test'를 요청할 경우 /test를 처리할 컨트롤러 객체를 리턴하는 것

            1-2). Controller를 실행한다.( 비지니스 로직 처리 )

               - Controller는 Handler Adapter라는 객체가 처리한다.

               - 이 객체는 @Controller 어노테이션을 이용해 구현한 Controller,

                               Controller 인터페이스를 구현한 Controller,

                               특수 목적으로 사용되는 HttpRequestHandler인터페이스를 구현한 클래스를 동일한 방식으로 

                               실행할 수 있도록 만들어졌다. 

                 즉, Controller 실행 업무에 트고하된 객체로 Controller를 실행하는 것

 (출처 : 스프링5 입문. 최범균)

               - Controller가 실행되면 개발자가 구현한 비지니스 로직을 거쳐 응답 데이터가 추출

               - 실행된 Controller는 리턴할 데이터와 View를 Handler Adapter에게 리턴한다.

               - Handler Adapter는 데이터와 view를 ModelAndView 형태로 DispatcherServlet에게 리턴한다.

            1-3). 클라이언트에게 보여질 View를 찾는다.

               - View를 찾는 일은 ViewResolver객체가 처리한다.

               - 설정된 prefix(접두사), suffix(접미사)를 참조하여 처리한다.

                 ex) Controller에서 리턴한 view 이름이 hello였다면 /WEB-INF/view/hello.jsp를 찾아

                      dispatcher Servlet에게 리턴한다.

            1-4). response 데이터와 View를 클라이언트에게 전달한다.

               - 최종적으로 ViewResolveer가 리턴한 View 객체에 response 데이터를 넣어 클라이언트에게 리턴한다.

 

 

     2). ContextLoaderListner

         - Controller가 공유하는 Bean을 포함하는 Spring Container를 생성

         - 웹 어플리케이션의 규모가 커진다면, 클라이언트의 요청또한 다양해질 것이고,

           이를 처리할 Dispatcher Servlet도 늘어날 가능성이 있다.

         - 다른 성격을 가진 서블릿이 생성될 것이고, 설정 또한 서블릿의 성격에 맞게 각각 적용시켜야 한다.

 

           반면에, 모든 서블릿이 공통으로 가져야할 설정들도 있다.

           즉 Servlet Context 단위가 아닌 Application Context 단위의 설정이 필요한데 이를

           ContextLoaderListener 객체가 처리한다.

 

         - 이 객체는 Application Context 단위의 설정을 생성한다.

         - 참고로 Application Context 는 Web Application 의 Context이며,

           모든 Servlet들이 참조가 가능한 부모 Context이다.

 

     2). Filter

        - 클라이언트에서 온 요청을 Dispatcher Servlet이 받기 전 거치는 부분이 있다. 바로 이 Filter 객체이다.

        - 만약 스프링 시큐리티 필터가 적용되어 있다면, 인가 및 인증 처리를 먼저 처리하고,

          인코딩 필터가 적용되어 있다면 클라이언트의 요청데이터를 인코딩하는 작업이 선 처리된 후

          Dispatcher Servlet에게 필터링 된 데이터가 전달된다.

 

 

참고사이트
https://tlatmsrud.tistory.com/35
https://node-js.tistory.com/entry/Spring-Servlet-DispatcherServlet-%EC%9D%B4%EB%9E%80?category=870303
https://gmlwjd9405.github.io/2018/10/29/web-application-structure.html
https://thiago6.tistory.com/70

 

반응형

'SPRING' 카테고리의 다른 글

[SpringBoot] 스프링빈 의존관계  (0) 2021.10.11
[SpringBoot] 스프링부트 웹개발 기초  (0) 2021.10.11
Spring 라이프 사이클  (1) 2021.08.20
SPRING 프레임워크 개발환경 세팅  (0) 2021.08.09