<!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¶m2=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 |