Static Web Page

웹 서버에서 정적 웹 페이지의 렌더링을 하고 반환하는 기술

CGI(Common Gateway Interface)

웹 서버의 동적 컨텐츠 처리를 위한 기술

동작 구조

  1. 요청
  2. 웹 서버 수신 및 대응되는 CGI 프로그램 확인
  3. 운영체제에 의해 CGI 프로그램 실행(동적 처리)
  4. 렌더링된 HTML 반환

단점

웹 서버에서 임의의 프로그램을 실행할 수 있기 때문에 간혹 쓰이는 경우도 있음

Server Side Scripting

웹 서버 자체에서 동적 페이지를 처리하는 기술

요청마다 프로세스를 생성하여 운영체제를 통해 실행하지 않고 웹 서버 내의 스레드를 통해 직접 처리

자바같은 객체지향 언어으로 대규모 웹 서버를 개발

Servlet

JSP

MVC

두 가지의 관심사(비즈니스 로직, 화면)를 분리하는 디자인패턴

구성 요소

동작 구조

  1. 컨트롤러 요청 수신
  2. 컨트롤러 -> 모델 데이터 변경
  3. 컨트롤러 -> 뷰 화면 처리

SSR(서버 사이드 렌더링) : 서버에서 화면 처리 담당

CSR(클라이언트 사이드 렌더링) : 클라이언트에서 화면 처리 담당

Spring MVC, FrontController

MVC 패턴의 Controller(Servlet)는 path(요청 url)에 마다 개별 Controller(Servlet)를 만듦

-> Controller가 수행하는 검증, 세션 관리, 필터 등의 코드가 중복됨

FrontController는 모든 요청을 처리하는 Controller를 두는 디자인패턴으로 코드 중복없이 재사용할 수 있는 유연한 구조를 가짐

스프링 MVC 구성요소

스프링 MVC 계층 구조

DispatcherServlet과 WebApplicationContext 관계

  1. 각 DispatcherServlet은 자신만의 Servlet WebApplicationContext가 존재
  2. 또한 애플리케이션 로딩 시점에 생성되는 Root WebApplicationContext를 부모로 설정

Root WebApplicationContext

Servlet WebApplicationContext

Filter

Servlet과 마찬가지로 Java/Jakarata EE 스펙에 포함됨

특징

FilterChain

Interceptor

Spring MVC 스펙에 포함됨

특징

시점

차이점

Error, Exception Handling

예외는 크게 두 가지로 구분

  1. 클라이언트 요청에 의한 예외 발생
  2. 서버의 로직 처리 과정 중 예외 발생

자세한 에러 발생 부분

Server Error, Exception Handling

웹 서버의 에러

웹 애플리케이션에서 예외를 처리할 수 있는 부분

BasicController

@ControllerAdvice, @ExceptionHandler

HandlerExceptionResolver

비즈니스 로직 예외 처리 workflow

Client Request Exception Handling

클라이언트 요청 자체의 에러 종류

타입 변환에 실패한 경우 발생할 수 있는 스프링 예외

@Valid, @Validated

BindingResult

Validator

스프링부트 Validator

Method Validation

ResponseEntityExceptionHandler

Message

MessageSource

LocaleResolver

MessageCodesResolver

Web Util Object

@InitBinder

WebDataBinder

Data Binding, Type Conversion, Formatting Mechanism

HandlerMethodArgumentResolver

Converter

HttpMessageConverter

ConversionService

Formatter

FormattingConversionService

Request Parameters, Annotation

클라이언트에서 데이터를 전송할 수 있는 방법과 스프링에서 받는 방법

Query String Parameters

Path Parameters

Form Data

HTTP Message Body

Header Parameters

Cookie Parameters

DTO, VO, Command Object

자바 기반 애플리케이션에서 효율적인 데이터 전달 및 표현을 위해 사용되는 패턴이자 개념

DTO(Data Transfer Object)

VO(Value Object)

Command Object

Spring MVC Workflow

Business Logic Process Workflow

Web Application Server

Path

ContextPath

ServletPath

스프링 부트의 기본 ContextPath, ServletPath