문서의 이 부분에서는 Servlet API를 기반으로 구축되고 Servlet 컨테이너에 배포된 Servlet 스택 웹 애플리케이션에 대한 지원을 다룹니다. 개별 장에는 Spring MVC(https://docs.spring.io/spring-framework/
Spring Web MVC는 Servlet API를 기반으로 구축된 독창적인 웹 프레임워크이며 처음부터 Spring Framework에 포함되었습니다. 공식적인 이름인 "Spring Web MVC"는 소스 모듈의 이름(spring-webmvc)에서 유래되었지만 일반적으
반응형 스택에서 이에 상응하는 내용 보기다른 많은 웹 프레임워크와 마찬가지로 Spring MVC는 중앙 서블릿인 DispatcherServlet이 요청 처리를 위한 공유 알고리즘을 제공하는 전면 컨트롤러 패턴을 중심으로 설계되었으며 실제 작업은 구성 가능한 위임 구성
DispatcherServlet은 자체 구성을 위해 WebApplicationContext(일반 ApplicationContext의 확장)를 기대합니다. WebApplicationContext에는 ServletContext 및 이와 연관된 Servlet에 대한 링크가
반응형 스택에서 이에 상응하는 내용 보기DispatcherServlet은 요청을 처리하고 적절한 응답을 렌더링하기 위해 특수 Bean에 위임합니다. "특수 빈"이란 프레임워크 계약을 구현하는 Spring 관리 개체 인스턴스를 의미합니다. 일반적으로 기본 제공 계약과 함
반응형 스택에서 이에 상응하는 내용 보기애플리케이션은 요청을 처리하는 데 필요한 특수 Bean 유형에 나열된 인프라 Bean을 선언할 수 있습니다. DispatcherServlet은 각 특수 Bean에 대해 WebApplicationContext를 확인합니다. 일치하는
서블릿 환경에서는 대안으로 또는 web.xml 파일과 함께 프로그래밍 방식으로 서블릿 컨테이너를 구성하는 옵션이 있습니다. 다음 예에서는 DispatcherServlet을 등록합니다.WebApplicationInitializer는 구현이 감지되고 자동으로 모든 Serv
반응형 스택에서 이에 상응하는 내용 보기DispatcherServlet은 다음과 같이 요청을 처리합니다.WebApplicationContext는 프로세스의 컨트롤러 및 기타 요소가 사용할 수 있는 속성으로 요청에서 검색되고 바인딩됩니다. 기본적으로 DispatcherS
Servlet API는 전체 요청 경로를 requestURI로 노출하고 이를 Servlet이 매핑되는 방식에 따라 값이 달라지는 contextPath, servletPath 및 pathInfo로 세분화합니다. 이러한 입력에서 Spring MVC는 매핑 핸들러에 사용할
모든 HandlerMapping 구현은 특정 요청에 특정 기능을 적용하려는 경우(예: 주체 확인) 유용한 핸들러 인터셉터를 지원합니다. 인터셉터는 모든 종류의 사전 처리 및 사후 처리를 수행할 수 있는 충분한 유연성을 제공해야 하는 세 가지 메서드를 사용하여 org.s
반응형 스택에서 이에 상응하는 내용 보기요청 매핑 중에 예외가 발생하거나 요청 핸들러(예: @Controller)에서 발생하는 경우 DispatcherServlet은 예외를 해결하고 대체 처리(일반적으로 오류 응답)를 제공하기 위해 HandlerExceptionReso
반응형 스택에서 이에 상응하는 내용 보기Spring MVC는 특정 뷰 기술에 얽매이지 않고 브라우저에서 모델을 렌더링할 수 있게 해주는 ViewResolver 및 View 인터페이스를 정의합니다. ViewResolver는 뷰 이름과 실제 뷰 간의 매핑을 제공합니다. V
Spring 아키텍처의 대부분은 Spring 웹 MVC 프레임워크처럼 국제화를 지원합니다. DispatcherServlet을 사용하면 클라이언트의 로케일을 사용하여 메시지를 자동으로 확인할 수 있습니다. 이는 LocaleResolver 개체를 사용하여 수행됩니다.요청이
Spring Web MVC 프레임워크 테마를 적용하여 애플리케이션의 전반적인 모양과 느낌을 설정함으로써 사용자 경험을 향상시킬 수 있습니다. 테마는 애플리케이션의 시각적 스타일에 영향을 미치는 정적 리소스(일반적으로 스타일 시트 및 이미지)의 모음입니다.6.0부터 테마
반응형 스택에서 이에 상응하는 내용 보기org.springframework.web.multipart 패키지의 MultipartResolver는 파일 업로드를 포함한 멀티파트 요청을 구문 분석하기 위한 전략입니다. Servlet 멀티파트 요청 구문 분석을 위한 컨테이너
반응형 스택에서 이에 상응하는 내용 보기Spring MVC의 DEBUG 수준 로깅은 컴팩트하고 최소한이며 인간 친화적으로 설계되었습니다. 이는 특정 문제를 디버깅할 때만 유용한 다른 정보에 비해 계속해서 유용한 고가치 정보에 중점을 둡니다.TRACE 수준 로깅은 일반적
반응형 스택에서 이에 상응하는 내용 보기 spring-web 모듈은 몇 가지 유용한 필터를 제공합니다:Form DataForwarded HeadersShallow ETagCORS브라우저는 HTTP GET 또는 HTTP POST를 통해서만 양식 데이터를 제출할 수 있지만
반응형 스택에서 이에 상응하는 내용 보기Spring MVC는 @Controller 및 @RestController 구성 요소가 주석을 사용하여 요청 매핑, 요청 입력, 예외 처리 등을 표현하는 주석 기반 프로그래밍 모델을 제공합니다. 주석이 달린 컨트롤러는 유연한 메서
반응형 스택에서 이에 상응하는 내용 보기Servlet의 WebApplicationContext에서 표준 Spring Bean 정의를 사용하여 컨트롤러 Bean을 정의할 수 있습니다. @Controller 스테레오타입은 클래스 경로에서 @Component 클래스를 감지하
반응형 스택에서 이에 상응하는 내용 보기 이 섹션에서는 주석이 달린 컨트롤러에 대한 요청 매핑에 대해 설명합니다.반응형 스택에서 이에 상응하는 내용 보기@RequestMapping 주석을 사용하여 요청을 컨트롤러 메서드에 매핑할 수 있습니다. URL, HTTP 메소드,
반응형 스택에서 이에 상응하는 내용 보기다음 표에서는 지원되는 컨트롤러 메서드 인수에 대해 설명합니다. 어떤 인수에도 반응형 유형이 지원되지 않습니다.JDK 8의 java.util.Optional은 필수 속성(예: @RequestParam, @RequestHeader
반응형 스택에서 이에 상응하는 내용 보기 다음 표에서는 지원되는 컨트롤러 메서드 반환 값을 설명합니다. 모든 반환 값에 대해 반응형 유형이 지원됩니다.됩니다. 컨트롤러가 긍정적인 ETag 또는 lastModified 타임스탬프 확인을 수행한 경우도 마찬가지입니다. (&
반응형 스택에서 이에 상응하는 내용 보기문자열 기반 요청 입력(예: @RequestParam, @RequestHeader, @PathVariable, @MatrixVariable 및 @CookieValue)을 나타내는 일부 주석이 달린 컨트롤러 메서드 인수가 문자열이
반응형 스택에서 이에 상응하는 내용 보기RFC 3986에서는 경로 세그먼트의 이름-값 쌍에 대해 설명합니다. Spring MVC에서는 Tim Berners-Lee의 "이전 게시물"을 기반으로 이를 "행렬 변수"라고 부르지만 URI 경로 매개변수라고도 할 수 있습니다.매
반응형 스택에서 이에 상응하는 내용 보기 @RequestParam 주석을 사용하여 서블릿 요청 매개변수(즉, 쿼리 매개변수 또는 양식 데이터)를 컨트롤러의 메서드 인수에 바인딩할 수 있습니다. 다음 예에서는 그 방법을 보여줍니다.@RequestParam을 사용하여 pe
반응형 스택에서 이에 상응하는 내용 보기 @RequestHeader 주석을 사용하여 요청 헤더를 컨트롤러의 메서드 인수에 바인딩할 수 있습니다. 헤더가 포함된 다음 요청을 고려하세요.다음 예에서는 Accept-Encoding 및 Keep-Alive 헤더의 값을 가져옵니
반응형 스택에서 이에 상응하는 내용 보기 @CookieValue 주석을 사용하여 HTTP 쿠키 값을 컨트롤러의 메서드 인수에 바인딩할 수 있습니다. 다음 쿠키를 사용한 요청을 고려해보세요.다음 예에서는 쿠키 값을 가져오는 방법을 보여줍니다.JSESSIONID 쿠키의 값
반응형 스택에서 이에 상응하는 내용 보기 @ModelAttribute 메소드 매개변수 주석은 요청 매개변수를 모델 객체에 바인딩합니다. 예를 들어:Pet 인스턴스에 바인딩합니다.Pet 인스턴스는 다음과 같습니다.@ModelAttribute 메소드에 의해 추가될 수 있는
반응형 스택에서 이에 상응하는 내용 보기@SessionAttributes는 요청 간 HTTP 서블릿 세션에 모델 속성을 저장하는 데 사용됩니다. 특정 컨트롤러에서 사용하는 세션 속성을 선언하는 유형 수준 주석입니다. 여기에는 일반적으로 후속 요청에 대한 액세스를 위해
반응형 스택에서 이에 상응하는 내용 보기전역적으로 관리되고(예를 들어 필터에 의해 컨트롤러 외부에서) 존재하거나 존재하지 않을 수 있는 기존 세션 속성에 액세스해야 하는 경우 다음과 같이 메소드 매개변수에 @SessionAttribute 주석을 사용할 수 있습니다. 다
반응형 스택에서 이에 상응하는 내용 보기 @SessionAttribute와 유사하게 @RequestAttribute 주석을 사용하여 이전에 생성된 기존 요청 속성(예: 서블릿 필터 또는 HandlerInterceptor를 통해)에 액세스할 수 있습니다.@RequestA
기본적으로 모든 모델 속성은 리디렉션 URL에서 URI 템플릿 변수로 노출되는 것으로 간주됩니다. 나머지 속성 중에서 기본 유형, 컬렉션 또는 기본 유형의 배열인 속성은 자동으로 쿼리 매개변수로 추가됩니다.모델 인스턴스가 리디렉션을 위해 특별히 준비된 경우 기본 유형
플래시 속성은 한 요청이 다른 요청에서 사용할 속성을 저장하는 방법을 제공합니다. 이는 리디렉션할 때 가장 일반적으로 필요합니다. 예를 들어 Post-Redirect-Get 패턴입니다. Flash 속성은 리디렉션(일반적으로 세션에서) 전에 일시적으로 저장되어 리디렉션
반응형 스택에서 이에 상응하는 내용 보기MultipartResolver가 활성화되면 multipart/form-data가 포함된 POST 요청의 콘텐츠가 구문 분석되어 일반 요청 매개변수로 액세스됩니다. 다음 예에서는 하나의 일반 양식 필드와 하나의 업로드된 파일에 액
반응형 스택에서 이에 상응하는 내용 보기 @RequestBody 주석을 사용하면 요청 본문을 읽고 HttpMessageConverter를 통해 객체로 역직렬화할 수 있습니다. 다음 예에서는 @RequestBody 인수를 사용합니다.MVC 구성의 메시지 변환기 옵션을 사
반응형 스택에서 이에 상응하는 내용 보기 HttpEntity는 @RequestBody를 사용하는 것과 거의 동일하지만 요청 헤더와 본문을 노출하는 컨테이너 개체를 기반으로 합니다. 다음 목록은 예를 보여줍니다.
반응형 스택에서 이에 상응하는 내용 보기 메서드에 @ResponseBody 주석을 사용하여 HttpMessageConverter를 통해 응답 본문에 반환을 직렬화할 수 있습니다. 다음 목록은 예를 보여줍니다.@ResponseBody는 클래스 수준에서도 지원되며, 이 경
반응형 스택에서 이에 상응하는 내용 보기 ResponseEntity는 @ResponseBody와 비슷하지만 상태와 헤더가 있습니다. 예를 들어:Spring MVC는 단일 값 반응 유형을 사용하여 ResponseEntity를 비동기적으로 생성하거나 본문에 대한 단일 및
Spring은 Jackson JSON 라이브러리를 지원합니다.반응형 스택에서 이에 상응하는 내용 보기Spring MVC는 객체에 있는 모든 필드의 하위 집합만 렌더링할 수 있는 Jackson의 직렬화 뷰에 대한 기본 지원을 제공합니다. @ResponseBody 또는 R
반응형 스택에서 이에 상응하는 내용 보기@ModelAttribute 주석을 사용할 수 있습니다.@RequestMapping 메소드의 메소드 인수에서 모델의 객체를 생성 또는 액세스하고 WebDataBinder를 통해 요청에 바인딩합니다.@RequestMapping 메서
@Controller 또는 @ControllerAdvice 클래스는 @InitBinder 메서드를 사용하여 WebDataBinder 인스턴스를 초기화할 수 있으며, 이는 다음을 수행할 수 있습니다.요청 매개변수를 모델 객체에 바인딩합니다.요청 값을 문자열에서 객체 속성
반응형 스택에서 이에 상응하는 내용 보기Spring MVC에는 Java Bean 유효성 검사를 사용하는 옵션을 포함하여 @RequestMapping 메서드에 대한 유효성 검사 지원이 내장되어 있습니다. 검증 지원은 두 가지 수준에서 작동합니다.먼저 @ModelAttri
반응형 스택에서 이에 상응하는 내용 보기@Controller 및 @ControllerAdvice 클래스는 다음 예제와 같이 컨트롤러 메서드의 예외를 처리하기 위해 @ExceptionHandler 메서드를 가질 수 있습니다.예외는 전파되는 최상위 예외(예: 직접 IOEx
반응형 스택에서 이에 상응하는 내용 보기@ExceptionHandler, @InitBinder 및 @ModelAttribute 메서드는 해당 메서드가 선언된 @Controller 클래스 또는 클래스 계층 구조에만 적용됩니다. 대신 @ControllerAdvice 또는
Spring Web MVC에는 요청을 라우팅하고 처리하는 데 함수가 사용되며 불변성을 위해 설계된 계약인 경량 기능 프로그래밍 모델인 WebMvc.fn이 포함되어 있습니다. 이는 주석 기반 프로그래밍 모델의 대안이지만 동일한 DispatcherServlet에서 실행됩니
반응형 스택에서 이에 상응하는 내용 보기 이 섹션에서는 URI 작업을 위해 Spring Framework에서 사용할 수 있는 다양한 옵션을 설명합니다.스프링 MVC와 스프링 WebFlux UriComponentsBuilder는 다음 예제와 같이 변수가 있는 URI 템플
Spring MVC는 Servlet 비동기 요청 처리와 광범위하게 통합되어 있습니다.컨트롤러 메서드의 DeferredResult 및 Callable 반환 값은 단일 비동기 반환 값에 대한 기본 지원을 제공합니다.컨트롤러는 SSE 및 원시 데이터를 포함한 여러 값을 스트
Spring MVC를 사용하면 CORS(Cross-Origin Resource Sharing)를 처리할 수 있습니다. 이 섹션에서는 이를 수행하는 방법을 설명합니다.반응형 스택에서 이에 상응하는 내용 보기보안상의 이유로 브라우저는 현재 출처 외부의 리소스에 대한 AJA
반응형 스택에서 이에 상응하는 내용 보기REST 서비스에 대한 일반적인 요구 사항은 오류 응답 본문에 세부 정보를 포함하는 것입니다. Spring Framework는 "HTTP API에 대한 문제 세부 정보" 사양인 RFC 7807을 지원합니다.다음은 이 지원에 대한
반응형 스택에서 이에 상응하는 내용 보기HTTP 캐싱은 웹 애플리케이션의 성능을 크게 향상시킬 수 있습니다. HTTP 캐싱은 Cache-Control 응답 헤더와 그 이후의 조건부 요청 헤더(예: Last-Modified 및 ETag)를 중심으로 진행됩니다. Cache
Spring MVC의 뷰 기술 사용은 플러그 가능합니다. Thymeleaf, Groovy 마크업 템플릿, JSP 또는 기타 기술을 사용하기로 결정했는지 여부는 주로 구성 변경의 문제입니다. 이 장에서는 Spring MVC와 통합된 뷰 기술을 다룹니다. 우리는 당신이 이
반응형 스택에서 이에 상응하는 내용 보기Thymeleaf는 두 번 클릭하여 브라우저에서 미리 볼 수 있는 자연스러운 HTML 템플릿을 강조하는 현대적인 서버 측 Java 템플릿 엔진입니다. 이는 별도의 작업 없이 UI 템플릿에 대한 독립적인 작업(예: 디자이너가 수행)
Spring은 PDF 및 Excel 스프레드시트를 포함하여 HTML 이외의 출력을 반환하는 방법을 제공합니다. 이 섹션에서는 이러한 기능을 사용하는 방법을 설명합니다.HTML 페이지가 항상 사용자가 모델 출력을 보는 가장 좋은 방법은 아니며 Spring을 사용하면 모델
반응형 스택에서 이에 상응하는 내용 보기 Spring은 Jackson JSON 라이브러리를 지원합니다.반응형 스택에서 이에 상응하는 내용 보기MappingJackson2JsonView는 Jackson 라이브러리의 ObjectMapper를 사용하여 응답 콘텐츠를 JSON
MarshallingView는 XML Marshaller(org.springframework.oxm 패키지에 정의됨)를 사용하여 응답 콘텐츠를 XML로 렌더링합니다. MarshallingView 인스턴스의 modelKey Bean 속성을 사용하여 마샬링할 객체를 명시적
반응형 스택에서 이에 상응하는 내용 보기MVC Java 구성 및 MVC XML 네임스페이스는 대부분의 애플리케이션에 적합한 기본 구성과 이를 사용자 정의할 수 있는 구성 API를 제공합니다.구성 API에서 사용할 수 없는 고급 사용자 정의에 대해서는 고급 Java 구성
반응형 스택에서 이에 상응하는 내용 보기Java 구성에서는 다음 예제와 같이 @EnableWebMvc 주석을 사용하여 MVC 구성을 활성화할 수 있습니다.XML 구성에서는 다음 예제와 같이 <mvc:annotation-driven> 요소를 사용하여 MVC 구성을
반응형 스택에서 이에 상응하는 내용 보기 Java 구성에서는 다음 예제와 같이 WebMvcConfigurer 인터페이스를 구현할 수 있습니다.XML에서는 <mvc:annotation-driven/>의 속성과 하위 요소를 확인할 수 있습니다. Spring MVC X
반응형 스택에서 이에 상응하는 내용 보기기본적으로 필드의 @NumberFormat 및 @DateTimeFormat을 통한 사용자 정의 지원과 함께 다양한 숫자 및 날짜 유형에 대한 포맷터가 설치됩니다.Java 구성에 사용자 정의 포맷터 및 변환기를 등록하려면 다음을 사
반응형 스택에서 이에 상응하는 내용 보기기본적으로 Bean 유효성 검사가 클래스 경로(예: Hibernate Validator)에 존재하는 경우 LocalValidatorFactoryBean은 컨트롤러 메서드 인수에서 @Valid 및 @Validated와 함께 사용하기
Java 구성에서는 다음 예제와 같이 들어오는 요청에 적용할 인터셉터를 등록할 수 있습니다.다음 예에서는 XML에서 동일한 구성을 달성하는 방법을 보여줍니다.인터셉터는 주석이 달린 컨트롤러 경로 일치와의 불일치 가능성으로 인해 보안 계층으로 이상적으로 적합하지 않습니다
반응형 스택에서 이에 상응하는 내용 보기Spring MVC가 요청에서 요청된 미디어 유형(예: Accept 헤더, URL 경로 확장, 쿼리 매개변수 등)을 결정하는 방법을 구성할 수 있습니다.기본적으로 Accept 헤더만 선택됩니다.URL 기반 콘텐츠 유형 확인을 사용
반응형 스택에서 이에 상응하는 내용 보기Java 구성에서 사용할 HttpMessageConverter 인스턴스를 설정하고,configureMessageConverters()를 재정의하여 기본적으로 사용되는 인스턴스를 대체할 수 있습니다. 또한 extendMessageC
호출 시 즉시 뷰로 전달되는 ParameterizedViewController를 정의하는 바로가기입니다. 보기가 응답을 생성하기 전에 실행할 Java 컨트롤러 논리가 없는 정적 경우에 이를 사용할 수 있습니다.다음 Java 구성 예는 /에 대한 요청을 home이라는 뷰
반응형 스택에서 이에 상응하는 내용 보기MVC 구성은 뷰 확인자의 등록을 단순화합니다.다음 Java 구성 예에서는 JSP 및 Jackson을 JSON 렌더링의 기본 보기로 사용하여 콘텐츠 협상 보기 해결을 구성합니다.다음 예에서는 XML에서 동일한 구성을 달성하는 방법
반응형 스택에서 이에 상응하는 내용 보기이 옵션은 리소스 기반 위치 목록에서 정적 리소스를 제공하는 편리한 방법을 제공합니다.다음 예에서는 /resources로 시작하는 요청이 있을 경우 상대 경로를 사용하여 웹 애플리케이션 루트 아래 또는 /static 아래의 클래스
Spring MVC는 DispatcherServlet을 /에 매핑(따라서 컨테이너의 기본 서블릿 매핑을 재정의함)하는 동시에 정적 리소스 요청이 컨테이너의 기본 서블릿에 의해 처리되도록 허용합니다. /\*\*의 URL 매핑과 다른 URL 매핑에 비해 우선순위가 가장 낮
반응형 스택에서 이에 상응하는 내용 보기경로 일치 및 URL 처리와 관련된 옵션을 사용자 정의할 수 있습니다. 개별 옵션에 대한 자세한 내용은 PathMatchConfigurer javadoc를 참조하세요.다음 예에서는 Java 구성에서 경로 일치를 사용자 정의하는 방
반응형 스택에서 이에 상응하는 내용 보기@EnableWebMvc는 다음과 같은 DelegatingWebMvcConfiguration을 가져옵니다.Spring MVC 애플리케이션을 위한 기본 Spring 구성 제공WebMvcConfigurer 구현을 감지하고 위임하여 해
반응형 스택에서 이에 상응하는 내용 보기HTTP/2를 지원하려면 Servlet 4 컨테이너가 필요하며 Spring Framework 5는 Servlet API 4와 호환됩니다. 프로그래밍 모델 관점에서 애플리케이션이 수행해야 하는 특정 작업은 없습니다. 그러나 서버 구
이 섹션에서는 REST 끝점에 대한 클라이언트 측 액세스 옵션을 설명합니다.RestClient는 현대적이고 유연한 API를 노출하는 동기식 HTTP 클라이언트입니다. 자세한 내용은 RestClient를 참조하세요.WebClient는 유창한 API로 HTTP 요청을 수행
이 섹션에서는 Spring MVC 애플리케이션의 스프링 테스트에서 사용할 수 있는 옵션을 요약합니다.Servlet API Mocks: 단위 테스트 컨트롤러, 필터 및 기타 웹 구성 요소에 대한 Servlet API 계약의 모의 구현입니다. 자세한 내용은 Servlet
참조 문서의 이 부분에서는 원시 WebSocket 상호 작용을 포함하는 WebSocket 메시징, SockJS를 통한 WebSocket 에뮬레이션, WebSocket을 통한 하위 프로토콜인 STOMP를 통한 게시-구독 메시징에 대한 지원을 다룹니다.WebSocket 프
반응형 스택에서 이에 상응하는 내용 보기Spring Framework는 WebSocket 메시지를 처리하는 클라이언트 측 및 서버 측 애플리케이션을 작성하는 데 사용할 수 있는 WebSocket API를 제공합니다.반응형 스택에서 이에 상응하는 내용 보기 WebSock
공용 인터넷을 통해 통제할 수 없는 제한적인 프록시는 업그레이드 헤더를 전달하도록 구성되지 않았거나 유휴 상태로 보이는 장기 연결을 닫기 때문에 WebSocket 상호 작용을 방해할 수 있습니다.이 문제에 대한 해결책은 WebSocket 에뮬레이션입니다. 즉, WebS