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

3. thymeleaf 기본 제공되는 객체

sdafdq 2023. 8. 21. 23:09
<!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>

 

@GetMapping("/basic-objects")
public String basicObjects(HttpSession session, Model model, HttpServletRequest request, HttpServletResponse response){
    session.setAttribute("sessionData", "Hello Session");
    model.addAttribute("request",request);
    model.addAttribute("response", response);
    model.addAttribute("servletContext", request.getServletContext());
    return "basic/basic-objects";
}

@Component("helloBean")
static class HelloBean{
    public String hello(String data){
        return "Hello " + data;
    }
}

원래 기본 객체라는 제목으로 한 이유가..

위 자바코드처럼 모델에 직접 안 넣어도 <li>request = <span th:text="${#request}"></span></li>

이런 식으로 request나 response 등등 세션이나 위에 써 놓은 것 #붙이고 쓰면 기본으로 제공된다 해서 기본객체라고 제목으로 했음.

근데 스프링 부트 3.0부터는 지원 안함.

하긴 뭐 어차피 ArgumentResolver도 있고 굳이 request 그대로 가져와 쓸 필요는 없을 듯.

 

그보다 중요한 건.

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

이 부분임. 위 보면 따로 모델에 파라미터를 안 넣었는데,

param이라는 key로 쓸 수 있음. 

http://localhost:8080/basic/basic-objects?paramData=HelloParam 이렇게 하면 알아서 들어감.

 

그리고 또 중요한 건 빈을 직접 호출해 쓸 수 있다는 거.

@이게 빈 표시임.

@빈이름.빈의함수(인자) 이렇게 해서 타임리프에서 직접 빈을 쓸 수 있음.

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

6. thymeleaf 리터럴  (0) 2023.08.22
5. thymeleaf url  (0) 2023.08.21
4. 유틸 객체, 시간표현  (0) 2023.08.21
2. 변수  (0) 2023.08.21
1. 타임리프 text escaped, unescaped  (0) 2023.08.16