본문 바로가기
개발/Spring

[스프링 입문] 스프링 회원관리 예제 - 6. 웹 MVC 개발

by ujin2021 2021. 6. 30.

* 인프런 김영한님의 '스프링 입문' 강의를 듣고 작성한 내용입니다! (https://inf.run/txXC)

홈 화면 추가

1. 홈 컨트롤러 추가

  • hello.hellospring/controller/HomeController.java
  • localhost:8080/으로 접속하면 home.html이 반환되도록 했다 (template/home.html)
  • 이전에 static/index.html로 Welcomepage를 생성했지만, 컨트롤러가 정적파일보다 우선순위가 높기때문에 home.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"; // home.html이 호출된다
}
}

 

2. 홈 화면

  • template/home.html

회원 등록 기능

1. 회원 등록 컨트롤러

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;
System.out.println("memberService = " + memberService.getClass()); // aop : proxy 확인
}
@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());
System.out.println("member = " + member.getName());
memberService.join(member); // 우리가 만든 join 함수
return "redirect:/"; // 회원가입이 끝나고 home화면으로 redirect
}
@GetMapping("/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
}

 

  • localhost:8080/member/new 로 접속하면 templates/members/createMemberForm.html 반환
  • 회원이 form 작성 후 submit 하면 post로 data 전달 
  • @PostMapping에서 새로운 member를 생성하고 입력받은 name을 넣어준다
  • Service의 join(회원가입)에 member객체를 넣어준다
  • home url로 redirect 해준다

2. 웹에서 데이터를 전달받을 폼 객체

package hello.hellospring.controller;
public class MemberForm {
private String name; // createMemberForm.html에서 input tag의 name과 matching
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
view raw MemberForm.java hosted with ❤ by GitHub

 

3. 회원 등록 폼 HTML

 

회원 조회 기능

  • 회원 컨트롤러에서 조회 기능 (위의 회원 등록 컨트롤러에서의 @GetMapping(/members)

java의 foreach문 처럼 members list에서 하나씩 꺼내서 id와 name을 각각 ${member.id}, ${member.name}에 넣어준다