코드 그라데이션

Thymeleaf (3) 기본 객체들 본문

Spring/Thymeleaf

Thymeleaf (3) 기본 객체들

완벽한 장면 2023. 11. 9. 01:16

타임리프의 기본 객체들

 

 

주의! - 스프링 부트 3.0

스프링 부트 3.0 부터는 ${#request} , ${#response} , ${#session} , ${#servletContext} 를 지원하지 않는다.

만약 사용하게 되면 다음과 같은 오류가 발생한다.

 

스프링 부트 3.0이라면 직접 model 에 해당 객체를 추가해서 사용해야 한다. 

 

그런데 #request 는 HttpServletRequest 객체가 그대로 제공되기 때문에 데이터를 조회하려면

request.getParameter("data") 처럼 불편하게 접근해야 한다.

 

이런 점을 해결하기 위해 편의 객체도 제공한다.

 

 

 

스프링 부트 3.0 미만이라면 (현재 프로젝트에 해당)

BasicController에 추가

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

 

 

/resources/templates/basic/basic-objects.html

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

 

타임리프 설명

1) ${#request}${#response}${#session}${#servletContext}${#locale}

: Thymeleaf에서 제공하는 표현식 기본 객체를 사용하여 서버의 요청, 응답, 세션, 서블릿 컨텍스트, 로케일 등을 출력한다.

 

2) ${param.paramData}

 : 요청 매개변수 중 "paramData"의 값을 출력. 이 값은 클라이언트에서 서버로 전송된 데이터.

 

3) ${session.sessionData}

: 세션 객체에서 "sessionData" 속성의 값을 출력.

 

4) ${@helloBean.hello('Spring!')}

: Spring Bean인 "helloBean"의 hello 메서드를 호출하고, "Spring!"을 인자로 전달하여 출력

 

실행

http://localhost:8080/basic/basic-objects?paramData=HelloParam

 

 


3.0 이상이라면!

BasicController 에 추가

@GetMapping("/basic-objects")
public String basicObjects(Model model, HttpServletRequest request,
							HttpServletResponse response, HttpSession session) {

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

 

 HTML

<!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>
728x90

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

Thymeleaf (5) URL 링크  (0) 2023.11.10
Thymeleaf (4) 유틸리티 객체와 날짜  (0) 2023.11.09
Thymeleaf (2) 변수 - SpringEL  (0) 2023.11.08
Thymeleaf (1) 텍스트  (0) 2023.11.07
타임리프 소개  (0) 2023.11.06
Comments