회원가입 화면으로 이동
회원가입 메뉴는 nav.jsp에 코딩되어 있다.
<li><a href="<c:url value='/user/member/createAccountForm' />">회원가입</a></li>
회원가입 메뉴가 /user/member/createAccountForm에 링크되어 있으므로 UserMemberController 컨트롤러에 createAccountForm()을 만들고 매핑한다.
package com.office.library.user.member;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user/member")
public class UserMemberController {
// 회원가입
@GetMapping("/createAccountForm")
public String createAccountForm() {
System.out.println("[UserMemberController] createAccountForm()");
String nextPage = "user/member/create_account_form";
return nextPage;
}
}
회원가입 처리하기
회원가입 화면은 create_account_form.jsp로 회원가입 양식과 관련된 코드는 다음과 같다.
· 사용자 정보가 전송되는 서버 주소는 /user/member/createAccountConfirm이고, 전송방식은 post이다.
<form action="<c:url value='/user/member/createAccountConfirm' />" name="create_account_form" method="post">
<input type="text" name="u_m_id" placeholder="INPUT USER ID."> <br>
<input type="password" name="u_m_pw" placeholder="INPUT USER PW."> <br>
<input type="password" name="u_m_pw_again" placeholder="INPUT USER PW AGAIN."> <br>
<input type="text" name="u_m_name" placeholder="INPUT USER NAME."> <br>
<select name="u_m_gender">
<option value="">SELECET USER GENDER.</option>
<option value="M">Man</option>
<option value="W">Woman</option>
</select> <br>
<input type="email" name="u_m_mail" placeholder="INPUT USER MAIL." ><br>
<input type="text" name="u_m_phone" placeholder="INPUT USER PHONE."> <br>
<input type="button" value="create account" onclick="createAccountForm();">
<input type="reset" value="reset">
</form>
컨트롤러 기능 구현
서버에서 회원가입 요청을 처리하기 위해 UserMemberController에 createAccountConfirm()을 선언하고 클라이언트 요청(/user/member/createAccountConfirm)을 매핑한다.
@Autowired
UserMemberService userMemberService;
..생략..
// 회원가입 확인
@PostMapping("/createAccountConfirm")
public String createAccountConfirm(UserMemberVo userMemberVo) {
System.out.println("[UserMemberController] createAccountConfirm()");
String nextPage = "user/member/create_account_ok";
int result = userMemberService.createAccountConfirm(userMemberVo);
if (result <= 0)
nextPage = "user/member/create_account_ng";
return nextPage;
}
서비스 기능 구현
컨트롤러에서 지시한 업무를 처리하기 위해서 서비스(UserMemberService)를 다음과 같이 코딩한다.
package com.office.library.user.member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserMemberService {
final static public int USER_ACCOUNT_ALREADY_EXIST = 0;
final static public int USER_ACCOUNT_CREATE_SUCCESS = 1;
final static public int USER_ACCOUNT_CREATE_FAIL = -1;
@Autowired
UserMemberDao userMemberDao;
public int createAccountConfirm(UserMemberVo userMemberVo) {
System.out.println("[UserMemberService] createAccountConfirm()");
boolean isMember = userMemberDao.isUserMember(userMemberVo.getU_m_id());
if(!isMember) {
int result = userMemberDao.insertUserAccount(userMemberVo);
if (result > 0)
return USER_ACCOUNT_CREATE_SUCCESS;
else
return USER_ACCOUNT_CREATE_FAIL;
} else {
return USER_ACCOUNT_ALREADY_EXIST;
}
}
}
DAO 기능 구현
서비스에서 지시한 업무를 처리하기 위해서 DAO(UserMemberDao)를 다음과 같이 코딩한다.
package com.office.library.user.member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
@Component
public class UserMemberDao {
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
PasswordEncoder passwordEncoder;
public boolean isUserMember(String u_m_id) {
System.out.println("[UserMemberDao] isUserMember()");
String sql = "SELECT COUNT(*) FROM tbl_user_member "
+ "WHERE u_m_id = ?";
int result = jdbcTemplate.queryForObject(sql, Integer.class, u_m_id);
return result > 0 ? true : false;
}
public int insertUserAccount(UserMemberVo userMemberVo) {
System.out.println("[UserMemberDao] insertUserAccount()");
String sql = "INSERT INTO tbl_user_member(u_m_id, "
+ "u_m_pw, " + "u_m_name, " + "u_m_gender, "
+ "u_m_mail, " + "u_m_phone, " + "u_m_reg_date, "
+ "u_m_mod_date) VALUES(?, ?, ?, ?, ?, ?, NOW(), NOW())";
int result = -1;
try {
result = jdbcTemplate.update(sql,
userMemberVo.getU_m_id(),
passwordEncoder.encode(userMemberVo.getU_m_pw()),
userMemberVo.getU_m_name(), userMemberVo.getU_m_gender(),
userMemberVo.getU_m_mail(), userMemberVo.getU_m_phone());
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
이제 프로젝트를 실행하여 홈 화면에서 <회원가입>을 클릭한다. 회원가입에 필요한 회원 정보 입력 후 <create account>버튼을 클릭한다. CREATE ACCOUNT SUCCESS!! 문구가 뜬다면 정상적으로 회원가입이 된 것이다.
![]() |
![]() |
user1이 회원가입이 성공한 것을 확인했다. user2, user3도 신규 회원가입을 진행하고 데이터베이스에 추가되는지 확인해준다.
![]() |
![]() |
'Spring & Springboot > 올인원 스프링 프레임워크' 카테고리의 다른 글
전자 도서관 프로젝트 - 비밀번호 분실 처리 구현 (0) | 2023.12.02 |
---|---|
전자 도서관 프로젝트 - 로그인 및 로그아웃 구현 (0) | 2023.12.02 |
전자 도서관 프로젝트 - 사용자 홈 구현 (0) | 2023.12.02 |
전자 도서관 프로젝트 - 사용자 관련 기능 구현 준비 (0) | 2023.12.02 |
전자 도서관 프로젝트 - 도서 정보 수정과 삭제 기능 구현 (0) | 2023.11.30 |