타임리프는 기본 객체들을 제공합니다.
package hello.thymeleaf.basic;
import lombok.Data;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping("/basic")
public class BasicController {
...
**@GetMapping("/basic-objects")
public String basicObjects(HttpSession session) { //...1
session.setAttribute("sessionData", "Hello Session");
return "basic/basic-objects";
}
//...2
@Component("helloBean")
static class HelloBean {
public String hello(String data) {
return "Hello " + data;
}
}**
...
}
세션
자세한 것은 뒤의 로그인 부분에서 설명하겠습니다. 지금은 이런게 있다고 알고 넘어갑시다.
→ 자세히
스프링 빈을 하나 만들어서 등록합니다.
<aside> ❗ 스프링 빈이 등록될 때 빈 이름은 기본적으로 클래스 명을 따라가되 맨 앞글자만 소문자로 바뀌는거 아닌가요?
BasicController도 빈으로 등록되는데 HelloBean이 내부 클래스로 등록되어서 basicController.HelloBean으로 뜨는것 같습니다.
그렇기에 내부클래스가 아니라 밖에서 직접 빈으로 등록해주시면 에러없이 통과됩니다.
</aside>
<!DOCTYPE html>
<html xmlns:th="<http://www.thymeleaf.org>">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>식 기본 객체 (Expression Basic Objects)</h1>
<ul>
<li>request = <span th:text="${#request}"></span></li>
<li>response = <span th:text="${#response}"></span></li>
<li>session = <span th:text="${#session}"></span></li>
<li>servletContext = <span th:text="${#servletContext}"></span></li>
<li>locale = <span th:text="${#locale}"></span></li>
</ul>
<h1>편의 객체</h1>
<ul>
<li>Request Parameter = <span th:text="${param.paramData}"></span></li>
<li>session = <span th:text="${session.sessionData}"></span></li>
<li>spring bean = <span th:text="${@helloBean.hello('Spring!')}"></span></li>
</ul>
</body>
</html>