본문 바로가기
Spring/개념

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

by MINNI_ 2021. 8. 10.

1. 회원 웹 기능 - 홈 화면 추가

  • 웰컴 페이지 우선순위
    - 1. 컨트롤러에서 매핑되는 것 2. index.html
    ⇒ 컨트롤러가 정적파일보다 우선순위 높다
# 홈 컨트롤러
@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>

2. 회원 웹 기능 - 등록

  • createMemberForm의 name과 MemberForm의 name 매핑
  • 과정
    : localhost:8080/members/new → localhost:8080/members/createMemberForm 이동 → 이름 등록 → action에 있는 url에 post 방식으로 넘어감 → controller의 PostMapping에 넘어옴 → 해당 메소드 호출
# 회원 등록 폼 컨트롤러
@Controller
public class MemberController {
   private final MemberService memberService;
   
   @Autowired
   public MemberController(MemberService memberService) {
   	this.memberService = memberService;
   }
   @GetMapping(value = "/members/new")
   public String createForm() {
   	return "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> <!-- /container -->
  </body>
</html>
# 웹 등록 화면에서 데이터를 전달 받을 폼 객체
package hello.hellospring.controller;
public class MemberForm {
   private String name;
   public String getName() {
   	return name;
   }
   public void setName(String name) {
   	this.name = name;
   }
}
# 회원 컨트롤러에서 회원을 실제 등록하는 기능
@PostMapping(value = "/members/new")
public String create(MemberForm form) {
   Member member = new Member();
   member.setName(form.getName());
   
   memberService.join(member);
   
   return "redirect:/";	// 회원가입 끝나면 홈화면으로 보냄
}

3. 회원 웹 기능 - 조회

  • 타임리프(thymleaf) 문법
    - controller의 model 안 members  → 모든 회원 객체를 가진 리스트
    - th:each= "member: ${members}" : 리스트 안 모든 객체를 loop를 돌면서 아래 로직 실행, 각 객체를 member라 함
  • memory
    서버를 껐다가 다시 키면 회원 목록이 다 지워짐
    - 메모리 안에 있어서 회원데이터 사라짐
    ⇒ [해결법] : 데이터를 파일이나 db에 저장해야 함
# 회원 컨트롤러에서 조회 기능
@GetMapping(value = "/members")
public String list(Model model) {
   List<Member> members = memberService.findMembers();
   model.addAttribute("members", members);
   return "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> <!-- /container -->
  </body>
</html>

[ 출처 ]

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세

www.inflearn.com

댓글