。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

강의/Spring

[Spring 입문] 5. 웹 MVC 개발/Thymeleaf

quarrrter 2023. 12. 11. 23:05
 <html xmlns:th="http://www.thymeleaf.org">

 

Thymeleaf를 사용하는 웹 페이지에서 XML 네임스페이스를 정의하는 부분

Thymeleaf는 서버 사이드 및 클라이언트 사이드 템플릿 엔진으로 사용되며, th:로 시작하는 속성을 사용하여 템플릿에서 서버 변수 및 표현식을 사용할 수 있음. 이렇게 정의된 네임스페이스는 Thymeleaf 속성을 사용할 때 사용.

 

 <예시> th:text="${pageTitle}"는 서버 변수 pageTitle의 값을 출력하는 Thymeleaf 속성

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1 th:text="${pageTitle}">Default Title</h1>
</body>
</html>

 

 


회원 웹 기능 - 홈 화면 추가

package hello.hellospring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

 @Controller
 public class HomeController {
 
     @GetMapping("/")
     public String home() {
         return "home";
     }
}
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">

 <body>
     <div class="container">
         <div>
            <h1>Hello Spring</h1> 
            <p>회원 기능</p>
            <p>
            <a href="/members/new">회원 가입</a>
            <a href="/members">회원 목록</a>
            </p>
        </div>
     </div> <!-- /container -->
 </body>
 </html>

 

회원등록폼 HTML

<!DOCTYPE HTML>
 <html xmlns:th="http://www.thymeleaf.org">
 <body>
 	<div class="container">
     	<form action="/members/new" method="post">
     	<div class="form-group">
			<label for="name">이름</label>
				<input type="text" id="name" name="name" placeholder="이름을 입력하세요">
		</div>
		<button type="submit">등록</button> 
		</form>
 	</div> <!-- /container -->
 </body>
</html>

 

회원컨트롤러 조회

 @GetMapping(value = "/members")
 public String list(Model model) {
     List<Member> members = memberService.findMembers();
     model.addAttribute("members", members);
     return "members/memberList";
}

 

회원 리스트 HTML **model에 담긴 members th:each

<!DOCTYPE HTML>
 <html xmlns:th="http://www.thymeleaf.org">
 <body>
 <div class="container">
     <div>
         <table>
             <thead>
                 <tr>
                     <th>#</th>
                     <th>이름</th> 
                 </tr>
             </thead>
             <tbody>
             <tr th:each="member : ${members}">
                 <td th:text="${member.id}"></td>
                 <td th:text="${member.name}"></td>
             </tr>
             </tbody>
         </table>
	</div>
 </div> <!-- /container -->
</body>
</html> ```