Spring/Spring MVC 11

[Tomcat] 1. Introduction

1. Context하나의 웹 애플리케이션을 의미합니다. 2. 주요 디렉토리환경 변수항목CATALINA_HOMECATALINA_BASE정의Tomcat이 설치된 기본 루트 디렉토리특정 Tomcat 인스턴스의 런타임 설정 디렉토리역할공통된 바이너리(.jar) 및 실행 파일 제공인스턴스별 실행 환경 구성 (설정, 로그, 웹앱 배포 등)포함 내용- bin/, lib/, conf/, etc.- conf/, logs/, webapps/, temp/, work/ 등다중 인스턴스 운영 여부하나만 존재 (공유)인스턴스 수만큼 각각 존재 가능공통 설정 공유O (예: setenv.sh, jar 파일 등)X업그레이드 영향업그레이드 시 모든 인스턴스에 즉시 반영 가능변경 없음 (인스턴스별로 유지됨)설정 파일 누락 시 동작해당 디..

Spring/Spring MVC 2025.04.14

[Spring MVC] 7. HTTP Caching

웹 애플리케이션의 성능을 높이기 위한 방법브라우저나 프록시 서버가 응답을 저장하고 재사용할 수 있게 도와주는 매커니즘 1. Cache-Control클라이언트나 프록시에게 응답을 어떻게 캐시될 지 알리는 HTTP 헤더 (응답 헤더) 흐름클라이언트가 자원을 요청서버는 응답 시, Cache-Control 헤더를 포함해서 응답클라이언트가 해당 설정에 따라 캐싱 자원으로 응답할 지 결정 예시) 뉴스 기사 요청하기더보기더보기GET /news/123HTTP/1.1 200 OKCache-Control: max-age=60Content-Type: text/html브라우저에 응답을 캐싱함 GET /news/12360초 이내 재요청 시, 서버로 요청이 가지 않음. (캐시 사용)60초 이후 재요청 시, 서버로 새 요청 (캐시..

Spring/Spring MVC 2025.04.14

[Spring MVC] 6. Error Response

1. Error ResponseSpring MVC에서의 에러 응답 처리는 RFC 9457 - Problem Details for HTTP APIs를 기반으로 합니다. 2. 핵심 개념 및 클래스 개념설명ProblemDetailRFC 9457에 정의된 문제 상세 형식을 표현하는 클래스.표준 필드와 커스텀 필드를 포함할 수 있음.ErrorResponseHTTP 상태 코드, 헤더, RFC 9457 형식의 바디를 포함하는 오류 응답 계약.Spring MVC의 모든 예외가 이를 구현함.ErrorResponseExceptionErrorResponse를 구현한 기본 클래스.사용자 정의 예외에서 상속해 사용 가능.ResponseEntityExceptionHandler예외를 처리하고 ProblemDetail 형식으로 응답..

Spring/Spring MVC 2025.04.12

[Spring MVC] 3. HTTP Message Conversion

1. HTTP Message ConversionHTTP 요청/응답의 본문(body)을 Java 객체로 변환하거나, 반대로 Java 객체를 HTTP 본문으로 변환하는 컴포넌트입니다. 2. 구현체MessageConverter설명지원 기본 Media TypeStringHttpMessageConverterString을 읽고 쓰는 변환기text/*, text/plainFormHttpMessageConverter폼 데이터를 읽고 씀- 읽기: MultiValueMap- 쓰기: MultiValueMap도 가능application/x-www-form-urlencodedmultipart/form-dataByteArrayHttpMessageConverter바이트 배열을 읽고 씀*/*application/octet-strea..

Spring/Spring MVC 2025.04.12

[Spring MVC] 2. Filters

1. Form DataServlet API는 POST 요청에 대해서만 request.getParamaeter*() 사용 가능 FormContentFilterPUT, PATCH, DELETE 요청은 서블릿 스펙상으로는 바디 패싱을 하지 않음PUT, PATCH, DELETE 요청에서도 body를 파싱하여 getParamaeter*()로 접근 가능하게 함body를 application/x-www-form-urlencoded로 파싱함getParamaeter*()로 인해 FormData를 @RequestParam, @ModelAttribute에서 바인딩할 수 있음 예제) FormContentFilter 등록더보기더보기더보기public class MyWebInitializer implements WebApplica..

Spring/Spring MVC 2025.04.11

[Spring MVC] 4-3. Handler Methods: Controller Advice

1. Controller Advice항목설명사용 어노테이션- @ControllerAdvice- @RestControllerAdvice: @ControllerAdvice + @ResponseBody 조합기본 적용 범위메서드가 선언된 @Controller 클래스 내에서만 적용됨동작 기반 구성 요소RequestMappingHandlerMapping,ExceptionHandlerExceptionResolver가 감지하여 적용내부 구성 가능 메서드@ExceptionHandler, @InitBinder, @ModelAttribute- @ExceptionHandler 우선순위로컬 메서드가 전역 메서드보다 우선 적용됨- @InitBinder / @ModelAttribute 우선순위전역 메서드가 로컬 메서드보다 우선 적..

Spring/Spring MVC 2023.10.17

[Spring MVC] 5. @InitBinder

1. @InitBinderWebDataBinder 객체를 초기화하는 데 사용되는 메서드를 표시하는 어노테이션입니다.컨트롤러에서 요청 데이터의 바인딩과 변환을 제어하고 사용자 정의하는데 유용한 도구입니다. WebDataBinder스프링의 데이터 바인딩과 유효성 검사 기능을 제공합니다.설정을 조정하여 특정 데이터 형식이나 커스텀 타입을 제대로 처리할 수 있습니다.항목설명문자열 기반 요청 값 변환요청 파라미터, 경로 변수, 헤더, 쿠키 등의 문자열 값을 컨트롤러 메서드의 타겟 타입으로 변환적용 대상- 요청 파라미터- 경로 변수 (PathVariable)- 헤더 값 (RequestHeader)- 쿠키 값 (CookieValue)요청 파라미터 바인딩클라이언트로부터의 요청 파라미터를 모델 객체에 바인딩모델 객체 값..

Spring/Spring MVC 2023.10.17

[Spring MVC] 4-2. Handler Methods: Type Conversion

1. Type Conversion항목설명문자열 변환 (기본 방식)@RequestParam, @PathVariable, @RequestHeader 등은 기본적으로 문자열 처리문자열이 아닌 변환인자가 String이 아닌 경우, 등록된 Converter, Formatter를 통해 자동 타입 변환 수행 예제) 문자열 변환더보기1. 기본 제공 구현체@GetMapping("/user")public String get(@RequestParam("newName") String newName, Model model) { model.addAttribute("message", "다음번에 갱신할 이름: " + newName); return "home";} 2. 커스터마이징public class StringToUse..

Spring/Spring MVC 2023.10.17

[Spring MVC] 4-1. Handler Methods: Method Arguments

1. Method ArgumentsSpring MVC에서 지원하는 handler method의 argument 입니다. Class클래스설명WebRequestNativeWebRequest직접 Servlet API를 사용하지 않고 요청 매개변수 및 요청 및 세션 속성에 액세스할 수 있습니다.jakarta.servlet.ServletRequestjakarta.servlet.ServletResponse웹 요청과 응답에 대한 기본 인터페이스입니다.다양한 요청 및 응답 유형에 대한 액세스를 제공합니다.HttpServletRequest와 같은 구체적인 서블릿 요청 유형으로 캐스팅될 수 있습니다.(ServletRequest, HttpServletRequest)(Spring’s MultipartRequest, Multi..

Spring/Spring MVC 2023.10.17

[Spring MVC] 1-2. DispatcherServlet: Special Bean Types

1. DispatcherServlet의 위임 구조DispatcherServlet는 WebApplicationContext의 대리 구성요소들에 작업을 위임하여 요청을 처리합니다.대리 구성요소는 Spring IoC Container에 Bean으로 등록되어 적절하게 사용됩니다. (커스터마이징 가능) 2. 처리 흐름  단계설명관련 구성요소 (전략)1. 요청 수신클라이언트의 HTTP 요청이 DispatcherServlet에 도착-2. Handler 찾기요청 URL에 맞는 컨트롤러(핸들러)를 찾음HandlerMapping(RequestMappingHandlerMapping)3. HandlerAdapter 선택찾은 Handler를 실행할 수 있는 Adapter를 선택HandlerAdapter(RequestMappin..

Spring/Spring MVC 2023.10.16