회원 관리 예제 - 웹 MVC 개발

박민서·2023년 5월 2일
0

회원 웹 기능 - 홈 화면 추가

// 홈 컨트롤러 추가
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";
 }
}
// 회원 관리용 홈
<!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>
  • 처음에 index.html파일에 localhost:8080만 치면 글로 가야하는데 우선순위로 인해 home.html이 나타남

회원 웹 기능 - 등록

// 회원 등록 폼 컨트롤러
@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>
  • text 칸에 spring을 넣고 등록을 누르면 action="/members/new"으로 post방식으로 넘어간다. 넘어가면 DATA를 반환할 때 씀
회원 컨트롤러에서 회원을 실제 등록하는 기능
@PostMapping(value = "/members/new")
public String create(MemberForm form) {
 Member member = new Member();
 member.setName(form.getName());
 memberService.join(member);
 return "redirect:/";
}

회원 웹 기능 - 조회

// 회원 컨트롤러에서 조회 기능
 @GetMapping(value = "/members")
    public String list(Model model) {
        List<Member> members = memberService.findMembers();
        model.addAttribute("members", members); //members라는 키값에 모든 회원을 다 조회해서 lIST에 담아놓음
        return "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}"> // model안에 있는 값을 꺼냄
 <td th:text="${member.id}"></td> //member클래스 안에 id와 name을 getter setter을 통해 값을 가져옴
 <td th:text="${member.name}"></td>
 </tr>
 </tbody>
 </table>
 </div>
</div> <!-- /container -->
</body>
</html>
  • 메모리 안에 있기 때문에 프로그램 종료하면 데이터들이 다 날라감 그래서 DB에 저장해야됨
profile
ㅎㅇㅌ

0개의 댓글