
저번에 회원가입 양식 `join.jsp` 까지 만들었다.
오늘은 userDAO 클래스에 회원가입을 처리하는 메서드를 하나 추가해 줄것이다.
DAO 클래스는 실제로 DB에 접근해서 어떤 데이터를 가져오거나 데이터를 넣는 역할을 하는 데이터 접근 객체이다.
그리고 처리된 결과값을 가져와서 View 처리하는 `join Action.jsp` 까지 만들어 볼 것이다.

먼저 userDAO 클래스로 간다.
login 메서드 아래에 join 메서드를 만들어 준다.
// 회원가입 처리 로직
public int join(User user) {
String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, ?)";
try {
psmt = conn.prepareStatement(SQL);
psmt.setString(1, user.getUserID());
psmt.setString(2, user.getUserPassword());
psmt.setString(3, user.getUserName());
psmt.setString(4, user.getUserGender());
psmt.setString(5, user.getUserEmail());
return psmt.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
}
return -1; // DB오류
// INSERT 쿼리 실행하면 0 이상 반환하므로 -1이 아닌 경우에 성공적으로 회원가입 된 것!
}

이제 회원가입 로직을 처리하고 결과를 반환해서 보여줄 jsp페이지 `joinAction.jsp`를 만들어야 한다.
기존에 만든 `loginAction.jsp` 파일을 그대로 복붙해서 이름을 `joinAction.jsp`로 고쳐주었다.
상단 태그립에 `userID`와 `userPassword`만 자바빈 프로퍼티로 설정이 되어 있는데
`userName`, `userGender`, `userEmail`도 추가해 주기

스크립트립을 열고 먼저 null 처리를 담당해줄 if문을 하나 작성한다.
각 변수에 하나라도 값이 안 들어오면 회원가입을 할 수 없도록 하는 것이다.
`null` 값이 담긴 변수가 있 다면 '입력이 안 된 사항이 있습니다'라는 알림창을 띄우고 뒤로가기가 실행될 수 있도록 한다.
회원가입에 필요한 모든 값이 DB로 잘 들어갔다면, DB에 `삽입된 행(row)의 개수`가 반환된다. 일반적으로 result가 1이상이면 DB업데이트가 잘 된것이다.
하지만 join 메서드가 -1을 반환한다면 오류가 난 것이므로 예외 처리를 해 주어야 한다. 일단, DB에서 데이터가 입력이 안 되고 있다는 것은 아이디가 이미 존재하는 경우이다. `userID` 값은 기본 키로 지정되어 있기 때문에 user 테이블에서 유일한 값이 되어야 한다. 따라서 `result == -1`이면 '이미 존재하는 아이디입니다'라는 알람 창을 띄워준다.
회원가입이 성공하면 `main.jsp` 페이지로 이동될 수 있게 해준다.
<%
// 아무것도 입력 안하고 회원가입 버튼 누르면 각 변수에 null 값 들어감
// null처리
if (user.getUserID() == null || user.getUserPassword() == null ||
user.getUserName() == null || user.getUserGender() == null ||
user.getUserEmail() == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('입력이 안 된 사항이 있습니다.')");
script.println("history.back()");
script.println("</script>");
} else {
UserDAO userDAO = new UserDAO();
int result = userDAO.join(user);
if (result == -1) { // DB오류 발생(해당 아이디가 이미 존재하는 경우)
// 유저 아이디는 PK(기본키)라서 테이블에 단 하나만 존재해야 함
// 동일한 아이디가 입력되면 -1 반환
// 뒤로가기
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('이미 존재하는 아이디입니다.')");
script.println("history.back()");
script.println("</script>");
}
else { // 회원가입 성공 -> 메인 메이지(main.jsp)로 이동
// result 가 -1 이 아닌 경우에는 정상적으로 등록이 된 것!
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
}
%>
이제 `join.jsp`페이지에서 톰캣 서버를 실행해서 테스트 해 보자
`Ctrl` + `F11`눌러 주자.
회원가입 화면에서 양식을 모두 입력해 주고 회원가입 버튼을 클릭!

분명 폼을 다 채웠는데도 `입력이 안 된 사항이 있습니다. `라는 alert창이 나온다.
뭔가 오타가 있어서 데이터가 안넘어간 모양이다.
다시 `join.jsp`의 `<form>` 태그나 `<input>` 태그에서 오타나 속성값이 잘못된 부분이 없는지 확인해 주자.

input태그 name값에 오타가 있었다. userEmail 인데 l을 두 번 써 주어서 이메일 값이 안 넘어 가고 있었다.


수정 해 주고, 재시도 했음.
잉? 회원가입은 성공했는데 자꾸 `joinAction.jsp` 페이지로 넘어간다.
locaion.href 설정이 잘못되어 있는 것 같다.

확인 해 보니 닫는 부분의 ' 작은 따옴표 하나가 빠져 있었다.
해당 부분을 수정해 주었다.


다시 회원가입 화면으로 돌아와서 테스트!

이렇게 기존 테이블에 dain3 유저의 회원 정보가 잘 들 어온 것을 확인 해 볼 수 있다.

그리고 회원가입에 성공하면 `main.jsp` 페이지로 이동이 되는 걸 URL 을 통해 확인할 수 있다.
아직 `main.jsp`를 안 만들었기 때문에 HTTP 응답코드 404 에러가 뜨는 것이 정상이다!!

오늘은 여기까지 마무리
'Spring&JSP' 카테고리의 다른 글
| [JSP] 게시판 만들기 8 _ 게시판 메인 페이지 만들고 게시판 데이터베이스 구축하기 (70) | 2024.12.08 |
|---|---|
| [JSP] 게시판 만들기 7 _ 회원세션 관리하기 (94) | 2024.12.05 |
| [JSP] 게시판 만들기 5 _ form태그와 input태그로 간단한 join.jsp 회원가입창 만들기 (68) | 2024.12.04 |
| [JSP] 게시판 만들기 4 _ UserDAO 클래스 & JDBC 연동 (62) | 2024.12.04 |
| [JSP] 게시판 만들기 3 _ MySQL user 테이블 만들고, 이클립스에서 자바빈 만들기 (62) | 2024.12.03 |