티스토리 뷰

카테고리 없음

[SpringBoot] Basic : Thymeleaf View

개발자 김챠챠 2025. 2. 26. 01:28

홈화면 작성(templates/home.html)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
  <div class="container">
    <div>
      <h1> 방댕이들 안녕!!</h1>
      <p>회원 기능</p>
      <p>
        <a href="/members/new">회원 가입</a>
        <a href="/members">회원 목록</a>
      </p>
    </div>
  </div>
</body>
</html>

 

컨트롤러 작성

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

@Controller
public class HomeController {

    @GetMapping("/")
    public String home(){
        return "home";
    }
}

 

@GetMapping은 해당 도메인에서 뒤의 url로 들어왔을때를 매핑시켜주는 어노테이션이다.

"/"는 아무것도 없이 해당 도메인으로 들어왔을때, 즉 웰컴페이지를 의미한다. (이게 없을경우 index.html)

home을 viewResolver는 templates 내의 home.html에 연결시켜주게 된다.

 

회원가입 폼 작성(templates/members/createMemberForm.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>
</body>
</html>

 

input의 name부분은 key값을 의미하며, 이후 DTO에서 매핑될것이다.

 

회원조회 작성(templates/members/memberList.html)

<!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>
</body>
</html>

 

여기서 member.id 이런건 직접 접근이아니라, getter와 setter에 접근하는 것이므로 getter,setter가 반드시 있어야한다.

 

DTO 작성

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

스프링은 알아서 key값을 해당 객체에 매핑시켜준다. 놀라울따름.

 

컨트롤러 작성(MemberController)

import com.bdid.bdid.domain.Member;
import com.bdid.bdid.service.MemberService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class MemberController {
    private final MemberService memberService;
    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

    @GetMapping("/members/new")
    public String createForm(){
        return "members/createMemberForm";
    }

    @PostMapping("/members/new")
    public String create(MemberForm form){
        Member member = new Member();
        member.setName(form.getName());

        memberService.join(member);

        return "redirect:/";
    }

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

 

PostMapping은 HTTP 전송방식에 따라서 다르게 컨트롤러가 작동한다고 생각하면 된다.

return은 경로도 지정할 수 있으며, redirect:/ 하면 다시 리다이렉트 한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함