Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 알고리즘
- NoSQL
- MSI
- jdk
- 이메일인증
- Database
- Java
- LOL
- Jdk버전 변경
- Python
- tomcat
- 롤
- 롤토체스 꿀팁
- 데이터베이스
- jQuery
- 테이블
- 다국어처리
- 파이썬
- Spring
- 회원가입
- SQL
- oraclejdk
- 리그오브레전드
- oracle
- 롤토체스
- 마이바티스
- 자바스크립트
- mac jdk 설치
- MacOSJdk
- 스프링
Archives
- Today
- Total
웹쟁이의 일상
[Spring] 회원가입 구현하기 -3 본문
안녕하세요~! 이번에도 저번 포스팅에 이어서 회원가입 페이지를 만들도록 하겠습니다.
저번 포스팅에서 아이디 중복 체크까지 구현을 했으니 이어서 만들어 보겠습니다.
$(document).on("click", "#emailBtn", function(){
/* 이메일 유효성 검사 조건문 */
if(!$.trim($("#userId").val())){
alert("아이디를 먼저 입력해 주세요.");
return false;
}
if(!$.trim($("#userEmail").val())){
$("#createEmailSpan").css("color", "red").css("font-size", "10px").css("margin-top", "5px").css("margin-left", "5px").css("width", "235px").css("float", "left");
$(".createEmailSpan").html("이메일을 입력하세요.").promise().done(function(){
$(".createEmailSpan").slideDown("fast");
$(this).effect("shake", {times:15,distance:3,direction:"up"}, 300);
});
return false;
}
if ($("#${commandName} #userEmail").val() != "") {
var emailChecked = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // 이메일 유효성검사
if (!emailChecked.test($("#${commandName} #userEmail").val())) {
$("#createEmailSpan").css("color", "red").css("font-size", "10px").css("margin-top", "5px").css("margin-left", "5px").css("width", "235px").css("float", "left");
$("#createEmailSpan").html("잘못된 이메일 주소입니다.").promise().done(function(){
$(".createEmailSpan").slideDown("fast");
$(this).effect("shake", {times:15,distance:3,direction:"up"}, 300);
});
return false;
}
}
/* 이메일 중복 체크 비동기 처리 */
$.ajax({
beforeSend: function(){
loadingBarStart();
},
type:"get",
url : "<c:url value='/login/createEmailCheck.do'/>",
data : "userEmail=" + $("#userEmail").val() + "&random=" + $("#random").val(),
//data: "userEmail="+encodeURIComponent($('#userEmail').val()),
/* encodeURIComponent
예를들어, http://a.com?name=egoing&job=programmer 에서 &job=programmer
중 '&'는 하나의 파라미터가 끝나고 다음 파라미터가 온다는 의미이다.
그런데 다음과 같이 job의 값에 &가 포함된다면 시스템은 job의 값을 제대로 인식할수 없게 된다. */
success : function(data){
if(data == true){
$("#emailBtn").remove();
$(".emailAuth").remove();
$(".emailCheck").append('<span class="createEmailSpan" id="createEmailSpans"></span>');
$("#createEmailSpan").css("color", "blue").css("font-size", "10px").css("margin-top", "5px").css("margin-left", "5px").css("width", "290px").css("float", "left");
$(".emailSuccess").remove();
$("#userEmail").attr('readonly', true);
document.getElementById("createEmailSpan").innerHTML = "사용가능한 이메일입니다. 인증번호를 확인 후 입력해주세요.";
$(".auth").append("<label class='control-label emailAuth labelEmailAuth'>인증번호</label>"
+ "<input type='text' id='emailAuth' name='emailAuth' class='form-control emailAuth emailAuthInput emailCss' onKeyUp='emailAuthCheck()'/>"
+ "<button type='button' class='btn btn-info emailAuth emailAuthBtn emailCss' id='emailAuthBtn'>인증</button>"
+ "<button type='button' class='btn btn-info emailAuth emailAuthBtn emailCss' id='emailReset'>이메일변경</button>"
+ "<span class='joinSpan'>남은 시간 :</span><span class='joinTime'><em id='joinEmTime'></em></span></span>");
joinClearTime();
joinTimer();
}
if(data == false){
$("#createEmailSpan").css("color", "red").css("font-size", "10px").css("margin-top", "5px").css("margin-left", "5px").css("width", "270px").css("float", "left");
document.getElementById("createEmailSpan").innerHTML = "중복된 이메일이 있습니다. 다른 이메일을 사용하세요.";
}
},
complete: function(){
loadingBarEnd();
},
error: function(data){
alert("에러가 발생했습니다.");
return false;
}
})
})
/*
이메일 변경 버튼 클릭 이벤트
*/
$(document).on("click", "#emailReset", function(){
var conf = confirm("정말로 변경하시겠습니까?");
if(conf == true){
alert("이메일을 다시 입력해 주세요.")
$("#userEmail").removeAttr('readonly');
$(".emailAuth").remove();
removeTimer();
$(".brSpan").remove();
$("#createEmailSpans").remove();
$(".auth").append('<button type="button" class="btn btn-info emailBtn" id="emailBtn">인증번호 전송</button>');
document.getElementById("createEmailSpan").innerHTML = " ";
}
});
/*
이메일 인증번호 입력 후 인증 버튼 클릭 이벤트
*/
$(document).on("click", "#emailAuthBtn", function(){
$.ajax({
beforeSend: function(){
loadingBarStart();
},
type:"get",
url:"<c:url value='/login/emailAuth.do'/>",
data:"authCode=" + $('#emailAuth').val() + "&random=" + $("#random").val(),
success:function(data){
if(data=="complete"){
alert("인증이 완료되었습니다.");
$("#emailAuth").attr('readonly', true);
$("#emailAuthBtn").attr('disabled', true);
document.getElementById("createEmailSpan").innerHTML = "인증이 완료되었습니다.";
removeTimer();
}else if(data == "false"){
alert("인증번호를 잘못 입력하셨습니다.")
}
},
complete: function(){
loadingBarEnd();
},
error:function(data){
alert("에러가 발생했습니다.");
}
});
});
이메일 인증을 위해 위의 스크립트를 추가해주겠습니다.
@RequestMapping(value="/createEmailCheck.do", method=RequestMethod.GET)
@ResponseBody
public boolean createEmailCheck(@RequestParam String userEmail, @RequestParam int random, HttpServletRequest req){
//이메일 중복체크
int cnt = -1;
cnt = userService.createEmailCheck(userEmail);
//이메일 인증
int ran = new Random().nextInt(900000) + 100000;
HttpSession session = req.getSession(true);
String authCode = String.valueOf(ran);
session.setAttribute("authCode", authCode);
session.setAttribute("random", random);
String subject = "회원가입 인증 코드 발급 안내 입니다.";
StringBuilder sb = new StringBuilder();
sb.append("귀하의 인증 코드는 " + authCode + "입니다.");
if(cnt <= 0) return mailService.send(subject, sb.toString(), sendEmailId, userEmail, null);
else return false;
}
컨트롤러도 만들어 주겠습니다. 이메일 중복 체크를 위한 로직입니다.
이메일 인증번호를 보내주기 위해 6자리 난수를 생성하였습니다.
public int createEmailCheck(String userEmail);
@Override
public int createEmailCheck(String userEmail) {
return userDao.createEmailCheck(userEmail);
}
ServiceImpl, Service를 만들어줍니다.
public int createEmailCheck(String userEmail){
return (int) selectOne(PREFIX + "createEmailCheck", userEmail);
}
DAO도 만들어 주겠습니다.
<select id="createEmailCheck" resultType="int" parameterType="String">
SELECT COUNT(USER_EMAIL) FROM USER_INFO
WHERE USER_EMAIL = #{value}
/* com.co.kr.login.dao.createEmailCheck */
</select>
Mapper입니다.
@RequestMapping(value="/emailAuth.do", method=RequestMethod.GET)
@ResponseBody
public ResponseEntity<String> emailAuth(@RequestParam String authCode, @RequestParam String random, HttpSession session){
String originalJoinCode = (String) session.getAttribute("authCode");
String originalRandom = Integer.toString((int) session.getAttribute("random"));
if(originalJoinCode.equals(authCode) && originalRandom.equals(random))
return new ResponseEntity<String>("complete", HttpStatus.OK);
else return new ResponseEntity<String>("false", HttpStatus.OK);
}
다음은 이메일 인증을 위한 컨트롤러에서 로직을 만들어 주겠습니다.
이메일 인증을 하게 되면 이런식으로 화면이 뜨게 됩니다.
이메일 인증까지 완료했으니 다음 포스팅에서 회원가입을 이어나가겠습니다.
'JAVA' 카테고리의 다른 글
[Spring] 회원가입 구현 - 5 <비밀번호 암호화> (0) | 2019.05.23 |
---|---|
[Spring] 회원가입 구현하기 - 4 <다음 주소 API 사용법> (1) | 2019.05.22 |
[Spring] 회원가입 구현하기 - 2 (0) | 2019.05.21 |
[Spring] 회원가입 구현하기 -1 (2) | 2019.05.20 |
[Spring] 다국어 처리 방법 (0) | 2019.05.20 |
Comments