기본 객체들

타임리프는 기본 객체들을 제공합니다.

BasicController 추가

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;
        }
    }**

		...
}
  1. 세션

    자세한 것은 뒤의 로그인 부분에서 설명하겠습니다. 지금은 이런게 있다고 알고 넘어갑시다.

    자세히

  2. 스프링 빈을 하나 만들어서 등록합니다.

    스프링 빈 등록 (@Component)

<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>