Contents

Thymeleaf์— ๋Œ€ํ•˜์—ฌ (with.Java)

   Mar 13, 2025     1 min read

Thymeleaf์— ๋Œ€ํ•˜์—ฌ (with.Java) ์•Œ์•„๋ณธ ๊ธ€์ž…๋‹ˆ๋‹ค.

Thymeleaf: ์ž๋ฐ” ๊ธฐ๋ฐ˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ๋งค๋ ฅ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ํ™”๋ฉด์— ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, Java ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ํšจ์œจ์ ์ด๊ณ  ์ง๊ด€์ ์ธ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Thymeleaf๋Š” ์ด๋Ÿฌํ•œ ํ•„์š”๋ฅผ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ Java ๊ธฐ๋ฐ˜์˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ž…๋‹ˆ๋‹ค.

Thymeleaf๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Thymeleaf๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTML, XML, JavaScript, CSS, ๊ทธ๋ฆฌ๊ณ  ํ…์ŠคํŠธ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ž…๋‹ˆ๋‹ค. Spring Framework์™€์˜ ๊ฐ•๋ ฅํ•œ ํ†ตํ•ฉ์œผ๋กœ ์œ ๋ช…ํ•˜๋ฉฐ, ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
Thymeleaf๋Š” HTML ๋ฌธ๋ฒ•์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์–ด, ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜‘์—…ํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Thymeleaf์˜ ์ฃผ์š” ํŠน์ง•

1. ์ž์—ฐ์Šค๋Ÿฌ์šด HTML ์ฝ”๋“œ ์ž‘์„ฑ

Thymeleaf๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์—ด์–ด๋„ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” HTML ๋ฌธ๋ฒ•์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‚ด์ธ„๋Ÿด ํ…œํ”Œ๋ฆฟ(Natural Template)์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž ๊ฐ„ ํ˜‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

2. Spring Framework์™€์˜ ์™„๋ฒฝํ•œ ํ†ตํ•ฉ

Thymeleaf๋Š” Spring MVC์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๋™๋˜๋ฉฐ, ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Model ๊ฐ์ฒด์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ‘œํ˜„์‹ ์ง€์›

Thymeleaf๋Š” ๋‹ค์–‘ํ•œ ํ‘œํ˜„์‹์„ ์ œ๊ณตํ•˜์—ฌ ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ€์ˆ˜ ํ‘œํ˜„์‹: ${}
  • ์กฐ๊ฑด๋ถ€ ํ‘œํ˜„์‹: th:if, th:unless
  • ๋ฐ˜๋ณต ํ‘œํ˜„์‹: th:each

4. ์„œ๋ฒ„-์‚ฌ์ด๋“œ ๋ Œ๋”๋ง

์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ Œ๋”๋งํ•œ HTML ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ถ”๊ฐ€์ ์ธ ๋ Œ๋”๋ง ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

5. ํ™•์žฅ์„ฑ

Thymeleaf๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ปค์Šคํ…€ ๋‹ค์ด์–ผ๋ ‰ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

Thymeleaf๋Š” ์ง๊ด€์ ์ด๊ณ  ๊ฐ•๋ ฅํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ, Java ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, Spring Framework์™€์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ†ตํ•ฉ์œผ๋กœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ , HTML ์นœํ™”์ ์ธ ๋ฌธ๋ฒ•์œผ๋กœ ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ ๊ฐ„ ํ˜‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

Thymeleaf๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋”์šฑ ํšจ์œจ์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”! ๐Ÿš€