728x90
홈 컨트롤러 개발
@Controller 계층은 MVC패턴에서 클라이언트의 요청에 대응해 결과를 뷰에 전달하여, 웹 페이지를 생성한다.
@Slf4j와 log를 통해 로거 인스턴스를 생성한다.
return "home"은 home.html 페이지를 반환함을 의미한다.
@Controller
@Slf4j
public class HomeController {
@RequestMapping("/")
public String home() {
log.info("home controller");
return "home";
}
}
회원 컨트롤러 개발
@Controller
@RequiredArgsConstructor
public class MemberController {
private final MemberService memberService;
/members/new로 들어오는 HTTP의 GET과 POST 메서드를 처리한다.
GET메서드가 들어올 때,
- createForm은 모델 파라미터를 통해 뷰에 데이터를 전달하고 회원가입 폼을 생성하는 메서드다.
- 모델 파라미터에는 "memberForm"이라는 이름의 빈 멤버 폼 객체가 뷰로 전달된다.
- 뷰는 회원가입 폼 화면을 반환한다.
POST메서드가 들어오면,
- @Valid를 통해 생성된 멤버 폼 객체의 유효성을 검증하고 BindingResult를 통해 결과를 확인한다.
- 만약 결과가 에러를 가지고 있다면, members/createMemberForm 뷰로 이동한다.
- 성공한다면, 홈 페이지로 redirect한다.
@GetMapping(value = "/members/new")
public String createForm(Model model) {
model.addAttribute("memberForm", new MemberForm());
return "members/createMemberForm";
}
@PostMapping(value = "/members/new")
public String create(@Valid MemberForm form, BindingResult result) {
if (result.hasErrors()) {
return "members/createMemberForm";
}
members로 GET메서드가 들어오면,
멤버 리포지토리에서 findAll로 찾아온 값을 반환하는 멤버서비스의 findMembers메서드로 members라는 List를 생성한다.
모델 파라미터에 "members"라는 이름의 members값을 뷰로 전달한다.
@GetMapping(value = "/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
주소 객체를 만드는데 form의 정보들을 변수로 불러와 생성한다.
새로운 멤버 정보를 빈 객체를 생성한 뒤, 폼에서 입력받은 이름 값과 생성된 주소값을 설정한다.
생성된 멤버 값은 멤버 서비스 계층에서 만든 회원가입 join 메서드를 활용해 멤버 서비스에 보내 DB에 반영시킨다.
화면은 redirect:/를 통해 홈화면으로 돌아간다.
Address address = new Address(form.getCity(), form.getStreet(),
form.getZipcode());
Member member = new Member();
member.setName(form.getName());
member.setAddress(address);
memberService.join(member);
return "redirect:/";
}
'Java Spring > Spring Boot' 카테고리의 다른 글
주문 도메인 개발 Spring Boot 기본 (4) (0) | 2023.12.11 |
---|---|
상품 도메인 개발 Spring Boot 기본 (3) (0) | 2023.12.11 |
회원 도메인 개발 Spring Boot 기본 (2) (1) | 2023.12.08 |
도메인 설계 Spring Boot 기본 (1) (1) | 2023.12.07 |