본문 바로가기
💻 뚝딱뚝딱/북북클럽

[개발일지#012] 회원가입시 문제점 해결하기 (Redirect)

by 뚜루리 2024. 1. 25.
728x90
320x100
[참고]
김영한님 스프링 강의를 바탕으로 진행되는 토이프로젝트의 과정을 기록하는 글입니다. 
둥근 피드백은 언제나 환영입니다.
[오늘의 개발내용]
1. 회원가입시 문제점 파악하기
2. 회원가입시 문제점 해결하기

 

1. 회원가입시 문제점 파악하기

    @PostMapping("/join")
    public String join(@ModelAttribute Member member){
        memberRepository.save(member);
        return "basic/member";
    }
  • BasicMemberController 에 회원가입을 구현한 부분을 보면 회원 데이터를 저장하고 "basic/member" 로 뷰템플릿만 리턴해주도록 구현했다. 이렇게 구현하면..!

 

 

회원 등록후 회원 상세 페이지로 넘어가는데 주소는 변경되지 않고 화면만 변경된 상태로 유지되고

 

 

만약 새로고침을 누른다면 이런 창이 뜨면서 새로고침할 때마다 회원가입이 진행돼 버린다.

(새로고침은 이전 요청한 것을 그대로 재요청하게 됨)

즉, 새로고침 누른 횟수만큼 회원이 등록되버림. 

 

 

 

(+) 이게 김영한 님이 강의에서 지적한 문제점이었는데

난 사실 새로고침해도 회원 목록에 새로고침 한 횟수만큼 추가되지 않는다....

문제가 재현이 안됨...왜지?????????

암튼....

 

그래서 우리는 그냥 뷰템플릿을 리턴해주는 것이 아니라 리다이렉트로 URL 까지 변경해줘야 함.

 

2. 회원가입시 문제점 해결하기

    @PostMapping("/join")
    public String join(@ModelAttribute Member member){
        memberRepository.save(member);
        return "basic/member";
    }
    @PostMapping("/join")
    public String join(@ModelAttribute Member member, RedirectAttributes redirectAttributes){
        Member savedMember = memberRepository.save(member);
//        return "basic/member";
        redirectAttributes.addAttribute("memberId", savedMember.getId());
        redirectAttributes.addAttribute("status", true);
        return "redirect:/basic/members/{memberId}";
    }
  • BasicMemberController를 위의 상태에서 아래의 상태로 수정해줌.
  • 파라미터 값으로 리다이렉트 어트리뷰트 가져오고 그 어트리뷰트에 멤버 아이디와 상태값을 담아서 리다이렉트로 리턴해줌.

 

 

 

그럼 URL도 변경된 것을 알수 있음!

728x90
320x100