BackEnd/Thymeleaf

[Thymeleaf] 기본 객체들

샤아이인 2022. 1. 26.

인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다.

 

기본 객체들

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

 

#ctx: the context object.

#vars: the context variables.

#locale: the context locale.

#request: (only in Web Contexts) the HttpServletRequest object.

#response: (only in Web Contexts) the HttpServletResponse object.

#session: (only in Web Contexts) the HttpSession object.

#servletContext: (only in Web Contexts) the ServletContext object.

 

위 기본 객체들을 다음과 같이 사용할 수 있다.

<span th:text="${#locale.country}">US</span>.
 

그런데 #request는 HttpServletRequest 객체가 그대로 제공되기 때문에 데이터를 조회하려면 request.getParameter("data") 처럼 불편하게 접근해야만 합니다.

 

이런 불편한 점을 해결하기 위해서 편의 객체 또한 제공합니다.

 

- HTTP 요청 파라미터 접근: param => 예) ${param.paramData}

- HTTP 세션 접근: session => 예) ${session.sessionData}

- 스프링 빈 접근: @ => 예) ${@helloBean.hello('Spring!')}

 

예제

우선 컨트롤러부터 확인해 봅시다.

@GetMapping("/basic-objects")
public String basicObjects(HttpSession session){
    session.setAttribute("sessionData", "Hello Session");
    return "basic/basic-objects";
}

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

세션을 등록하고, 빈을 추가하였습니다. 이를 처리할 뷰 코드는 다음과 같습니다.

<!DOCTYPE html>
<html lang="en">
<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('zbqmgldjfh!')}"></span></li>
</ul>


</body>
</html>
 

결과는 다음과 같습니다.

- param

편의 객체에서 쿼리파라미터에 직접 접근하는 param 키워드 또한 중요합니다.

쿼리파라미터 같은 경우 원래는 컨트롤러에서 모델에 저장하고, 이를 뷰에서 프로퍼티 접근법으로 꺼내서 사용해야 하지만, 너무 많이 사용하기 때문에 자체적으로 타임리프에서 지원하게 됬습니다.

 

위 예제는 http://localhost:8080/basic/basic-objects?paramData=HelloParam 로 접근하였기 때문에

paramData = HelloParam이 추출되어 Request Parameter에 전달되었습니다.

 

- session

${session.sessionData}처럼 사용하여 꺼내올수 있습니다.

 

- @

@를 통하여 빈 객체에 직접 접근하여 사용할수 있었습니다.

'BackEnd > Thymeleaf' 카테고리의 다른 글

[Thymeleaf] Literals  (0) 2022.01.26
[Thymeleaf] URL 링크  (0) 2022.01.26
[Thymeleaf] 유틸리티 객체와 날짜  (0) 2022.01.26
[Thymeleaf] SpringEL, 지역변수  (0) 2022.01.26
[Thymeleaf] 텍스트 - text, utext  (0) 2022.01.26

댓글