본문 바로가기
Everyday Study

2024.10.08(화) { Special Bean Types, SPA(싱글 페이지 어플리케이션), 웹 애플리케이션의 경로를 설정(docBase , appBase) }

by xogns93 2024. 10. 8.

Spring MVC에서 사용하는 여러 Special Bean Types입니다. 이 빈들은 DispatcherServlet이 요청을 처리하는 과정에서 중요한 역할을 수행하며, 주로 핸들러 매핑, 핸들러 어댑터, 뷰 해석, 예외 처리 등의 기능을 담당합니다. 아래에 각 빈 타입과 그 역할에 대해 간단히 정리해 드리겠습니다.

Special Bean Types 설명:

  1. HandlerMapping:
    • 요청을 핸들러(Controller)로 매핑합니다. 예를 들어, URL 패턴을 기반으로 요청을 처리할 컨트롤러를 결정합니다.
    • 주요 구현체: RequestMappingHandlerMapping, SimpleUrlHandlerMapping.
  2. HandlerAdapter:
    • 선택된 핸들러(Controller)를 실제로 호출하는 역할을 합니다. 핸들러가 어떻게 호출되는지에 대한 로직을 처리합니다.
    • 예를 들어, RequestMappingHandlerAdapter는 @RequestMapping으로 매핑된 컨트롤러를 처리합니다.
  3. HandlerExceptionResolver:
    • 컨트롤러에서 발생한 예외를 처리합니다. 발생한 예외를 처리하여 사용자에게 적절한 오류 페이지나 응답을 제공합니다.
  4. ViewResolver:
    • 논리적 뷰 이름을 실제 뷰 파일(JSP, Thymeleaf 등)로 변환합니다. ViewResolver는 논리적 이름을 기반으로 물리적인 뷰 파일 경로를 찾아내고, 그 뷰를 렌더링합니다.
  5. LocaleResolverLocaleContextResolver:
    • 사용자의 로케일(언어 및 지역 설정)을 확인하고, 해당 로케일에 맞는 콘텐츠를 제공하는 데 사용됩니다.
  6. ThemeResolver:
    • 웹 애플리케이션에서 사용될 테마를 결정합니다. 사용자 인터페이스에서 개인화된 테마를 적용하는 데 사용됩니다.
  7. MultipartResolver:
    • 파일 업로드와 같은 멀티파트 요청을 처리합니다. 브라우저로부터 전송된 파일을 서버에서 처리할 수 있도록 도와줍니다.
  8. FlashMapManager:
    • 리다이렉트 요청 시 데이터를 전달하는 데 사용됩니다. FlashMap을 통해 요청 간 데이터를 유지할 수 있습니다. 보통 "성공" 메시지 등을 리다이렉트 이후에도 보여줄 때 사용됩니다.

요약:

이 표는 Spring MVC에서의 요청 처리 흐름에서 사용되는 중요한 빈 타입들을 설명한 것입니다. 이러한 빈들은 주로 핸들러 선택, 핸들러 호출, 예외 처리, 뷰 선택, 로케일 및 테마 관리 등의 기능을 제공하며, DispatcherServlet의 작동 방식을 이해하는 데 중요한 역할을 합니다.


 

"웹브라우저에게 모든 웹페이지를 한 번에 제공하겠다"는 **싱글 페이지 애플리케이션(Single Page Application, SPA)**의 개념을 설명하는 말입니다.

싱글 페이지 애플리케이션(SPA)이란?

**싱글 페이지 애플리케이션(SPA)**은 한 번의 초기 로딩으로 모든 필요한 리소스(HTML, CSS, JavaScript)를 웹브라우저에 전달하고, 이후 페이지 전환이나 추가 데이터 로딩이 필요할 때 전체 페이지를 다시 불러오지 않고, 부분적으로 데이터를 가져와 동적으로 화면을 업데이트하는 방식입니다. 즉, 사용자가 다른 페이지로 이동할 때도 페이지 전체를 새로고침하지 않고, 필요한 부분만 업데이트하여 빠른 사용자 경험을 제공합니다.

주요 특징:

  1. 최초 로드: 웹 애플리케이션을 처음 실행할 때, 브라우저에 모든 리소스를 한 번에 로드합니다.
  2. 동적 데이터 로딩: 페이지 전환이나 상호작용이 있을 때, 서버에서 필요한 데이터만 AJAXFetch API로 가져와서 화면의 일부만 업데이트합니다.
  3. 빠른 전환: 페이지를 다시 로드하지 않기 때문에 페이지 전환이 빠르고 매끄럽습니다.
  4. 라우팅: 클라이언트 사이드 라우팅을 통해 URL에 따라 화면의 특정 부분만 업데이트됩니다. 예: React Router, Vue Router.

장점:

  • 빠른 사용자 경험: 처음 로딩 이후엔 페이지 전환 시 속도가 매우 빠릅니다.
  • 서버 요청 감소: 페이지 전체를 다시 불러오지 않고, 필요한 데이터만 요청합니다.
  • 모바일 친화적: 빠른 응답성을 제공해 사용자 경험을 개선합니다.

대표적인 SPA 프레임워크:

  • React
  • Angular
  • Vue.js

이러한 SPA는 주로 ReactVue.js와 같은 프론트엔드 프레임워크를 통해 구현되며, AJAXFetch를 사용해 서버와 통신하면서 필요한 데이터를 실시간으로 가져옵니다.


 

docBaseappBaseApache Tomcat 서버에서 웹 애플리케이션의 경로를 설정할 때 사용되는 두 가지 중요한 속성입니다. 이 속성들은 Tomcat 서버가 어떤 디렉토리에서 애플리케이션을 찾고 실행할지를 정의합니다.

1. docBase (Document Base)

  • 설명: docBase는 특정 웹 애플리케이션의 루트 디렉터리 또는 WAR 파일의 위치를 지정하는 속성입니다. 즉, Tomcat 서버는 docBase에 지정된 경로에서 해당 애플리케이션을 찾고, 그 애플리케이션을 실행합니다.
  • 사용 위치: Context 엘리먼트 내에서 사용됩니다.
  • 설정 방법:또는 WAR 파일의 경우:
  • <Context docBase="/path/to/webapp.war" ... />
  • <Context docBase="/path/to/webapp" ... />
  • 예시:
    • docBase="/var/www/myapp": 여기서 myapp은 웹 애플리케이션의 루트 디렉터리로 사용됩니다.
    • docBase="/path/to/myapp.war": myapp.war 파일이 배포되는 WAR 파일을 사용하여 애플리케이션을 실행합니다.

2. appBase (Application Base)

  • 설명: appBaseHost 엘리먼트 내에서 정의되는 속성으로, 특정 Host에 속한 모든 웹 애플리케이션들이 위치하는 기본 디렉터리를 정의합니다. Tomcat은 appBase 디렉토리 아래의 모든 애플리케이션을 자동으로 찾습니다. 이 디렉터리 아래에 있는 각 WAR 파일이나 애플리케이션 디렉터리가 자동으로 배포됩니다.
  • 사용 위치: Host 엘리먼트 내에서 사용됩니다.
  • 설정 방법:
  • <Host name="localhost" appBase="webapps" ... />
  • 예시:
    • appBase="webapps": Tomcat 서버는 기본적으로 webapps 폴더를 사용하여 여기에 있는 모든 애플리케이션(WAR 파일 또는 디렉터리)을 자동으로 배포합니다.

주요 차이점:

  • docBase는 특정 개별 웹 애플리케이션의 경로를 지정하는 데 사용됩니다. 예를 들어, 애플리케이션을 수동으로 다른 경로에서 배포하거나, 다른 폴더에 있는 WAR 파일을 배포할 때 사용됩니다.
  • appBase는 특정 Host에 속한 모든 웹 애플리케이션의 기본 경로입니다. Tomcat 서버는 이 경로에 있는 모든 애플리케이션(WAR 파일 또는 디렉터리)을 자동으로 배포합니다.

예시로 보는 차이:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/myapp" docBase="/path/to/myapp" />
</Host>
  • 여기서 appBase="webapps"는 Tomcat이 webapps 디렉터리에 있는 모든 웹 애플리케이션을 자동으로 배포하도록 지정합니다.
  • docBase="/path/to/myapp"myapp이라는 애플리케이션이 다른 경로에 있고, Tomcat이 그 경로에서 이 애플리케이션을 실행해야 함을 지정합니다.