• Home
  • About
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • All Posts
    • All Tags
    • All categories
  • categories
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬
    • Spring
    • Thymeleaf
    • κΈ°μˆ λ©΄μ ‘
  • Projects

Thymeleaf - Standard URL Syntax

09 Jun 2021

πŸ”·Thymeleaf - Standard URL Syntax

βœ” 1.Absolute URLs (μ ˆλŒ€κ²½λ‘œ)

- μ ˆλŒ€ URL을 μ‚¬μš©ν•˜λ©΄ λ‹€λ₯Έ μ„œλ²„μ— λŒ€ν•œ 링크λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œν† μ½œ 이름 ( http://λ˜λŠ” https://) 을 μ§€μ •ν•˜μ—¬ μ‹œμž‘ν•©λ‹ˆλ‹€.
- <a th:href="@{http://www.thymeleaf/documentation.html}">
- 그듀은 μ „ν˜€ μˆ˜μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ ( μ„œλ²„μ— URL 재 μž‘μ„± ν•„ν„°κ°€ κ΅¬μ„±λ˜μ–΄ 있고 HttpServletResponse.encodeUrl(...)방법 μ—μ„œ μˆ˜μ •μ„ μˆ˜ν–‰ ν•˜μ§€ μ•ŠλŠ” ν•œ )
- <a href="http://www.thymeleaf/documentation.html">

βœ” 2. Context-relative URLs (μƒλŒ€κ²½λ‘œ)

- Tκ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” URL μœ ν˜•μ€ λ¬Έλ§₯에 λ”°λ₯Έ URL μž…λ‹ˆλ‹€. 이듀은 μ›Ή μ‘μš© ν”„λ‘œκ·Έλž¨ λ£¨νŠΈκ°€ μ„œλ²„μ— μ„€μΉ˜λ˜λ©΄ μƒλŒ€μ μΈ URLμž…λ‹ˆλ‹€. μš°λ¦¬κ°€ λ°°ν¬ν•˜λŠ” 경우 예λ₯Ό λ“€μ–΄, myapp.warTomcat μ„œλ²„μ— νŒŒμΌμ„, 우리의 μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ•„λ§ˆλ„ μ•‘μ„ΈμŠ€ ν•  수 http://localhost:8080/myapp및 myapp될 것 μ»¨ν…μŠ€νŠΈ 이름 .
- λ¬Έλ§₯ μƒλŒ€ URL은 λ‹€μŒμœΌλ‘œ μ‹œμž‘ν•©λ‹ˆλ‹€ /.
- <a th:href="@{/order/list}">
- 에 앱이 μ„€μΉ˜λœ http://localhost:8080/myapp경우이 URL은 λ‹€μŒμ„ 좜λ ₯ν•©λ‹ˆλ‹€.
- <a href="/myapp/order/list">

βœ” 3. Server-relative URLs (μ„œλ²„ μƒλŒ€κ²½λ‘œ)

- μ„œλ²„ μƒλŒ€ URL은 URL이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ»¨ν…μŠ€νŠΈ λ‚΄μ˜ λ¦¬μ†ŒμŠ€μ— λ§ν¬λ˜λŠ” 것을 μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜κ³  μ»¨ν…μŠ€νŠΈ μƒλŒ€ URLκ³Ό 맀우 μœ μ‚¬ ν•˜λ―€λ‘œ λ™μΌν•œ μ„œλ²„μ˜ λ‹€λ₯Έ μ»¨ν…μŠ€νŠΈμ— 링크 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- <a th:href="@{~/billing-app/showDetails.htm}">
- ν˜„μž¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ»¨ν…μŠ€νŠΈλŠ” λ¬΄μ‹œλ˜λ―€λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄μ— λ°°ν¬λ˜μ—ˆμ§€λ§Œ http://localhost:8080/myapp이 URL은 λ‹€μŒμ„ 좜λ ₯ν•©λ‹ˆλ‹€.
- <a href="/billing-app/showDetails.htm">

βœ” 4. Protocol-relative URLs (ν”„λ‘œν† μ½œ κΈ°μ€€κ²½λ‘œ)

- ν”„λ‘œν† μ½œ κΈ°μ€€ URL은 μ‹€μ œλ‘œ ν˜„μž¬ νŽ˜μ΄μ§€λ₯Ό ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν”„λ‘œν† μ½œ (HTTP, HTTPS)을 μœ μ§€ν•˜λŠ” μ ˆλŒ€ URLμž…λ‹ˆλ‹€. 일반적으둜 μŠ€νƒ€μΌ, 슀크립트 λ“±κ³Ό 같은 μ™ΈλΆ€ λ¦¬μ†ŒμŠ€λ₯Ό ν¬ν•¨ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
- <script th:src="@{//scriptserver.example.net/myscript.js}">...</script>
- … μˆ˜μ •λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ λ Œλ”λ§λ©λ‹ˆλ‹€ ( URL 재 μž‘μ„± μ œμ™Έ ).
- <script src="//scriptserver.example.net/myscript.js">...</script>

βœ” 5. Adding parameters (λ§€κ°œλ³€μˆ˜ μΆ”κ°€)

- @{...}ν‘œν˜„μ‹μœΌλ‘œ 생성 ν•œ URL에 맀개 λ³€μˆ˜λ₯Ό μ–΄λ–»κ²Œ μΆ”κ°€ ν•©λ‹ˆκΉŒ? λ‹¨μˆœν•œ:
- <a th:href="@{/order/details(id=3)}">
- λ‹€μŒκ³Ό 같이 좜λ ₯λ©λ‹ˆλ‹€.
- <a href="/order/details?id=3">
- μ‰Όν‘œλ‘œ κ΅¬λΆ„ν•˜μ—¬ μ—¬λŸ¬ 맀개 λ³€μˆ˜λ₯Ό μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- <a th:href="@{/order/details(id=3,action='show_all')}">
- λ‹€μŒκ³Ό 같이 좜λ ₯λ©λ‹ˆλ‹€.
- <!-- Note ampersands (&) should be HTML-escaped in tag attributes... -->
  <a href="/order/details?id=3&amp;action=show_all">
- 일반 맀개 λ³€μˆ˜ 와 μœ μ‚¬ ν•˜μ§€λ§Œ URL 경둜 내에 자리 ν‘œμ‹œμžλ₯Ό μ§€μ •ν•˜μ—¬ 경둜 λ³€μˆ˜ ν˜•μ‹μœΌλ‘œ 맀개 λ³€μˆ˜λ₯Ό 포함 ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€ .
- <a th:href="@{/order/{id}/details(id=3,action='show_all')}">
- λ‹€μŒκ³Ό 같이 좜λ ₯λ©λ‹ˆλ‹€.
-<a href="/order/3/details?action=show_all">

βœ” 6. URL fragment identifiers

- 파편 μ‹λ³„μžλŠ” 맀개 λ³€μˆ˜λ₯Ό ν¬ν•¨ν•˜κ±°λ‚˜ ν¬ν•¨ν•˜μ§€ μ•Šκ³  URL에 포함될 수 μžˆμŠ΅λ‹ˆλ‹€. 항상 URLλ² μ΄μŠ€μ— ν¬ν•¨λ˜λ―€λ‘œ λ‹€μŒμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
- <a th:href="@{/home#all_info(action='show')}">
- … λ‹€μŒκ³Ό 같이 좜λ ₯λ©λ‹ˆλ‹€.
- <a href="/home?action=show#all_info">

βœ” 7. URL rewriting

- Thymeleafλ₯Ό μ‚¬μš©ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ URL 재 μž‘μ„± ν•„ν„° λ₯Ό ꡬ성 ν•  수 있으며 Thymeleaf ν…œν”Œλ¦Ώμ—μ„œ 생성 된 λͺ¨λ“  URL에 λŒ€ν•΄ Servlet API response.encodeURL(...)의 javax.servlet.http.HttpServletResponse클래슀 μ—μ„œ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬μ΄λ₯Ό μˆ˜ν–‰ ν•©λ‹ˆλ‹€.
- 이것은 Java μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ URL 재 μž‘μ„± μž‘μ—…μ„ μ§€μ›ν•˜λŠ” ν‘œμ€€ 방법이며 URL이 λ‹€μŒμ„ μˆ˜ν–‰ ν•  수 μžˆλ„λ‘ν•©λ‹ˆλ‹€.
- μ‚¬μš©μžκ°€ μΏ ν‚€λ₯Ό ν™œμ„±ν™”ν–ˆλŠ”μ§€ μ—¬λΆ€λ₯Ό μžλ™μœΌλ‘œ κ°μ§€ν•˜κ³  ;jsessionid=...κ·Έλ ‡μ§€ μ•Šμ€ 경우 URL에 쑰각을 μΆ”κ°€ν•˜κ±°λ‚˜ 첫 번째 μš”μ²­μ΄κ³  μΏ ν‚€ ꡬ성을 아직 μ•Œ μˆ˜μ—†λŠ” 경우.
- ν•„μš”ν•œ 경우 URL에 ν”„λ‘μ‹œ ꡬ성을 μžλ™μœΌλ‘œ μ μš©ν•©λ‹ˆλ‹€.
- μ—¬λŸ¬ μ„œλ²„μ— 배포 된 μ½˜ν…μΈ μ— μ—°κ²°ν•˜λ €λ©΄ μ„œλ‘œ λ‹€λ₯Έ CDN (Content Delivery Network) 섀정을 μ‚¬μš©ν•©λ‹ˆλ‹€ (κ΅¬μ„±λœ 경우).
- URL 재 μž‘μ„±μ„μœ„ν•œ 맀우 일반적이며 ꢌμž₯λ˜λŠ” κΈ°μˆ μ€ URLRewriteFilter μž…λ‹ˆλ‹€.

βœ” 8. Only for th:href’s?

- URL @{...}ν‘œν˜„μ‹μ΄ th:href속성 μ—λ§Œ μ‚¬μš©λœλ‹€κ³  μƒκ°ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€ . 사싀 λ³€μˆ˜ ν‘œν˜„ ( )μ΄λ‚˜ λ©”μ‹œμ§€ μ™ΈλΆ€ν™” / κ΅­μ œν™” ν‘œν˜„ ( ) 처럼 μ–΄λ””μ—μ„œλ‚˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ .${...}#{...}

- 예λ₯Ό λ“€μ–΄ 양식에 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- <form th:action="@{/order/processOrder}">
- … λ˜λŠ” λ‹€λ₯Έ ν‘œν˜„μ˜ μΌλΆ€λ‘œ. λ‹€μŒμ€ μ™ΈλΆ€ν™” / κ΅­μ œν™” λ¬Έμžμ—΄μ˜ 맀개 λ³€μˆ˜μž…λ‹ˆλ‹€.
- <p th:text="#{orders.explanation('3', @{/order/details(id=3,action='show_all')})}">

βœ” 9. Using expressions in URLs

- λ‹€μŒκ³Ό 같은 URL ν‘œν˜„μ‹μ„ μž‘μ„±ν•΄μ•Όν•˜λŠ” 경우 :
- <a th:href="@{/order/details(id=3,action='show_all')}">

- ...ν•˜μ§€λ§Œ μ–΄λŠ μͺ½ 3도 'show_all'μš°λ¦¬λŠ” μ‹€ν–‰ μ‹œκ°„μ— μžμ‹ μ˜ κ°€μΉ˜λ₯Ό μ•Œκ³  있기 λ•Œλ¬Έμ—, λ¦¬ν„°λŸ΄ 될 수 μžˆμ„κΉŒ?
- 문제 μ—†μ–΄μš”! λͺ¨λ“  URL 맀개 λ³€μˆ˜ 값은 사싀 ν‘œν˜„μ‹μ΄λ―€λ‘œ i18n, 쑰건문…을 ν¬ν•¨ν•œ λ‹€λ₯Έ ν‘œν˜„μ‹μœΌλ‘œ λ¦¬ν„°λŸ΄μ„ μ‰½κ²Œ λŒ€μ²΄ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- <a th:href="@{/order/details(id=${order.id},action=(${user.admin} ? 'show_all' : 'show_public'))}">
- μΆ”κ°€ κΈ°λŠ₯ : λ‹€μŒκ³Ό 같은 URL ν‘œν˜„μ‹ :
- <a th:href="@{/order/details(id=${order.id})}">
- … 사싀 λ‹€μŒμ„μœ„ν•œ μ§€λ¦„κΈΈμž…λ‹ˆλ‹€.
- <a th:href="@{'/order/details'(id=${order.id})}">
- 즉, URL베이슀 자체λ₯Ό ν‘œν˜„μ‹ (예 : λ³€μˆ˜ ν‘œν˜„μ‹)으둜 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- <a th:href="@{${detailsURL}(id=${order.id})}">
- … λ˜λŠ” μ™ΈλΆ€ν™” 된 / κ΅­μ œν™” 된 ν…μŠ€νŠΈ :
- <a th:href="@{#{orders.details.localized_url}(id=${order.id})}">
- … 쑰건문을 ν¬ν•¨ν•˜μ—¬ λ³΅μž‘ν•œ ν‘œν˜„μ‹λ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
- <a th:href="@{(${user.admin}? '/admin/home' : ${user.homeUrl})(id=${order.id})}">
- μ²­μ†ŒκΈ°λ₯Ό μ›ν•˜μ‹­λ‹ˆκΉŒ? μ‚¬μš© th:with:
- <a th:with="baseUrl=(${user.admin}? '/admin/home' : ${user.homeUrl})"
     th:href="@{${baseUrl}(id=${order.id})}">
- β€¦λ˜λŠ”β€¦
- <div th:with="baseUrl=(${user.admin}? '/admin/home' : ${user.homeUrl})">
    ...
    <a th:href="@{${baseUrl}(id=${order.id})}">...</a>
    ...
    </div>


Share Tweet +1