YJ의 새벽

JDBC 활용 연습용6. ( 닉네임 중복확인 + 전화번호유효성검사 ) 본문

SelfStudy/JDBC

JDBC 활용 연습용6. ( 닉네임 중복확인 + 전화번호유효성검사 )

YJDawn 2023. 3. 29. 21:11

 

 

 

---signUp.js   닉네임확인 이벤트 추가.   ( 중복검사 (DB연결) )

// 닉네임 확인 .   중복검사 까지 .  // 1 or 0 반환  ///////////////////////////
const regExp3 = /^[a-zA-Z0-9가-힣]{2,10}$/;
const memberNickname = document.getElementById("memberNickname");
const nicknameMessage = document.getElementById("nicknameMessage");

memberNickname.addEventListener("input",function(){
    // 닉네임 입력이 안된경우
    if ( memberNickname.value.length==0){
        nicknameMessage.innerText="영어/숫자/한글 2~10글자 사이로 작성해주세요.!!";
        nicknameMessage.classList.remove("confirm","error");

        checkObj.memberNickname = false;
        return;
    };
    
    //  닉네임 정규표현식 true
    if ( regExp3.test(memberNickname.value)) {

        $.ajax({                 // 닉네임  중복이면 1 , 중복아니면 0
            url : "NicknameCheck" ,
            data : {"memberNickname" : memberNickname.value},
            success : function(result){    // java 에서 넘어온 result 값.
                if (result ==1 ) {    // 닉네임 중복
                    nicknameMessage.innerText = "이미 사용중인 닉네임입니다";
                    nicknameMessage.classList.add("error");
                    nicknameMessage.classList.remove("confirm");
                    checkObj.memberNickname = false;
                }else{           // 닉네임 중복 X 
                    nicknameMessage.innerText = "사용가능한 닉네임입니다";
                    nicknameMessage.classList.add("confirm");
                    nicknameMessage.classList.remove("error");
                    checkObj.memberNickname = true;
                }
            },
            error : function(){
                console.log("닉네임 오류발생");
            }
        });
    }else{   // 정규표현식 false
        nicknameMessage.innerText = "닉네임 형식이 유효하지않습니다!";
        nicknameMessage.classList.add("error");
        nicknameMessage.classList.remove("confirm");
    }
});

 

--- NicknameDupCheckServlet.class  추가   ( /member/NicknameCheck ) 

@WebServlet("/member/NicknameCheck")
public class NicknameDupCheckServlet extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		String memberNickname = req.getParameter("memberNickname");
		
		try {
			MemberService service = new MemberService();
			
			int result = service.nicknameDupCheck(memberNickname);
			
			resp.getWriter().print(result);
			
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

 

--- MemberService.class   nicknameDupCheck()  추가 

	/** 멤버닉네임 중복확인 서비스
	 * @param memberNickname
	 * @return
	 * @throws Exception
	 */
	public int nicknameDupCheck(String memberNickname) throws Exception{
		
		Connection conn = getConnection();
		
		int result = dao.nicknameDupCheck(conn,memberNickname);
		
		close(conn);
		
		return result;
	}
}

 

 

--- MemberDAO.class    nicknameDupCheck()  추가

/**  멤버닉네임 중복확인 DAO
	 * @param conn
	 * @param memberNickname
	 * @return
	 */
	public int nicknameDupCheck(Connection conn, String memberNickname) throws Exception{
		int result = 0;
		try {
			String sql = prop.getProperty("nicknameDupCheck");
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memberNickname);
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				result = rs.getInt(1);
			}
		}finally {
			close(rs);
			close(pstmt);
		}
		return result;
	}
}

 

 

--- member-sql.xml    멤버닉네임 중복 쿼리문 추가

	<entry key="nicknameDupCheck">
	SELECT COUNT(*) FROM MEMBER
	WHERE MEMBER_NICK= ?
	AND SECESSION_FL = 'N'
	</entry>

 

 

 

 

--- signUp.js  전화번호 유효성검사 이벤트 추가

// 전화번호 확인   ////////////////////////////////////////////////////////
const regEx4 = /^0(1[01679]|2|[3-6][1-5]|70)\d{3,4}\d{4}$/;
const memberTel = document.getElementById("memberTel");
const telMessage = document.getElementById("telMessage");

memberTel.addEventListener("input",function(){

    if ( memberTel.value.length==0){     // 전화번호 입력되지 않았을때
        telMessage.innerText="전화번호를 입력해주세요.(- 제외)!!!";
        telMessage.classList.remove("confirm","error");
        checkObj.memberTel = false;
        return;
    };

    if ( regEx4.test(memberTel.value)){   // 전화번호 유효성검사 O
        telMessage.innerText = "전화번호를 알맞게 입력하셨습니다.";
        telMessage.classList.add("confirm");
        telMessage.classList.remove("error");
        checkObj.memberTel = true;
    } else{            // 전화번호 유효성검사 X
        telMessage.innerText = "'-'없이 숫자만 입력해주세요'";
        telMessage.classList.add("error");
        telMessage.classList.remove("confirm");
        checkObj.memberTel = false;
    }
});

 

 

 

 

 

 

 

Comments