본문 바로가기

spring MVC

$ spring mvc - 10 Spring MVC 구조 (dispatcher-servlet)

  1. MultipartResolver
    : 파일업로드 요청을 처리하는데 사용되는 인터페이스
    이게 등록되어 있어야 디스패처 서블릿이 그 빈을 사용할 수 있다.
    파일 업로드를 요청할 수 있다.
    구현체 CommonMultipartResolver, StandardServletMultipartResolver
  2. LocaleResolver
    : 디스패처 서블릿에 맨 처음에 요청이 들어왔을 때
    이 요청이 어느 지역에서 왔는지 확인할 때 사용하는 인터페이스
    메시지 소스에서 적절한 언어에 해당하는 메시지 키값을 리졸빙해서
    적절한 해당 지역에 언어로 전달할 때 사용한다. (--> ex 국제화)
    구현체 : 대표 - AcceptHeaderLocaleResolver
  3. .ThemeResolver
    : theme 이라는 키값을 뷰에 전달하고 
    뷰가 키값에 해당하는 적절한 리소스(css)를 불러와서
    화면(뷰, 사용자 ui)의 테마를 바꾸는데 사용된다.
    ex) 다크모드, 라이트모드 등 --> 물론 ThemeResolver를 사용하지 않고 테마를 바꾸는 방법을 많아
    구현체 : 대표 FixedThemeResolver
  4. HandlerMapping
    : (간략) 어떤 요청이 들어왔을 때 그 요청을 처리하는 핸들러를 찾아주는 인터페이스
    구현체 : RequestMappingHandlerMapping(주 사용), BeanNameUrlHandlerMapping
  5. HandlerAdapter
    : 여러가지(커스텀 핸들러 포함) 형태의 핸들러를 실제 처리시켜주는는 인터페이스가 HandlerAdapter
    구현체 : 대표 : RequestMappingHandlerAdapter
  6. HandlerExcceptionReslovers
    :  요청 처리 시 예외가 발생하면 exceptionResolver가 예외를 처리하게 된다
    구현체 : @ExceptionHandler
  7. RequestToViewNameTranslator
    : 뷰 이름을 return 하는 메소드를 사용하는 경우
    뷰 이름을 생략할 수도 있다. --> 이 경우 요청을 가지고 판단한다.
  8. ViewResolvers
    : prefix와 sufix로 view path를 간략화 시켜주는 인터페이스
  9. FlashMapManager
    : (상대적으로 최근에 추가된 인터페이스)
    보통 redirect 할 때 데이터를 받고 저장한 후 redirect 하게 되는데
    중복  폼 서브밋을 방지하기 위한 요청 처리 패턴인 redirect를 사용하는데 사용되는 인터페이스
    구현체 : SessionFlashMapManager

 

--

이렇게 return 에 뷰 이름을 생략하는 경우

요청을 기반으로 "/sample"으로 뷰 이름도 sample 이겠지 판단하고 알아서 sample.jsp로 넘겨준다

물론 실습은 뷰 리졸버에 prefix="/WEB-INF/" , sufix=".jsp" 설정해둔 상태

결과는

요청에 따른 뷰 반환 성공