반응형
순서
1. 인증 번호(난수) 생성
2. 인증 번호 이메일 전송
3. 인증 번호 뷰(회원 가입 페이지)로 전송
1. 인증번호(난수) 생성
인증 번호로서 숫자 6자리를 사용할 것이고, 이를 위해서 JAVA에서 제공하는 Random객체를 사용했습니다.
'자바 난수 생성'과 같은 키워드를 검색하시면 'for문을 이요한 난수 생성', '문자를 포함한 난수 생성'등 여러 가지 방법이 검색됩니다.
제가 참고한 블로그에선 단순히 기능을 구현하는 것이 목표였기 때문에 random 함수에서 생성하는 숫자를 바로 사용했습니다.
1-1 Random 클래스를 이용하여 객체 변수 random을 선언
/* 인증 번호(난수) 생성 */
Random random = new Random();
1-2 random.nextInt()함수를 통해서 난수를 생성
/* 인증번호(난수) 생성 */
Random random = new Random();
/* 111111 ~ 999999 범위의 숫자를 얻기 위해서 nextInt(888888) + 111111를 사용 */
int checkNum = random.nextInt(888888) + 111111;
1-3 인증 번호가 정상적으로 생성되었는지 확인하기 위해서 logger 코드를 추가
/* 인증 번호(난수) 생성 */
Random random = new Random();
/* 111111 ~ 999999 범위의 숫자를 얻기 위해서 nextInt(888888) + 111111를 사용 */
int checkNum = random.nextInt(888888) + 111111;
/* 인증 번호가 정상적으로 생성되었는지 확인하기 위해서 logger 코드를 추가 */
logger.info("인증번호 " + checkNum);
2. 인증 번호 이메일 전송
2-1 변수를 선언해서 이메일 전송에 필요로 한 데이터를 할당
/* 이메일 보내기 */
String setFrom = "본인 이메일";
String toMail = email;
String title = "회원가입 인증 이메일입니다.";
String content = "SWAN을 방문해주셔서 감사합니다." + "<br><br>" + "인증 번호는 " + checkNum + "입니다." + "<br>"
+ "해당 인증번호를 인증번호 확인란에 기입하여 주세요.";
- setForm: root-context.xml에 삽입한 본인 이메일 계정의 이메일 주소입니다.(아이디만 입력하는 것이 아니라 이메일 주소를 입력해야 합니다.)
- toMail: 수신받을 이메일이며, 뷰로부터 받은 이메일 주소인 email을 사용했습니다.
- title: 이메일 제목입니다.
- content: 이메일 내용입니다.
2-2 MemberController.java 상단에 JavaMailSender 객체 타입인 mailSender 변수를 선언
@Autowired
private JavaMailSender mailSender;
2-3 이메일 전송을 위한 코드를 삽입
/* 이메일 전송을 위한 코드를 삽입 */
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
helper.setFrom(setFrom);
helper.setTo(toMail);
helper.setSubject(title);
helper.setText(content, true);
mailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
}
2-4 이메일이 정상적으로 전송되는지 테스트
3. 인증번호 뷰(회원가입 페이지)로 전송
이번 순서는 단순히 우리가 생성한 인증 번호 변수를 뷰로 반환하기만 하면 됩니다.
하지만 제가 생성한 방식의 경우 int 타입입니다.
ajax를 통한 요청으로 인해 뷰로 다시 반환할 때 데이터 타입은 String 타입만 가능합니다.
그렇기 때문에 String 타입으로 변환 후 반환해줍니다.
3-1 String 타입 변수 num을 선언하고 인증번호(checkNum)를 string으로 형 변환 한 값을 할당
/* 인증번호 뷰(회원가입 페이지)로 전송 */
// String 타입 변수 num을 선언하고 인증번호(checkNum)를 string으로 형 변환 한 값을 할당
String num = Integer.toString(checkNum);
3-2 mailCheckGET메서드의 변환 타입 void를 String으로 변경
/* 변경전 */
public void mailCheckGET(String email) throws Exception{
/* 변경후 */
public String mailCheckGET(String email) throws Exception{
3-3 mailCheckGET메서드의 return값으로 앞서 선언하였던 num을 사용
return num;
3-4 join.jsp에 이메일 인증번호 전송을 요청한 ajax에 succes 코드를 추가
$.ajax({
type:"GET",
url:"mailCheck?email=" + email,
success:function(data){
}
});
3-5 데이터 controller로 정상적으로 반환받았는지 확인하기 위해 console.log를 추가
$.ajax({
type:"GET",
url:"mailCheck?email=" + email,
success:function(data){
console.log("data : " + data);
}
});
3-6 테스트를 진행
- controller로부터 데이터가 정상적으로 반환되는지 확인만 하면 되기 때문에 이메일을 전송하는 코드를 주석 처리했습니다.
- 테스트가 정상적으로 진행되었다면 주석 처리를 다시 해제하면 됩니다.
반응형
'😎 STS3 Spring 쇼핑몰' 카테고리의 다른 글
STS3 쇼핑몰 프로젝트[5] 주소록 API 연동 (0) | 2022.07.31 |
---|---|
STS3 쇼핑몰 프로젝트[4] 인증 번호 이메일 전송(3) (0) | 2022.07.31 |
STS3 쇼핑몰 프로젝트[4] 인증 번호 이메일 전송(1) (0) | 2022.07.31 |
STS3 쇼핑몰 프로젝트[3] 아이디 중복 검사 기능 (0) | 2022.07.31 |
STS3 쇼핑몰 프로젝트[2.2] 회원 가입 기능 구현(service/controller/jsp) (0) | 2022.07.31 |