4-5) 다음 주소 API 활용하기
signup.js
function execDaumPostcode() {
new daum.Postcode({
oncomplete: function(data) {
var addr = '';
var extraAddr = '';
if (data.userSelectedType === 'R') {
addr = data.roadAddress;
} else {
addr = data.jibunAddress;
}
document.getElementById('postcode').value = data.zonecode;
document.getElementById("address").value = addr;
document.getElementById("detailAddress").focus();
}
}).open();
}
document.querySelector("#searchAddress").addEventListener("click", execDaumPostcode);

4-6) 가입하기
Member 컨트롤러
@PostMapping("signup")
public String signup(@ModelAttribute Member inputMember,
@RequestParam("memberAddress") String[] memberAddress,
RedirectAttributes ra) {
int result = service.signup(inputMember, memberAddress);
String path = null;
String message = null;
if(result > 0) {
message = inputMember.getMemberNickname() + "님의 가입을 환영합니다 :)";
path = "/";
} else {
message = "회원가입 실패...";
path = "signup";
}
ra.addFlashAttribute("message", message);
return "redirect:" + path;
}
ServiceImpl
@Override
public int signup(Member inputMember, String[] memberAddress) {
if(!inputMember.getMemberAddress().equals(",,")) {
String address = String.join("^^^", memberAddress);
inputMember.setMemberAddress(address);
} else {
inputMember.setMemberAddress(null);
}
String encPw = bcrypt.encode(inputMember.getMemberPw());
inputMember.setMemberPw(encPw);
return mapper.signup(inputMember);
}
}
member-mapper.xml
<insert id="signup">
INSERT INTO "MEMBER"
VALUES(SEQ_MEMBER_NO.NEXTVAL,
#{memberEmail},
#{memberPw},
#{memberNickname},
#{memberTel},
#{memberAddress},
NULL,
DEFAULT,
DEFAULT,
DEFAULT
)
</insert>
signup.js
const signUpForm = document.querySelector("#signUpForm");
signUpForm.addEventListener("submit", e => {
for(let key in checkObj) {
if( !checkObj[key] ) {
let str;
switch(key) {
case "memberEmail" :
str = "이메일이 유효하지 않습니다."; break;
case "authKey" :
str = "이메일이 인증되지 않았습니다."; break;
case "memberPw" :
str = "비밀번호가 유효하지 않습니다."; break;
case "memberPwConfirm" :
str = "비밀번호가 일치하지 않습니다."; break;
case "memberNickname" :
str = "닉네임이 유효하지 않습니다."; break;
case "memberTel" :
str = "전화번호가 유효하지 않습니다."; break;
}
alert(str);
document.getElementById(key).focus();
e.preventDefault();
return;
}
}
});

