Spring Boot

[ Spring Boot ] 스프링MVC & Thymeleaf part.1

hanjuCoding 2024. 7. 30. 12:06

 

Thymeleaf 마을 졸렬하다

Thymeleaf란?

JSP를 대신하는 화면처리 기술

 

thymeleaf의 장점

  • Model에 담긴 객체를 화면에서 js로 처리하기 편리
  • JSP와 유사하게 ${ }를 별도 처리 없이 이용 가능
  • 연산, 포맷과 관련된 기능을 추가적인 개발 없이 지원
  • 개발도구를 이용할때 .html파일로 생성하는데 문제가 없고, 별도의 확장자를 이용하지 않는다

라고는 하는데 아직 모르겠음

프로젝트 설정

기본 3개랑, thymeleaf dependencies에 추가

 

포트 8090 설정

 

Edit Configuration 에서

업데이트 설정

 

 

프로젝트 생성

 

SampleDTO

package org.zerock.ex3.dto;

import lombok.Builder;
import lombok.Data;

import java.time.LocalDate;

@Data
@Builder(toBuilder = true)
public class SampleDTO {
    private Long sno;
    private String first;
    private String last;
    private LocalDate regTime;
}

 

SampleController

package org.zerock.ex3.controller;

import ...

@Controller
@RequestMapping("/sample")
@Log4j2
public class SampleController {

    @GetMapping("/ex2")
    //mapping 여러개 쓰고싶으면 배열로 여러게 넣어도댐
    public void exModel(Model model) {
        List<SampleDTO> list = IntStream.rangeClosed(1, 20)
                .asLongStream().mapToObj(i -> {
                    SampleDTO dto = SampleDTO.builder()
                            .sno(i)
                            .first("First.."+i)
                            .last("Last.."+i)
                            .regTime(LocalDate.from(LocalDateTime.now()))
                            .build();
                    return dto;
                }).collect(Collectors.toList());

        model.addAttribute("list", list);
    }

}

 

ex2.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <ul>
        <li th:each="dto : ${list}">
            [[${dto}]]
        </li>
    </ul>
</body>
</html>

 

코드설명

여기서는 코드가 아니라 구조를 봐야함.

SampleDTO 타입의 객체를 컨트롤러에서 추가하고, 이를 Model에 담아서 전송한다.

그러면 ex2.html에서 이를 받아서 화면에 쏴준다.

그동안 Spring에서 한거랑 똑같음

문법 잘 보기!

결과