[따라하기] 3-5. 회원가입 중복체크하기

허성재's avatar
Sep 20, 2024
[따라하기] 3-5. 회원가입 중복체크하기
먼저 join-form의 코드다
{{> layout/header}} <div class="container p-5"> <!-- 요청을 하면 localhost:8080/join POST로 요청됨 username=사용자입력값&password=사용자값&email=사용자입력값 --> <div class="card"> <div class="card-header"><b>회원가입을 해주세요</b></div> <div class="card-body"> <form action="/join" method="post" enctype="application/x-www-form-urlencoded" onsubmit="return valid()"> <div class="mb-3"> <input type="text" class="form-control" placeholder="Enter username" name="username" id="username" value="haha"> <button onclick="sameCheck()" type="button" class="btn btn-outline-primary">중복체크</button> </div> <div class="mb-3"> <input type="password" class="form-control" placeholder="Enter password" name="password" value="1234"> </div> <div class="mb-3"> <input type="email" class="form-control" placeholder="Enter email" name="email" value="haha@nate.com"> </div> <button type="submit" class="btn btn-primary form-control">회원가입</button> </form> </div> </div> </div> <script> // 1. bool 타입은 is를 붙여서 만든다. let isSameUsername = true; async function sameCheck() { // 1. username 가져오기 let username = $("#username").val(); // 2. fetch로 통신하기 let response = await fetch(`/user/samecheck?username=${username}`); let responseBody = await response.json(); // 3. 중복됐으면 -> isSameUsername = true // 4. 중복안됐으면 -> isSameUsername = false-> username input을 readOnly if(responseBody.body){ isSameUsername = true; alert("중복된 유저네임이에요"); } else { isSameUsername = false; alert("사용할 수 있는 유저네임이에요.") $("#username").attr("readOnly", true); } } function valid() { if (isSameUsername) { alert("중복체크가 필요합니다."); return false; } else { return true; } } </script> {{> layout/footer}}
 
중복체크를 할 수 있는 버튼을 만들고, 중복 체크를 했는지를 알수 있게 valid()를 만들어준다
중복 체크가 성공하면 readOnly로 바꿀거다.
notion image
컨트롤러에서 중복체크를 하려하는 이름을 가져오고 중복되었으면 true 중복이 안되면 false로 전송할예정이다
 
notion image
UserRepo에서 username을 where절로 찾는다
notion image
서비스에선 레포에서 가져온 값을 확인한다. 만약 중복된 이름이 있으면 true로 없으면 false로 return한다.
 
Share article

heo-gom