πνμ리ν (Thymeleaf)
μ€νλ§μμ 곡μμ μΌλ‘ μ§μνλ View ν νλ¦Ώ
HTML λ¬Έμλ₯Ό κ·Έλλ‘ μΈ μ μλ€.
HTMLμ λΈλΌμ°μ μ μ¬λ°λ₯΄κ² νμλ μ μκ³ μ μ νλ‘ν νμ μΌλ‘λ μλνμ¬ κ°λ° νμμ 보λ€
κ°λ ₯ν νμ μ κ°λ₯νκ² νλ€.
πνμ리νμ νΉμ§
Spring Frameworkμ© λͺ¨λ, μ νΈνλ λꡬμμ ν΅ν© νΈμ€νΈ λ° κ³ μ ν κΈ°λ₯μ νλ¬κ·ΈμΈν μ μλ κΈ°λ₯μ κ°μΆμ΄μ
λ°±μλμ νλ‘ νΈμλμμ λ λ€ νμ ν΄μ μ¬μ© κ°λ₯νλ€.
JSPλ νλ‘ νΈμλκ° μλ²μͺ½μ λ€λ£¨λ κ²μ νλ€λ€. κ·Έλ¬λ μ€νλ§μ νμ리νλ λ λ€ νμ νμ¬ μ¬μ© κ°λ₯νκΈ° λλ¬Έμ
μλ²μμ΄ λ¨λ μΌλ‘ λμκ°λ ννλ₯Ό λ§λ€ μ μμ΄ νΈμμ±μ΄ μ’λ€.
μ¦ JSPμ λ¬λ¦¬ Thymeleaf λ¬Έμλ html νμ₯μλ₯Ό κ°κ³ μμ΄ JSPμ²λΌ Servletμ΄ λ¬Έμλ₯Ό νννλ λ°©μμ΄ μλκΈ° λλ¬Έμ μλ² μμ΄λ λμ κ°λ₯νλ€.
SSR:Server Side Rendering
λ°±μλμμ HTMLμ λμ μΌλ‘ μμ±νλ€.
μλ² μͺ½μμ νλ©΄μ λν κ²λ€μ ꡬμ±μ νμ¬ μλ΅μ νλ€.
Client Side Rendering
Rest API + React.js
ν΄λΌμ΄μΈνΈ μΈ‘μμ λ λλ§μ νλ€λΌλ μλ―Έμ΄λ€.
μλ²λ λ°μ΄ν°λ§ μ§ννκ³ ν΄λΌμ΄μΈνΈμΈ‘μ Viewλ§ μ§ννλ€.
ν νλ¦Ώ μμ§
μ΄ν°μ μ΄ λ°μ΄ν°λ€μ νν ν ν νλ¦Ώμ κ²°ν©ν΄μ£Όλ λꡬ
λ°μ΄ν°λ² μ΄μ€μ + μΉ λ¨νλ¦Ώμ κ²°ν©ν΄μ£Όλ μν μ νλ€.
κ·ΈλΌ νμ리νμ μ₯μ κ³Ό λ¨μ μ 무μμΌκΉ?
πμ₯μ μ
1.HTML κ·Έλλ‘ μ΄κ³ , κ·Έλλ‘ μΈ μ μλ€.
HTMLμ κΈ°λ³Έ ꡬ쑰λ₯Ό κ·Έλλ‘ μ¬μ©ν μ μμΌλ©° HTMLνμΌμ μ§μ μ΄μ΄λ λμνλ€
2.λμμΈκ³Ό κ°λ°μ λΆλ¦¬ν΄μ μμ ν μ μλ€.
3.WASλ₯Ό ν΅ν΄ μννμ§ μλλΌλ νμΌ μΉ λΈλΌμ°μ λ₯Ό ν΅ν΄ μ΄ μ μλ€.
πλ¨μ μ
1.jsp νκ·Έ λΌμ΄λΈλ¬λ¦¬μ customνκ·Έλ€μ μ¬μ©ν μ μμ΄μ κΈ°μ‘΄ jspμ½λλ₯Ό μ¬μ¬μ©ν μ μλ€λ μ
2.κΈ°μ‘΄ νκ·Έλ₯Ό μ μ§νκ³ μμ±μΌλ‘ ν νλ¦Ώ ꡬ문μ λ£λλ° μμ΄ μ΄λμ λ νκ³κ° μκ³ μλ°μ€ν¬λ¦½νΈλ μ μ΄μΏΌλ¦¬μ λμμ΄ νμν μ μλ€.
μ£Όμ
ννμ
μ’ λ₯ | λ¬Έλ² | μ€λͺ |
λ³μ ννμ | ${...} | paramter, session, model λ±μ μ μ₯λμ΄ μλ λ³μμ κ°λ€μ λ¬Έμμ΄λ‘ λ³ννμ¬ λΆλ¬μ¨λ€. |
λ©μΈμ§ ννμ | #{...} | message sourceλ‘λΆν° ν€μ ν΄λΉνλ λ©μμ§λ₯Ό κ°μ Έμ¨λ€. |
λ§ν¬ ννμ | @{...} | th:href, th:src, th:action λ±κ³Ό κ°μ΄ URLμ΄ μ§μ λλ μμ±μ μ¬μ©νλ€. |
μ ν λ³μ ννμ | @{...} | λΆλͺ¨ νκ·Έμ th:objectμ μ§μ λ κ°μ²΄λ₯Ό κΈ°μ€μΌλ‘ ν΄λΉ κ°μ²΄μ μμ±μ μ κ·Όνλ€. |
μΈλΌμΈ νν | [[...]], [(...)] | ν μ€νΈ λͺ¨λλ μλ°μ€ν¬λ¦½νΈ λͺ¨λλ‘ λ΄λΆμ μ μΈν λ³μ ννμμ κ°μ κ°μ Έμμ htmlμ μ§μ νμνλ€. |
parameterλ‘ λμ΄μ¨ κ²½μ° => param
session attributeμΈ κ²½μ° => session
request attribute(model)μΈ κ²½μ°λ λ°λ‘ λͺ
μνμ§ μλλ€. requestλΌκ³ λͺ
μνλ©΄ μ€λ₯ λ°μνλ€.
νλΌλ―Έν°κ° μ‘΄μ¬νμ§ μμ κ²½μ° νμ μ€λ₯κ° λ°μνλ€.
<p th:text="#{ message.first }"></p>
<p th:text="#{ message.second(everyone) }"></p>
μ μ΄λ¬Έ
SpringEL
λ³μ ννμ(#{...})μμ SpringELμ μ¬μ©νμ¬ λ¨μν λ³μκ° μλ Object, List, Mapκ°μ κ°μ²΄μ κ°λ€μ λΆλ¬μ¬ μ μμ
μ’ λ₯ | λ¬Έλ² | μ€λͺ |
Object | ${κ°μ²΄λͺ .μμ±λͺ } | ν΄λΉ κ°μ²΄μ μμ±κ°μ λΆλ¬μ¨λ€. |
${κ°μ²΄λͺ ['μμ±λͺ ']} | ||
${κ°μ²΄λͺ .μμ±μ getter()} | ||
List | ${Listκ°μ²΄λͺ [indexλ²μ§Έ κ°μ²΄].μμ±λͺ } | Listμμ indexλ²μ§Έ κ°μ²΄μ μμ±μ λΆλ¬μ¨λ€. |
${Listκ°μ²΄λͺ [indexλ²μ§Έ κ°μ²΄]['μμ±λͺ ']} | ||
${Listκ°μ²΄λͺ [indexλ²μ§Έ κ°μ²΄].μμ±μ getter()} | ||
${Listκ°μ²΄λͺ .get(indexλ²μ§Έ κ°μ²΄).μμ±μ getter()} | ||
${Listκ°μ²΄λͺ .get(indexλ²μ§Έ κ°μ²΄).μμ±λͺ } | ||
Map | ${Mapκ°μ²΄λͺ ['κ°μ²΄μ ν€κ°'].μμ±λͺ } | Mapμμ ν€κ°μ ν΄λΉνλ κ°μ²΄μ μμ±μ λΆλ¬μ¨λ€. |
${Mapκ°μ²΄λͺ ['κ°μ²΄μ ν€κ°']['μμ±λͺ ']} | ||
${Mapκ°μ²΄λͺ ['κ°μ²΄μ ν€κ°'].μμ±μ getter()} |
'java > spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Spring JWT (JSON Web Token) - μΈμ¦κ³Ό κΆν λΆμ¬ ꡬννκΈ° (0) | 2023.05.10 |
---|---|
REST API (0) | 2023.04.27 |
Spring κ³μΈ΅ν κ°λ° Architecture (0) | 2023.03.02 |
Spring AOP (0) | 2023.02.28 |
Spring Dependency Injection (0) | 2023.02.23 |