오늘 할일

  • 장바구니 1단계 진행
    • 상품 목록 페이지 연동
    • 상품 관리 CRUD API 작성
    • 관리자 도구 페이지 연동
  • DispatcherServlet 학습
    • LocaleResolver
    • ThemeResolver

Model 객체에 데이터를 담아 뷰로 전달하기

thymeleaf 템플릿 엔진을 통해서 렌더링할 뷰를 선택할 수 있다.

이때, Model 객체를 사용하면 뷰에 데이터도 전달할 수 있다.

Model 객체는 Controller 에서 생성된 데이터를 담아 View로 전달할 때 사용하는 객체이다.

다음과 같이 사용할 수 있다.

@GetMapping("/user")
public String getUser(Model model) {
    User user = userRepository.findById(1L);   
    model.addAttribute("user", user);     
    return "user"; 
}

다음으로 스프링은 뷰 이름인 "user" 를 찾는다. 스프링은 기본적으로 "src/main/resources/templates" 디렉토리에서 뷰를 찾는다.

뷰를 찾으면, Thymeleaf 템플릿 엔진이 뷰를 렌더링한다. 뷰 파일의 확장자는 ".html"로 설정되어 있어야 한다.

뷰 파일 안에서는 Thymeleaf 태그를 사용하여 데이터를 바인딩한다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>User Profile</title>
</head>
<body>
    <h1>User Profile</h1>
    <p>Name: <span th:text="${user.name}"></span></p>
    <p>Email: <span th:text="${user.email}"></span></p>
</body>
</html>

th:src 와 같이 html 태그에 대한 속성 값을 정해줄 수 있고 "${user.name}" 과 같이 Model에 담아 전송받은 데이터를 사용할 수 있다.

뷰를 렌더링한 결과는 HTTP 응답으로 클라이언트에게 전송된다.

이와 같은 과정을 통해 스프링에서 Thymeleaf 템플릿 엔진을 사용하여 뷰를 렌더링할 수 있다.

(ModelAndView는 Spring MVC가 @Controller 를 지원하기 시작한 이후로 잘 사용하지 않음)

DispatcherServlet

LocaleResolver

  • 다국어 지원등의 이유로 Locale에 따른 처리를 다르게 해주기 위함
  • 기본 설정은 http 헤더의 Accept-Language 에 따라서 설정됨.
  • 쿠키, 세션, fixed 방식으로 지정할 수 있음.

ThemeResolver

  • 현재 애플리케이션에서 사용하는 테마를 식별하는 역할을 한다.
  • 쿠키, 세션, fixed, ResourceBundleTheme 방식으로 지정할 수 있음.

'회고 > 우아한테크코스' 카테고리의 다른 글

2023.05.03 일일 회고  (0) 2023.05.04
2023.05.02 일일 회고  (0) 2023.05.03
2023.04.24 일일 회고  (0) 2023.04.25
2023.04.20 일일 회고  (0) 2023.04.21
2023.04.19 일일 회고  (0) 2023.04.20

+ Recent posts