스프링/4. 스프링 MVC-2

5. thymeleaf url

sdafdq 2023. 8. 21. 23:46
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>URL 링크</h1>
<ul>
  <li><a th:href="@{/hello}">basic url</a></li>
  <li><a th:href="@{/hello(param1=${param1}, param2=${param2})}">hello query
    param</a></li>
  <li><a th:href="@{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})}">path variable</a></li>
  <li><a th:href="@{/hello/{param1}(param1=${param1}, param2=${param2})}">path variable + query parameter</a></li>
</ul>
</body>
</html>

 

 

@GetMapping("/link")
public String link(Model model){
    model.addAttribute("param1", "data1");
    model.addAttribute("param2", "data2");
    return "basic/link";
}

 

일단 동적 템플릿에 넘길 때, param1이라는 키로 data1이라는 문자열값을,

param2는 data2라는 문자열 값을 줬다.

 

저기 보면, 일단 타임리프에서 링크 표현할때는 "@{/hello}" 이렇게 표현한다.

@{/hello} 이건 절대경로

@{hello} 이건 상대경로다.

예를 들어 http://localhost:8080/basic/link 에서 저 둘 링크를 타고 들어갈 시

@{/hello}는 http://localhost:8080/hello

@{hello}는 http://localhost:8080/basic/hello 이다. 형제끼리로 이동이 되는 듯.

 

그 다음 

<li><a th:href="@{/hello(param1=${param1}, param2=${param2})}">hello query

이렇게 파라미터를 넣는게 가능하다.

http://localhost:8080/hello?param1=data1&param2=data2 이렇게 된다.

@{/경로(key1=${값}, key2=${값})}

 

경로 파라미터도 가능.

@{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})}

@{/경로/{변수1}/{변수2}(변수1=${값1}, 변수2=${값2})}

http://localhost:8080/hello/data1/data2

 

@{/hello/{param1}(param1=${param1}, param2=${param2})}

섞어서 쓰는 것도 가능. 그러니까, 경로변수에 할당 되고도 추가로 뭐 보내면. 경로변수에 안넣은 추가한 파라미터는 쿼리 파라미터로 들어감.

@{/경로/경로변수1(경로변수1=${값1}, param2=${값2})}  이렇게 경로변수로 준거 말고 추가로 키와 값을 넣으면, 파라미터로 추가됨.

http://localhost:8080/hello/data1?param2=data2

 

 

참고로 절대경로, 상대경로 말고도 프로토콜도 가능

 

'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글

7. 타임리프 연산  (0) 2023.08.22
6. thymeleaf 리터럴  (0) 2023.08.22
4. 유틸 객체, 시간표현  (0) 2023.08.21
3. thymeleaf 기본 제공되는 객체  (0) 2023.08.21
2. 변수  (0) 2023.08.21