Coding/SpringFramework

회원가입시 아이디 확인, 빈칸 허용하지 않기

코딩; 2022. 1. 24. 06:00

아이디 중복확인

 

1. Member.xml 업데이트

 

  id값 가져오기, mapper태그 내에 작성해준다.

<select id="getId" parameterType="String" resultType="Integer">
	SELECT COUNT(*)
	FROM MEMBER
	WHERE ID=#{id}
</select>

 

2. MemberDao, MemberDaoImpl 업데이트

 

  MemberDao

int getId(String id);

  MemberDaoImpl

@Override
public int getId(String id) {
    int count = session.selectOne(ns + "getId", id);
    return count;
}

 

3. MemberService, MemberServiceImpl 업데이트

 

  MemberService

int getId(String id);

  MemberService

@Override
public int getId(String id) {		
    return dao.getId(id);
}

 

4. MemberController 업데이트  Ajax를 쓸 때는 @ResponseBody 붙여주기

 

  Ajax란?

  자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능

  비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식이다.

@ResponseBody	// Ajax
@RequestMapping(value = "idcheck.do", method = RequestMethod.POST)
public String idcheck(String id) {
    logger.info("MemberController idcheck() " + new Date());		
    System.out.println("id:" + id);

    int count = service.getId(id);
    System.out.println("count:" + count);		
    if(count > 0) {	// 아이디가 있음
        return "NO";
    }else {	       // 아이디가 없음
        return "YES";
    }		
}

 

5. regi.jsp 업데이트

  regi.jsp 업데이트회원가입 양식을 감싸고 있는 div태그 외부, body태그 내부에 작성한다.

<script type="text/javascript">
$(document).ready(function () {
	
	$("#btn").click(function () {
	//	alert('btn click');
	//	let id = $("#id").val();
	//	alert(id);
		
		// id 확인 -> ajax
		$.ajax({
			url:"idcheck.do",
			type:"post",
			data:{ id:$("#id").val() },
			success:function( msg ){
			//	alert('success');
			//	alert(msg);
			
				if(msg == "YES"){
					$("#idcheck").css("color", "#0000ff");
					$("#idcheck").html("사용할 수 있는 아이디입니다");
				}else{
					$("#idcheck").css("color", "#ff0000");
					$("#idcheck").html("사용 중인 아이디입니다");
					$("#id").val("");
				}			
			},
			error:function(){
				alert('error');
			}
		});
	});	
});
</script>

controller의 RequestMethod 방식과 ajax내 type이 일치해야 한다!

 

6. 가입 양식 빈칸 허용 X

  regi.jsp내의 script태그 내부에 추가해준다.

function account() {
//	alert('account');

	if($("#id").val() == ''){
		alert('아이디를 입력해 주십시오');
	}
	else if($("#pwd").val() == ''){
		alert('패스워드를 입력해 주십시오');
	}
	else if($("#name").val() == ''){
		alert('이름를 입력해 주십시오');
	}
	else if($("#email").val() == ''){
		alert('이메일을 입력해 주십시오');
	}
	else{
		$("#frm").submit();
	}
}