-
상품 등록 전 로그인하기 - 회원가입 페이지 만들기스프링/스프링 MVC 패턴 2023. 2. 28. 14:19
상품을 등록하고 수정하는데 아무나 할 수가 있기 때문에 상품 등록을 하기전에 로그인 페이지를 만들어서 로그인이 된 사람만 상품 등록 및 수정을 할 수 있도록 만들 것이다.
java.hello.login.domain.member에
Member 객체 클래스 생성
@Data public class Member { private Long id; @NotEmpty private String loginId; // 로그인 ID @NotEmpty private String name; // 사용자 이름 @NotEmpty private String password; }
MemberRepository 클래스 생성
@Slf4j @Repository public class MemberRepository { private static Map<Long, Member> store = new HashMap<>(); // static 사용 private static long sequence = 0L; // static 사용 public Member save(Member member) { member.setId(++sequence); log.info("save: member={}", member); store.put(member.getId(), member); return member; } public Member findById(Long id) { return store.get(id); } public Optional<Member> findByLoginId(String loginId) { List<Member> all = findAll(); for (Member m : all) { if (m.getLoginId().equals(loginId)) { return Optional.of(m); } } return Optional.empty(); } public List<Member> findAll() { return new ArrayList<>(store.values()); } public void clearStore() { store.clear(); } }
Member와 MemberRepository는 항상 해왔던 과정이기 때문에 자세한 설명을 생략하도록 하겠다.
이전 게시글에서는 url을 연결할 때 home 화면을 상품 목록 페이지로 이동하게 했다.
이번에는 상품 목록 페이지로 바로 이동하지 않고 로그인 페이지를 무조건 거쳐야하도록 설계할 것이다.
@Slf4j @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } }
home.html은 생략(실제로 코딩하지 않고 복사 붙여넣기 했음)
localhost:8080으로 들어가면 회원 가입과 로그인을 할 수 있는 홈 화면이 나온다.
@Controller @RequiredArgsConstructor @RequestMapping("/members") public class MemberController { private final MemberRepository memberRepository; @GetMapping("/add") public String addForm(@ModelAttribute("member") Member member) { return "members/addMemberForm"; } @PostMapping("/add") public String save(@Valid @ModelAttribute Member member, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return "members/addMemberForm"; } memberRepository.save(member); return "redirect:/"; } }
컨트롤러에서 회원가입을 처리할 것이다. 저번에 배웠던 bindingReuslt를 통해서 값이 입력되지 않으면 오류가 나면서 페이지로 다시 돌아오고, 오류가 나지 않으면 홈 페이지로 리다이렉트를 한다.
홈 화면에서 회원가입을 누르면 /member/add로 이동하고 회원가입을 할 수 있는 페이지로 들어간다.
멤버 객체에 @NotEmpty가 있으므로 아무것도 입력하지 않고 회원 가입을 누르려하면 각각의 오류메시지를 출력하고 페이지에서 넘어가지 않는다.
'스프링 > 스프링 MVC 패턴' 카테고리의 다른 글
서블릿 Http 세션 (0) 2023.02.28 로그인 페이지 만들기 (0) 2023.02.28 등록과 수정의 검증 분리 - V4 (0) 2023.02.25 상품 수정 검증, 검증 groups - V3 (0) 2023.02.25 스프링 자동 검증기(Bean Validation) (0) 2023.02.25