티스토리 뷰
1. HandlerMapping
:: 클라이언트의 요청을 처리할 Controller를 결정하는 컴포넌트
:: 어떤 REST API 요청을 받았을 때, 어떤 메서드로 처리할지 정의
1.1 HandlerMapping 내 탐색 순서
- 가장 먼저 RequestMappingHandlerMapping 로 매핑된 웹 페이지가 있는지 확인
- 없다면 SimpleUrlHandlerMapping 통해 /resources/static 내 파일을 검색
- WelcomePageHandlerMapping 로
- (1) /resources/static 내 index.html 파일 검색
- (2) /resources/templates 내 index.html 파일 검색
(2)의 경우 == Template + Model의 경우, ViewResolver를 통해 templates 탐색,
=> Thymeleaf Template 엔진이 HTML로 변환 후 반환
2. HandlerMapping의 종류
2.1 RequestMappingHandlerMapping
:: @RequestMapping 어노테이션을 사용하여 컨트롤러와 메서드를 매핑
:: 동적 리소스를 반환
:: 일반적으로 사용되는 HandlerMapping의 일종
더보기
- Method :: HTTP 요청의 메서드 (GET, POST, PATCH 등 …)
- Value :: 요청한 URL 중 Origin을 제외한 Path 부터
- @Controller 내 RequestMappring은 웹 클라이언트가 보내는 어떤 요청을 받아서 처리할지 정의
@RequestMapping(value = "/", method = RequestMethod.GET)
- 클래스 단위가 아닌 메서드 위에 붙여 메서드 단위로 RequestMapping 적용 가능
@Controller
public class UserController {
@RequestMapping(method = RequestMethod.GET, value = "/users")
public String userPage() { ... }
@RequestMapping(method = RequestMethod.GET, value = "/users/1/detail")
public String detailPage() { ... }
}
- 클래스 단위로 한번에 적용
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping(method = RequestMethod.GET, value = "") // /users
public String userPage() { ... }
@RequestMapping(method = RequestMethod.GET, value = "/1/detail") //users/1/detail
public String detailPage() { ... }
}
- 대체 어노테이션
@PostMapping("/users")
@PutMapping("/users/{id}")
@DeleteMapping("/users/{id}")
@PatchMapping("/users/{id}")
2.2 WelcomePageHandlerMapping
:: Controller 없이 View를 반환
- main 디렉토리 내
1) /resources/static 내 파일 반환
:: “Spring” 자체적으로 정적 리소스 처리를 위한 디렉토리
:: 캐싱을 통한 304 Not Modified로 리소스 활용 가능
2) /resources/templates 내 파일 반환
:: “Thymeleaf” 자체적으로 View Template을 저장하기 위한 디렉토리
2.3 BeanNameUrlHandlerMapping
:: 빈 이름과 URL을 매핑
:: 컨트롤러의 빈 이름이 요청 URL과 일치하면 해당 컨트롤러가 선택
2.4 SimpleUrlHandlerMapping
:: ResouresHandler와 같은 의미로 static 디렉토리 내 정적 리소스 타겟팅
⇒ PNG, JPG와 같은 이미지 + favicon.ico + 정적 페이지를 위한 html
:: XML 설정을 통해 URL과 컨트롤러를 매핑
:: 캐싱 관련 응답 헤더 추가(304 Not Modified 활용) → 리소스 조회 효율 향상 가능
:: 간단한 매핑 규칙을 설정할 때 유용
출처
ASAC 수업자료
김형한 인프런 강의 - 스프링 입
'정리용 > SpringBoot' 카테고리의 다른 글
[Spring] 2-2-2. Spring MVC - Servlet 객체 (0) | 2025.02.07 |
---|---|
[Spring] 2-2-1. Spring MVC - Controller의 반환 값 (1) | 2025.02.07 |
[Spring] 2-2. Spring MVC - 구조와 동작 (0) | 2025.02.07 |
[Spring] 2. Spring MVC (0) | 2025.02.07 |
[Spring] 1. 스프링 부트 기본 설정 (0) | 2025.02.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- useReducer
- ASAC
- react
- Nginx
- useMemo
- asac7
- useCallback
- asac7기
- asac#asac7기
- useLayoutEffect
- useState
- useEffect
- acac
- git
- ssh
- memo
- useRef
- asac7#asac
- useContext
- acas#acas7기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함