코드 그라데이션
Thymeleaf (3) 기본 객체들 본문
타임리프의 기본 객체들
주의! - 스프링 부트 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>
'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 |