- 서버가 실행되면 스프링 부트에서 먼저 해당 컨트롤러가 있는지를 체크해서 있으면 그 해당 컨트롤러의 html을 불러온다.
- 만약, 컨트롤러가 없으면 static에 저장되어있는 정적 컨텐츠를 불러오게 된다.
- 따라서 서버를 동작 시켰을 때 스프링 부트에 HomController가 존재하기 때문에 그 해당 컨트롤러로 동작하는 "home.html"이 실행되게 된다. (index.html은 실행X)
회원 관리 화면 및 컨트롤러
- 회원관리 화면 (home.html)
<!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>
</body>
</html>
- 컨트롤러(HomeController.java)
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/") //서버를 실행시키면 제일 처음으로 Get 방식으로 이 부분이 실행 -> GET방식으로 home.html실행
public String home(){
return "home";
}
}
회원 웹 기능 - 등록
- MemberCreateFrom.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<form action="/members/new" method="post">
<!-- name 값을 가지고 POST방식의 /members/new로 이동한다.(MemberController) -->
<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>
- MemberController.java (추가)
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class MemberController {
private final MemberService memberService;
//MemberService를 스프링 컨테이너에 등록해 놓고 하나의 인스턴스로만 활용.
//사용하려면 스프링 빈에 등록되어있어야 한다.
@Autowired //=>스프링 컨테이너에 있는 MemberService를 가져다가 연결 시켜줌.
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("members/new")
public String createForm(){
return "members/createMemberForm";
//return이 이루어지면 템플릿에서 members/createMemberForm을 찾는다.
//viewResolver를 통해 해당 html이 선택되고 thymeleaf 템플릿 엔진을 통해 렌더링한다.
}
@PostMapping("members/new")
public String create(MemberForm form){
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/"; // 회원가입이 끝나면 home 화면으로 이동 (redirect)
}
}
회원 웹 기능 - 조회
- 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}">
<!-- th:each를 통해 반복문 실행-->
<!-- ${members} => 모델 안에 담았던 리스트 값 -->
<td th:text="${member.id}"></td> <!--getId()-->
<td th:text="${member.name}"></td> <!--getName()-->
</tr>
</tbody>
</table>
</div>
</div> <!-- /container -->
</body>
</html>
- MemberController.java (추가)
@GetMapping("/members")
public String list(Model model){
List<Member> members = memberService.findMembers();
model.addAttribute("members", members); //리스트 members를 모델에 담음.
return "members/memberList"; // members/memberList에 리스트 값을 넘김.
}
'Spring > SpringMVC' 카테고리의 다른 글
스프링 MVC 구조 (0) | 2023.10.24 |
---|---|
MVC 프레임워크 (0) | 2023.10.22 |
Spring으로 간단한 회원관리 만들기(3) -멤버 컨트롤러 (0) | 2023.09.28 |
Spring으로 간단한 회원관리 만들기(2) - 회원서비스와 서비스테스트 (0) | 2023.09.28 |
Spring으로 간단한 회원관리 만들기(1) - 회원 도메인과 레포지토리 (0) | 2023.09.24 |