우당탕탕 개발일지

회원제 게시판(5) 본문

개발 프로젝트/게시물 회원제

회원제 게시판(5)

ujin302 2024. 4. 30. 19:38
반응형

1. 이메일 중복체크 

1-1. saveMember.html

html 파일의 일부만 들고 왔다. 

 

이메일을 작성하는 input 태그에 onkeyup 속성을 사용하여 emailCheck 함수를 호출한다. 

onkeyup 속성을 사용하면 사용자가 작성할 때마다 함수를 불러올 수 있다. (아래 1-2. 참고)

 

emailCheck 함수

1. ajax 사용

  • 이를 사용하기 위해서는 head 태그에 작성해야 하는 scrpit가 있다.
  • 해당 내용은 jQuery CDN 홈페이지에서 찾아서 head에 붙여넣는다.

2. 서버 측에 사용자가 입력하는 이메일을 전송

  •  url : /member/email-check
  • method : post 
  • data : memberEmail 이름으로 사용자가 입력한 값 

3. 서버 측에서 받은 Boolen 값에 따라 사용 가능 여부를 판단한다. 

3-1. 사용가능 (res == True)

  • 1. 문구 : 사용 가능한 이메일 
  • 2. 색상 : 초록
  • 3. 회원가입 버튼 : 활성화 

3-2. 사용 불가능 (res == False)

  • 1. 문구 : 이미 사용중인 이메일 
  • 2. 색상 : 빨강
  • 3. 회원가입 버튼 : 비활성화 
<p>Post 방식</p>
<form action="/member/save" method="post">
    이메일: <input type="text" name="memberEmail" id="memberEmail" onkeyup="emailCheck()"> <br>
<!--    onkeyup="emailCheck()" : 입력할 때마다 emailCheck 힘수를 호출하는 속성 -->
    <span id="check-result"></span> <br>
    아이디: <input type="text" name="memberId"> <br>
    비밀번호: <input type="password" name="memberPassword"> <br>
    <input type="submit" value="회원가입" id="submitBtn" >
<!--    type="submit" 을 통해 form에 데이터를 담아서 서버에게 전송된다. -->
</form>


<script>
    function emailCheck() {
        const email = document.getElementById("memberEmail").value;
        const checkResult = document.getElementById("check-result");
        const submitBtn = document.getElementById("submitBtn");
        console.log("입력값 : " + email);

        $.ajax({
            // 요청 방식 : post, url : "email-check", data : 이메일
            type : "post",
            url : "/member/email-check",
            data: {
                "memberEmail" : email
            },
            success : function (res) {
                if(res) {
                    console.log("사용 가능한 이메일")
                    checkResult.innerHTML = "사용 가능한 이메일"
                    checkResult.style.color="green"
                    submitBtn.disabled = false
                }else {
                    console.log("이미 사용중인 이메일")
                    checkResult.innerHTML = "이미 사용중인 이메일"
                    checkResult.style.color = "red"
                    submitBtn.disabled = true
                }
            },
            error : function (err) {
                console.log("요청 실패",err);
            }
        })
    }
</script>

 

 

1-2. onkeyup 속성 특징

console을 보면 글자 하나당 출력되는 것을 볼 수 있다.

즉, 한 문자당 함수를 한번씩 호출하게 된다.

 

 

1-3. MemberController.java

emailCheck 함수 

1. 클라이언트 측에서 받아온 memberEmail 데이터를 매개변수 memberEmail로 받음 

2. Boolen 형태인 checkResult 변수를 통해 동일한 email 값 확인 

  • memberService의 emailCheck 함수 호출하여 동일한 email이 존재하는지 확인 
  • 존재 :  false
  • 미존재 : true

3. 반환 값 : checkResult 

 

 

1-4. MemberService.java

emailCheck 함수 

1. 매개변수 memberEmail 이 DB에 이미 존재하는 값인지 확인 

2. memberEntity 변수 

  • memberRepository의 findByMemberEmail 함수를 호출하여 이메일이 memberEmail 값과 동일한 Entity 반환
  • 없으면 null 값 반환 

3. memberEntity 변수 값의 여부에 따라 반환 값 달라짐.

3-1. 결과 존재

  • 결과가 이미 존재한다면 누군가 사용하여 사용할 수 없는 email임 
  • 반환 값 : False

3-2. 결과 없음

  • 결과가 없다면 사용할 수 있는 email임 
  • 반환 값 : True

 

 

1-5. 결과화면 

 

 

1-6. 유튜브 영상

https://www.youtube.com/watch?v=u0vTKR57sCw&list=PLV9zd3otBRt5ANIjawvd-el3QU594wyx7&index=16

 

https://www.youtube.com/watch?v=AdlC25YfPtQ&list=PLV9zd3otBRt5ANIjawvd-el3QU594wyx7&index=17

 

 

2. Git 

https://github.com/ujin302/Board

 

반응형

'개발 프로젝트 > 게시물 회원제' 카테고리의 다른 글

회원제 게시판(4)  (1) 2024.04.26
회원제 프로젝트(3)  (0) 2024.04.19
회원제 프로젝트(2)  (0) 2024.04.18
회원제 프로젝트(1)  (0) 2024.04.17