2017 - 12 - 03 (일)
이메일 중복 여부 확인하기
1 . 이메일 중복확인 버튼을 클릭할 때 ajax 로 /user/authenticate 컨트롤러에 json 형식의 데이터를 보낸다. (email 값)
<script>
$(document).on('click','#authenticate',function(){
var email = $('#email').val()
$.ajax({
url:'/user/authenticate',
type:'POST',
data: {'email' : email},
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType : "json",
success:function(data){
console.log("success")
alert(decodeURIComponent(data.msg))
},
error: function (XMLHttpRequest, textStatus, errorThrown){
alert('서버와의 통신이 원할하지 않습니다.\n다시 시도 해 주십시오.' );
}
});
});
</script>
2 . 컨트롤러는 email 값을 받아 db에서 email 값이 있는지 확인하고 있을 경우 F 로 사용불가를 전달 , Email 값이 없을 경우 T로 사용가능을 표시해준다. 이 때 중요한 부분이 [ produces = “application/json; charset=utf-8” ] 이 부분이다. 이 설정을 넣어주지 않으면 front 단에서 한글을 인식하지 못한다. ( JSON 데이터 처리를위해 pom.xml 에 Jackson-databind 추가 필요 )
@Responsebody 애너테이션을 붙이면 JSON 데이터를 처리한다. @RequestParam 으로 “email” 키에 있는 email 값을 String 변수 email 에 주입해준다.
@RequestMapping(value = "/authenticate" , method = RequestMethod.POST, produces = "application/json; charset=utf-8")
public @ResponseBody String checkDuplicate(HttpServletResponse response, @RequestParam("email") String email, Model model)throws Exception {
String msg = service.authenticate(email);
System.out.println(msg);
String responseMsg;
if(msg == "T") {
responseMsg = "{\"msg\":\""+"사용가능한 이메일 입니다."+"\"}";
}else {
responseMsg = "{\"msg\":\""+"사용이 불가한 이메일 입니다."+"\"}";
}
URLEncoder.encode(responseMsg , "UTF-8");
// model.addAttribute("msg", service.authenticate(email));
System.out.println(email);
return responseMsg;
}
3 . serviceImpl
@Override
public String authenticate(String str) throws Exception {
// TODO Auto-generated method stub
System.out.println("인증 중");
if(dao.authenticate(str) ==null) {
return "T";
}else {
return "F";
}
}
4 . DAOImpl
@Override
public UserVO authenticate(String str) throws Exception {
// TODO Auto-generated method stub
System.out.println("dao");
return sqlSession.selectOne(namespace+".checkdupl", str);
}
5 . mapper
<select id = "checkdupl" resultType = "UserVO">
select user_id from USER where user_email = #{user_email}
</select>