본문으로 바로가기

[JSP개발] 회원가입 - 아이디 중복체크 구현

category 코딩/JSP 2017. 1. 6. 20:36







1. 개요





 난 포스팅 [JSP개발] 게시판 - 댓글 수정



이번에는 아이디 중복체크 및 회원가입 시 입력값들을 검사하는 기능을 구현할 것이다. 핵심적인 부분들의 구현이 우선이어서 미뤄두고 있었던 부분인데, 이번 포스팅에서 모두 구현을 할 것이다.


아이디 중복체크에서 알아야 될 것은 부모창 ↔ 자식창의 데이터 전달이다. 이 부분에 대한 설명은 소스 코드 설명에서 자세히 할 것이다.



 JSP

  • JoinForm.jsp : 회원가입 화면에는 중복체크 창을 띄우는 코드 및 입력된 값들을 검사하는 코드를 추가한다.

  • IdCheckForm.jsp : 아이디 중복체크 화면이다.


 Java

  • MemberIdCheckAction.java : 아이디 중복체크를 처리하는 Action이다.

  • MemberDAO.java : 기존에 만들어둔 아이디 중복체크 메서드를 사용할 것이다. 추가로 구현할 부분은 없다.




2. 소스 코드



■ JoinForm.jsp




회원가입 화면에서는 아이디를 입력하는 <input type="text">와 중복확인 버튼에 이벤트를 추가한다. 그리고 중복체크를 했는지 판단하기 위해 hidden을 추가한다.


  • 139줄 : 아이디 입력란에는 키보드 입력시 발생하는 onkeydown 이벤트를 추가했다. 이 이벤트를 사용하는 것은 만약 사용자가 중복체크를 하고 난 뒤 아이디 입력란에 사용 가능한 아이디를 지우고 새로운 아이디를 입력했을 경우에 대처하기 위함이다. 이렇게 하면 중복체크가 되지 않은 것으로 처리되도록 한다.

  • 140줄 : 중복확인 클릭 시 아이디 중복확인 창을 띄운다.

  • 141줄 : 아이디 중복체크를 했는지 판단하기 위한 부분이다. <input type="hidden">의 value가 idUncheck 이면 중복체크를 하지 않은 것이다.




checkValue( )는 가입버튼 클릭 시 실행되는 함수이다. 여기에서는 회원가입 화면에 값들이 입력되었는지를 검사한다. 입력되지 않은 값이 있다면 경고 창을 띄운다.




checkValue( )를 보면 isNaN( )이란 함수를 사용한 부분이 있다. isNaN( )은 숫자인지 문자인지 검사하는 함수이다. 검사 결과는 boolean으로 반환한다.


  • isNaN(입력값) → true : 입력값은 문자이다.

  • isNaN(입력값) → false : 입력값은 숫자이다.




중복확인 버튼 클릭 시 호출되는 함수이다. openIdChk( )는 아이디 중복체크 화면을 띄운다.




아이디 입력란에서 키보드로 값을 입력 시 호출되는 함수이다. 중복체크 후 아이디 입력란에 사용 가능한 아이디가 입력되어 있을 때 입력된 아이디를 지우고 새로운 아이디를 입력하면 문제가 발생할 수 있다. 


이와 같은 경우를 방지하기 위해 아이디를 입력하게 되면 일단, <input type="hidden">의 value를 idUncheck로 변경하여 중복체크가 실행되지 않은 것으로 처리한다.





■ IdCheckForm.jsp




아이디 중복체크 화면의 html이다. 


  • 115줄 : 중복체크 화면이 열리면 onload 이벤트에 의해 pValue( )라는 함수가 호출된다.

  • 124줄 : 중복확인 버튼 클릭 시 중복체크를 하는 idCheck( )가 호출된다.

  • 128줄 : 취소 클릭 시 현재창을 닫도록 한다.

  • 129줄 : 사용하기를 클릭하면 sendCheckValue( )가 실행되어 입력된 값이 회원가입 화면으로 전달된다.




중복체크 화면이 열리면 제일 먼저 실행되는 함수이다. pValue( )는 부모창, 즉 회원가입 화면의 값을 가져와서 중복체크 화면에 아이디 입력란에 세팅한다.


※ 부모창에 접근하려면 opener를 사용해서 접근해야 한다. 




idCheck( )는 아이디 중복체크를 하는 함수이다. 여기서는 먼저 아이디 입력 여부와 한글이나 특수문자를 입력했는지를 검사한다. 이후 Ajax를 이용해 중복체크를 한다. Ajax 부분에 대한 설명은 다른 포스팅에서 몇 번 언급했기에 생략한다.


  • 61줄 : 아이디 입력란에서 입력된 값을 가져온다.

  • 63~65줄 : 아이디 입력 여부를 검사한다. 아이디 미입력시 경고 창을 띄운다.

  • 67~69줄 : 한글 및 특수문자 입력 여부를 검사한다. 한글이나 특수문자가 입력되었다면 경고 창을 띄운다.




서버로 데이터 전달 후 정상적으로 서버에서 데이터를 받을 경우 실행되는 부분이다. 0의 값을 받으면 중복된 아이디가 있는 것이고, 1의 값을 받으면 입력한 아이디는 사용할 수 있는 아이디이다.


여기서 visible와 hidden 이렇게 두 가지 CSS 속성이 사용된 것을 볼 수 있다. 이것은 소스 코드 128~129줄의 취소, 사용하기 버튼을 상황에 따라 보여주거나 보여주지 않거나 하기 위해서이다.


  • 88~90줄 : 아이디가 중복되었을 경우 사용하기 버튼은 보여주지 않는다. 그리고 innerHTML을 이용하여 <div id="msg">안에 입력된 텍스트를 공백으로 바꾼다.

  • 93~95줄 : 입력한 아이디가 사용 가능할 경우 사용하기 버튼을 보여준다. 그리고 innerHTML을 이용하여 <div id="msg">에 사용 가능하다는 텍스트를 보여준다.




사용하기 버튼 클릭 시 호출되는 함수이다. 여기서는 부모창인 회원가입 화면에 2가지 값을 전달한다.


  • 103줄 : opener을 이용해 부모창에 있는 <input type="hidden">에 값을 전달한다. idCheck가 전달되면 부모창에서는 중복체크를 한 것으로 판단한다.

  • 105줄 : 현재 중복체크 창에 입력된 아이디를 부모창에 아이디 입력란에 세팅한다.

  • 107~109줄 : 값 전달 후 중복체크 창을 닫는다.





■ MemberIdCheckAction.java




아이디 중복체크 Action에서는 중복체크 화면에서 넘겨받은 id를 검사하는 작업을 한다. 그리고 검사 결과에 따라 0 또는 1의 값을 화면으로 전달한다.


  • 18줄 : 파라미터에서 id값을 가져온다.

  • 21줄 : DAO로 전달하여 id 중복체크를 한다.

  • 26~27줄 : 중복된 아이디라면 0을 사용 가능한 아이디라면 1을 화면으로 전달한다.





■ MemberDAO.java




DAO에서는 기존에 구현해둔 중복체크 메서드를 사용하면 된다.





■ MemberCommand.properties


프로퍼티 파일에는 중복체크 관련 명령어를 추가한다.





3. 실행 결과





aaa라는 값을 입력 후 중복확인 버튼을 누른다. 그러면 아이디 중복체크 창이 뜨면서 aaa란 값이 입력되어 있는 것을 볼 수 있다.





중복확인을 누르면 중복 여부를 알 수 있다. 아이디가 중복되어 있을 경우 위와 같은 경고 창을 띄운다.





아이디가 사용 가능할 경우 위와 같은 메시지가 화면에 표시된다.





아이디 중복체크 창에서 사용하기 버튼을 누르면 자동적으로 사용 가능한 아이디가 회원가입 화면에 입력 된다.





여기서 가입 버튼을 클릭하면 비밀번호를 입력하라는 경고 창이 뜬다. 다른 부분도 마찬가지로 입력하지 않았다면 경고 창이 뜬다.




4. 소스코드 다운로드 (war 파일)



JSP_DEV.war




RSS구독 링크추가 트위터 이메일 구독