Java/Jsp

6. 회원 데이터 모델링

민철킹 2021. 2. 7. 00:35

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