1. ID/PW 찾기

1-1) 폼 작업

show, hide jquery로 작업

 

1-2) Service, Mapper interface 서비스

form대로 각 닉네임, 이메일을 통해서, 비밀번호 찾기는 아이디를 통해서 찾을 수 있도록 parameter 설정.

 

1-3) mapper.xml 작업

입력한 조건이 모두 존재할 때 조회하도록 설정

 

1-4) Controller 작업

아이디는 기존 data 찾아 보내는 기능

비밀번호는 임시 비밀번호를 발급하여 사용하도록 하는 기능

// 아이디 찾기
@ResponseBody
@PostMapping("/searchId")
public ResponseEntity<String> searchId(String user_id, @RequestParam("user_nm") String user_nm, @RequestParam("user_email") String user_email) {
		
	ResponseEntity<String> entity = null;
		
	if(!StringUtils.isEmpty(service.searchId(user_nm, user_email))) {
			
		EmailDTO dto = new EmailDTO("Jogak", "shhh0009@gmail.com", user_email, "Jogak Comunity 임시 비밀번호", user_id);
			
		MimeMessage message = mailSender.createMimeMessage();
			
		try {
				
			message.addRecipient(RecipientType.TO, new InternetAddress(user_email));
			message.addFrom(new InternetAddress[] {new InternetAddress(dto.getSender_email(), dto.getSender_name())});
			message.setSubject(dto.getEmail_title(), "UTF-8");
			message.setText(dto.getEmail_code());
				
			mailSender.send(message);
				
			entity = new ResponseEntity<String>("success", HttpStatus.OK);
				
		}catch(Exception e) {
				
			e.printStackTrace();				
			entity = new ResponseEntity<String>("fail", HttpStatus.BAD_REQUEST);
				
		}// try-catch 종료
			
	}else{
			
		entity = new ResponseEntity<String>("noNm", HttpStatus.OK);
		entity = new ResponseEntity<String>("noMail", HttpStatus.OK);
			
	}// if 종료
		
	return entity;
}
	
// 비밀번호 찾기
@ResponseBody
@PostMapping("/searchPw")
public ResponseEntity<String> searchPw(@RequestParam("user_id") String user_id, @RequestParam("user_nm") String user_nm, @RequestParam("user_email") String user_email) {
			
	ResponseEntity<String> entity = null;
		
	if(!StringUtils.isEmpty(service.searchId(user_nm, user_email))) {
		
		String tempPw = makeEmailCode();
			
		EmailDTO dto = new EmailDTO("Jogak", "shhh0009@gmail.com", user_email, "Jogak Comunity 임시 비밀번호", tempPw);
			
		MimeMessage message = mailSender.createMimeMessage();
			
		try {
				
			message.addRecipient(RecipientType.TO, new InternetAddress(user_email));
			message.addFrom(new InternetAddress[] {new InternetAddress(dto.getSender_email(), dto.getSender_name())});
			message.setSubject(dto.getEmail_title(), "UTF-8");
			message.setText(dto.getEmail_code());
				
			mailSender.send(message);
				
			String user_pw = tempPw;
			service.changePw(user_email, user_pw);
				
			entity = new ResponseEntity<String>("success", HttpStatus.OK);
				
		}catch(Exception e) {
				
			e.printStackTrace();				
			entity = new ResponseEntity<String>("fail", HttpStatus.BAD_REQUEST);
				
		}// try-catch 종료
			
	}else{
			
		entity = new ResponseEntity<String>("noNm", HttpStatus.OK);
		entity = new ResponseEntity<String>("noMail", HttpStatus.OK);
			
	}// if 종료
		
	return entity;
}

 

1-5) jsp jquery 기능 수정

이메일, 이름, 아이디 data가 상이할 때 fail하는 구문 추가.

// 아이디 찾기
	$.ajax({
		url: '/member/searchId',
		type: 'post',
		dataType: 'text',
		data: { user_email : user_email.val() },
		success: function(data){
			if(data == "success"){
				alert("아이디를 작성하신 이메일로 보냈습니다.\n메일을 확인해 주세요.");
			}else if(data == "fail"){
				alert("메일 발송이 실패했습니다. 다시 진행해 주세요.\n문제 발생 시 관리자에게 연락 주세요.");
			}else if(data == "noMail"){
				alert("가입한 이메일 정보가 없습니다. 다시 확인해 주세요.")
			}else if(data == "noNm"){
				alert("가입한 이메일과 일치하는 이름이 없습니다. 확인해 주세요.")
			}
		}
	}); // ajax 종료

// 비밀번호 찾기
	$.ajax({
		url: '/member/searchPw',
		type: 'post',
		dataType: 'text',
		data: { user_email : user_email.val() },
		success: function(data){
			if(data == "success"){
				alert("임시 비밀번호가 발송되었습니다.\n로그인 후 비밀번호를 변경해 주세요.");
			}else if(data == "fail"){
				alert("메일 발송이 실패했습니다. 다시 진행해 주세요.\n문제 발생 시 관리자에게 연락 주세요.");
			}else if(data == "noMail"){
				alert("가입한 이메일 정보가 없습니다. 다시 확인해 주세요.")
			}else if(data == "noId"){
				alert("가입한 이메일과 일치하는 아이디가 아닙니다. 확인해 주세요.")
			}else if(data == "noNm"){
				alert("가입한 이메일과 일치하는 이름이 없습니다. 확인해 주세요.")
			}
		}
	}); // ajax 종료

a) ID, PW 찾기 진행 시 같은 500번 오류 발생

Parameter 'user_id' not found. Available parameters are [arg1, arg0, param1, param2]

 

b) PW 찾기 진행 시 두 번째 빈 칸에서 진행되지 않는 오류.

빈칸 및 null 값에 반응하는 if문 3가지 중 2번째 칸(이름 란)만 오류가 뜸. 혹시나 해서 3번째(이메일 란)과 순서를 바꿨더니 해당 순서에서 해당 code로 오류 발생함. 첫번째 입력 값은 받고 넘어 간다.

>> jsp를 나누지 않고 통일해서 작업하니까... hide된 div에서 다른 쪽 value 값을 요구해서 생긴 오류.

jsp를 분리하니까 해결됨.

복사했습니다!