티스토리 뷰

1. HandlerMapping

:: 클라이언트의 요청을 처리할 Controller를 결정하는 컴포넌트

:: 어떤 REST API 요청을 받았을 때, 어떤 메서드로 처리할지 정의


1.1 HandlerMapping 내 탐색 순서

Static Content
Template + Model content

  1. 가장 먼저 RequestMappingHandlerMapping 로 매핑된 웹 페이지가 있는지 확인
  2. 없다면 SimpleUrlHandlerMapping 통해 /resources/static 내 파일을 검색
  3. 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 수업자료

김형한 인프런 강의 - 스프링 입

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함