ID 찾기
// 아이디 찾기 화면
function findId() {
// ID찾기 버튼 클릭 시 새 창을 열어 ID 찾기 페이지를 표시합니다.
window.open('/find-id', '아이디찾기', 'width=400,height=300');
}
// 아이디 찾기 화면
@GetMapping("/find-id")
public String findIdView() {
return "login/findId";
}
- 사용자가 "ID 찾기" 버튼을 클릭하면, findId() 함수가 호출되고 /find-id 경로의 새로운 팝업 창이 열립니다.
- 팝업 창이 열리며 서버에 /find-id GET 요청을 보내고, Spring Boot Controller는 findIdView() 메서드를 통해 login/findId.html 뷰를 반환합니다.
- 사용자는 팝업 창에서 ID 찾기 화면을 확인할 수 있습니다.
findID.html ( 아이디 찾기 )
<div class="find-id-container">
<h1>아이디 찾기</h1>
<form id="find-id-form" method="post">
<input type="text" name="name" id="name" placeholder="Name" />
<input type="email" name="email" id="email" placeholder="Email" />
<button type="button" onclick="findIdResult()">아이디 찾기</button>
</form>
</div>
아이디 찾기 버튼 클릭 시 호출되는 함수
// 아이디 찾기 결과
function findIdResult() {
if ($("#name").val() == "") {
swal.fire({
title: 'Name을 입력해 주세요',
icon: 'warning'
});
$("#name").focus();
return false;
} else if ($("#email").val() == "") {
swal.fire({
title: 'Email을 입력해 주세요',
icon: 'warning'
});
$("#email").focus();
return false;
}
$("#find-id-form").attr("action", "/findidresult").submit();
}
- 입력된 이름과 이메일을 검사하여 미입력 시 경고 메시지를 표시하고, 입력에 오류가 없으면 서버에 요청을 전송합니다.
- $("#find-id-form").attr("action", "/findidresult").submit(); 을 통해 find-id-form 폼 데이터를 /findidresult 경로로 POST 요청합니다.
Controller에서 ID 찾기 요청 처리
// 아이디 찾기 처리
@PostMapping("/findidresult")
public String findIdAction(Member vo, Model model) {
Member member = memberService.findId(vo.getName(), vo.getEmail());
if(member != null) {
model.addAttribute("message", 1);
model.addAttribute("id", member.getId());
} else {
model.addAttribute("message", -1);
}
return "login/findIdResult";
}
- Member vo 객체를 통해 사용자가 입력한 이름과 이메일 정보를 받고, Service의 findId 메서드를 호출하여 ID를 조회합니다.
- 조회 결과에 따라:
- 계정을 찾았으면 message에 1을 설정하고, id에는 찾은 ID를 담아 뷰 템플릿으로 전달합니다.
- 계정을 찾지 못했으면 message에 -1을 설정하여 실패 메시지를 전달합니다.
Repository - ID 찾기 쿼리
@Query(value="SELECT * FROM member WHERE id =:id", nativeQuery=true)
Member findByLoginId(String id);
Native Query를 사용해 DB에서 id 필드에 일치하는 데이터를 조회할 수 있도록 설정합니다.
Service - findId 메서드
@Override
public Member findId(String name, String email) {
return memberRepo.findByNameAndEmail(name, email);
}
View Template (HTML) - 결과 화면 표시
<div class="find-id-container">
<h1>아이디 찾기 결과</h1>
<th:block th:if="${message == 1}">
<h3>가입한 계정의 ID는 '[[${id}]]'입니다.</h3>
</th:block>
<th:block th:if="${message == -1}">
<h3>입력하신 이름과 이메일이 일치하는 계정을 찾을 수 없습니다.</h3>
</th:block>
<button type="button" onclick="ok()">확인</button>
</div>
PassWord 찾기
// 비밀번호 찾기 화면
function findPwd() {
// pwd찾기 버튼 클릭 시 새 창을 열어 pwd 찾기 페이지를 표시합니다.
window.open('/find-pwd', '비밀번호찾기', 'width=400,height=350');
}
// 비밀번호 찾기 화면
@GetMapping("/find-pwd")
public String findPwdView() {
return "login/findPwd";
}
- 사용자가 비밀번호 찾기 버튼을 클릭하면 findPwd JavaScript 함수가 실행됩니다.
- JavaScript의 window.open()을 통해 /find-pwd 경로로 GET 요청을 보냅니다.
- Spring Boot Controller의 findPwdView 메서드가 호출되어 비밀번호 찾기 뷰를 반환합니다.
findPwd.html (비밀번호 찾기 )
<div class="find-pwd-container">
<h1>비밀번호 찾기</h1>
<form id="find-pwd-form" method="post">
<input type="text" name="id" id="id" placeholder="ID" />
<input type="text" name="name" id="name" placeholder="Name" />
<input type="email" name="email" id="email" placeholder="Email" />
<button type="button" onclick="findPwdResult()">비밀번호 찾기</button>
</form>
</div>
비밀번호 찾기 버튼 클릭 시 호출되는 함수
// 비밀번호 찾기 결과
function findPwdResult() {
if ($("#id").val() == "") {
swal.fire({
title: 'ID를 입력해 주세요',
icon: 'warning'
});
$("#id").focus();
return false;
} else if ($("#name").val() == "") {
swal.fire({
title: 'Name을 입력해 주세요',
icon: 'warning'
});
$("#name").focus();
return false;
} else if ($("#email").val() == "") {
swal.fire({
title: 'Email을 입력해 주세요',
icon: 'warning'
});
$("#email").focus();
return false;
}
$("#find-pwd-form").attr("action", "/findpwdresult").submit();
}
- findPwdResult 함수는 사용자가 비밀번호 찾기 요청을 할 때, 필요한 정보를 모두 입력했는지 확인합니다.
- 각 입력 필드(ID, Name, Email)를 검사하여 비어 있는 필드가 있을 경우 경고 메시지를 보여줍니다.
- 모든 필드가 채워졌다면, #find-pwd-form의 action URL을 /findpwdresult로 설정하여 폼을 서버에 제출합니다.
Controller에서 비밀번호 찾기 요청 처리
// 비밀번호 찾기 처리
@PostMapping("findpwdresult")
public String findPwdAction(Member vo, Model model) {
Member member = memberService.findPwd(vo.getId(), vo.getName(), vo.getEmail());
if(member != null) {
model.addAttribute("message", 1);
model.addAttribute("id", member.getId());
model.addAttribute("pwd", member.getPwd());
} else {
model.addAttribute("message", -1);
}
return "login/findPwdResult";
}
- Service의 findPwd 메서드를 호출해 입력된 정보에 맞는 Member 객체를 검색하고, 찾은 결과에 따라 Model에 정보를 추가합니다.
- member가 존재하면 message에 1을, id와 pwd를 모델에 추가하여 뷰 템플릿에서 사용할 수 있게 합니다.
- 회원 정보가 없을 경우 message에 -1을 설정하여, 뷰에서 에러 메시지를 표시하도록 합니다.
- login/findPwdResult 템플릿을 반환하여 검색 결과를 화면에 보여줍니다.
Repository - pwd 찾기 쿼리
// 비밀번호 찾기 (id, name, email)
@Query(value="SELECT * FROM member WHERE id = :id AND name = :name AND email = :email", nativeQuery = true)
Member findByIdAndNameAndEmail(String id, String name, String email);
Service - findPwd 메서드
@Override
public Member findPwd(String id, String name, String email) {
return memberRepo.findByIdAndNameAndEmail(id, name, email);
}
HTML 템플릿 - findPwdResult.html
<div class="find-pwd-container">
<h1>비밀번호 찾기 결과</h1>
<th:block th:if="${message == 1}">
<h3>가입한 계정의 ID는 '[[${id}]]'입니다.</h3>
<h3>가입한 계정의 Password는 '[[${pwd}]]'입니다.</h3>
</th:block>
<th:block th:if="${message == -1}">
<h3>입력하신 내용과 일치하는 계정을 찾을 수 없습니다.</h3>
</th:block>
<button type="button" onclick="ok()">확인</button>
</div>
'SpringBoot 프로젝트' 카테고리의 다른 글
Spring Boot - 리뷰 CRUD기능 구현하기 (3) (2) | 2024.11.19 |
---|---|
Spring Boot - 리뷰 CRUD기능 구현하기 (2) (0) | 2024.11.19 |
Spring Boot - 리뷰 CRUD기능 구현하기 (1) (4) | 2024.11.18 |
Spring Boot로 회원가입 기능 구현 (2) | 2024.11.18 |
Java와 Spring Boot로 로그인 기능 쉽게 구현하기 (0) | 2024.11.17 |