Spring(기초)-2022.01.11

Jonguk Kim·2022년 1월 10일
0

Spring 기초

목록 보기
5/5

1. 회원 관리 예제 - 웹 MVC 개발

1) 홈 화면

홈 컨트롤러 추가

@Controller
  public class HomeController {
      @GetMapping("/")
      public String home() {
          return "home";	// template/home.html
      }
}

회원 관리용 홈 (template/home.html)

<p>
  <a href="/members/new">회원 가입</a> 
  <a href="/members">회원 목록</a>
</p>
  • 컨트롤러가 정적 파일보다 우선순위가 높다 (static/index)

2) 회원 등록

회원 등록 폼 컨트롤러

 @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";	// template/members/createMemberForm.html
        }
}

회원 등록 폼 (template/members/createMemberForm.html)

<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>
  • form 태그에서 method 요청
  • input 태그에서 name 속성 이름과 전달 받을 폼 객체 변수 이름과 동일해야 함

웹 등록 화면에서 데이터를 전달 받을 폼 객체

public class MemberForm {
      private String name;			// input 태그에서 name 속성 이름과 동일
      public String getName() {
          return name;
}
      public void setName(String name) {
          this.name = name;
} }

회원 컨트롤러에서 회원을 실제 등록하는 기능

   @PostMapping("/members/new")
  public String create(MemberForm form) {	// 데이터를 전달 받을 폼 객체
      Member member = new Member();
      member.setName(form.getName());
      memberService.join(member);
      return "redirect:/";			// 홈화면으로 리다이렉트
}

3) 회원 조회

회원 컨트롤러에서 조회 기능

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

template/members/memberList.html

<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>
profile
Just Do It

0개의 댓글