1. 패키지명을 테이블명으로 1대1 매칭시킨다.
DTO, DAO를 통해 데이터 입출력을 수행한다.
2. 회원 테이블의 칼럼들을 변수로 만들고 각각 생성자와 getter / setter를 만들어준다.
==> 초기화
USER
- userID
- userPassword
- userEmail
- userEmailHash
- userEmailChecked
3. DAO에서 함수 작성
pstmt.executeUpdate() ==> insert, update, delete 등에 사용
pstmt.executeQuery() ==> select에 사용
다 배웠던 건데 가물가물하다..
3 -1. 로그인 함수
public int login(String userID, String userPassword) {
String SQL = "SELCET userPassword FROM USER WHERE userID = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs =null;
try {
conn = DatabaseUtil.getConnection();
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if(rs.next()) {
if(rs.getString(1).equals(userPassword)) {
return 1; //로그인 성공
}
else {
return 0; // 비밀번호 틀림
}
}
return -1; // 아이디 없음
} catch(Exception e) {
e.printStackTrace();
} finally {
try {if(conn != null) conn.close();} catch(Exception e){e.printStackTrace();}
try {if(pstmt != null) pstmt.close();} catch(Exception e){e.printStackTrace();}
try {if(rs != null) rs.close();} catch(Exception e){e.printStackTrace();}
}
return -2; // 데이터베이스 오류
}
3 -2. 회원가입 함수
public int join(UserDTO user) {
String SQL = "INSERT INTO USER VALUES(?, ?, ?, ?, false)";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs =null;
try {
conn = DatabaseUtil.getConnection();
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, user.getUserID());
pstmt.setString(1, user.getUserPassword());
pstmt.setString(1, user.getUserEmail());
pstmt.setString(1, user.getUserEmailHash());
rs = pstmt.executeQuery();
return pstmt.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
} finally {
try {if(conn != null) conn.close();} catch(Exception e){e.printStackTrace();}
try {if(pstmt != null) pstmt.close();} catch(Exception e){e.printStackTrace();}
try {if(rs != null) rs.close();} catch(Exception e){e.printStackTrace();}
}
return -1; // 데이터베이스 오류
}
join함수의 매개변수로 UserDTO 객체 user을 넣어서 미리 만들어준 getter를 통하여 정보를 가져온다. 이를 쿼리문에 집어넣어서 user 데이터베이스로 넣어주는 형식.
회원가입에 성공하면 return pstmt.executeUpdate();을 통하여 1이 return 될 것이다.
3-3. 이메일 인증 확인 함수
이메일 인증을 한 사용자만이 강의평가를 할 수 있다. 이를 위해서 userEmailChecked를 검사
public boolean getUserEmailChecked(String userID) {
String SQL = "SELECT userEmailChecked FROM USER WHERE userID = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs =null;
try {
conn = DatabaseUtil.getConnection();
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if(rs.next()) {
return rs.getBoolean(1);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {if(conn != null) conn.close();} catch(Exception e){e.printStackTrace();}
try {if(pstmt != null) pstmt.close();} catch(Exception e){e.printStackTrace();}
try {if(rs != null) rs.close();} catch(Exception e){e.printStackTrace();}
}
return false; // 데이터베이스 오류
}
3-4. 사용자 id로 email 찾는 함수
public String getUserEmail(String userID) {
String SQL = "SELECT userEmail FROM USER WHERE userID = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs =null;
try {
conn = DatabaseUtil.getConnection();
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
if(rs.next()) {
return rs.getString(1);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {if(conn != null) conn.close();} catch(Exception e){e.printStackTrace();}
try {if(pstmt != null) pstmt.close();} catch(Exception e){e.printStackTrace();}
try {if(rs != null) rs.close();} catch(Exception e){e.printStackTrace();}
}
return null; // 데이터베이스 오류
}
3-5. 이메일 인증에 성공했을 때 userEmailCheck을 true로 바꿔주는 함수. (이메일 인증 수행)
회원가입 시에는 이메일 인증이 false로 생성되는데, 이메일 인증을 한 사람은 이 함수를 통하여 true로 바꿔준다.
==> 이메일 인증을 했다는 의미
public boolean setUserEmailChecked(String userID) {
String SQL = "UPDATE USER SET userEmailCheck = true WHERE userID = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs =null;
try {
conn = DatabaseUtil.getConnection();
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
pstmt.executeUpdate();
return true;
} catch(Exception e) {
e.printStackTrace();
} finally {
try {if(conn != null) conn.close();} catch(Exception e){e.printStackTrace();}
try {if(pstmt != null) pstmt.close();} catch(Exception e){e.printStackTrace();}
try {if(rs != null) rs.close();} catch(Exception e){e.printStackTrace();}
}
return false; // 데이터베이스 오류
}
반응형
'Java > Jsp' 카테고리의 다른 글
5. 데이터베이스 설계 (0) | 2021.02.06 |
---|---|
4. 로그인, 회원가입 화면 (0) | 2021.02.05 |
3. 강의평가 메인화면 디자인 (0) | 2021.02.05 |
2. 프레임워크로 웹 디자인 틀 잡기 (0) | 2021.02.04 |
1. Jsp와 mysql의 연동 (0) | 2021.02.03 |