Spring/๐Ÿ”ฅ[spring]์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์›น ํ”„๋กœ์ ํŠธ_๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จ

3.2 Thymeleaf์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

1son 2023. 2. 4. 06:56

@GetMapping์˜ value ์†์„ฑ๊ฐ’์„ '{}'๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ URL์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

exModel()์€ ๋‚˜์ค‘์— ๋‹ค์–‘ํ•˜๊ฒŒ Thymeleaf๋ฅผ ์‹ค์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ URL ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

SampleDTO ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ 20๊ฐœ ์ถ”๊ฐ€ํ•˜๊ณ  ์ด๋ฅผ Model์— ๋‹ด์•„์„œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

3.2.1 ๋ฐ˜๋ณต๋ฌธ ์ฒ˜๋ฆฌ

th:each = "๋ณ€์ˆ˜: ${๋ชฉ๋ก} "

 

 

3.2.2 ์ œ์–ด๋ฌธ ์ฒ˜๋ฆฌ

th:if์™€ th:unless๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋‹ค๋ฅธ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. 

 

3.2.3 inline ์†์„ฑ

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ th:inline์†์„ฑ

๊ฒฐ๊ณผ์—์„œ ์ฃผ๋ชฉํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„ 

 

3.4 Thymeleaf์˜ ๋ ˆ์ด์•„์›ƒ

- JSP์˜ include์™€ ๊ฐ™์ด ํŠน์ • ๋ถ€๋ถ„์„ ์™ธ๋ถ€ ํ˜น์€ ๋‚ด๋ถ€์—์„œ ๊ฐ€์ ธ์™€์„œ ํฌํ•จํ•˜๋Š” ํ˜•ํƒœ 

- ํŠน์ •ํ•œ ๋ถ€๋ถ„์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•ด์„œ ๋‚ด์šฉ์— ํฌํ•จํ•˜๋Š” ํ˜•ํƒœ 

 

3.4.1 include ๋ฐฉ์‹์˜ ์ฒ˜๋ฆฌ 

<div> ํ˜น์€ <th:block>์„ ์ด์šฉํ•ด์„œ fragment1 ํŒŒ์ผ์— ์žˆ๋Š” ์กฐ๊ฐ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

3.4.2 ๋ ˆ์ด์•„์›ƒ ํ…œํ”Œ๋ฆฟ ๋งŒ๋“ค๊ธฐ

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

  <style>

    *{
      margin: 0;
      padding: 0;
    }
    .header {
      width: 100vw;
      height: 20vh;
      background-color: aqua;
    }
    .content {
      width: 100vw;
      height: 70vh;
      background-color: lightgray;
    }
    .footer{
      width: 100vw;
      height: 10vh;
      background-color: green;
    }

  </style>

<div class="header">
  <h1>HEADER</h1>
</div>
<div class="content">
  <h1>CONTENT</h1>
</div>
<div class="footer">
  <h1>FOOTER</h1>
</div>
</body>
</html>