ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상품 등록 전 로그인하기 - 회원가입 페이지 만들기
    스프링/스프링 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가 있으므로 아무것도 입력하지 않고 회원 가입을 누르려하면 각각의 오류메시지를 출력하고 페이지에서 넘어가지 않는다.

Designed by Tistory.