조회 하는 기능까지 구현하였다!

 

package hello.hellospring.controller;

import hello.hellospring.domain.Member;
import hello.hellospring.service.MemberService;
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;

import java.util.List;

@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.findMembers();
        model.addAttribute("members",members);
        return "members/memberList";
    }

 

"/members" 를 GetMapping으로 주고

Member형식의 리스트 members를 만들어 findMembers()를 쓰게되면 멤버를

다 가져올 수 있게 된다.

members자체를 모델에 담아서 화면에 넘기고

members/memberList를 반환한다!

 

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

th:each 는 루프문이다.! 첫번째 객체를 꺼내와서

id name을 꺼내와서 출력한다. 이때 getId , getName을 이용해서

프로퍼티 방식으로 꺼내오게된다.

 

가입 후 조회기능을 하니 이렇게 조회된 화면을 확인할 수 있었다.

 

<!DOCTYPE HTML>
<html> <body>
<div class="container">
  <div>
    <table>
      <thead>
      <tr>
        <th>#</th>
        <th>이름</th> </tr>
      </thead>
      <tbody>
      <tr>
        <td>1</td>
        <td>이재혁</td> </tr>
      </tbody>
    </table>
  </div>
</div> <!-- /container -->
</body>
</html>
 

크롬의 페이지 소스보는 기능을 사용하여 

살펴 보니

타임리프 문법이 있던 곳이 랜더링 되어 있는 것을 

확인할 수 있었다!

 

현재는 데이터가 메모리에 있기때문에 서버를 내렸다가 다시 키게되면

데이터가 다 지워지게된다. 그렇기에 해결 방안에 대하여

다음 포스트에 정리할 예정이다.

 

+ Recent posts