JSP로 강의평가 웹 사이트 개발하기 ⑤ 회원 데이터 모델링
이번 강의는 JSP 강의평가(Lecture Evaluation) 웹 사이트 개발하기의 다섯 번째 시간입니다. 이번 시간에는 지난 시간에 했었던 데이터베이스 설계를 토대로 서버 프로그램상에서 데이터를 모델링하려고 합니다. 일반적으로 데이터를 모델링할 때는 DTO(Data Transfer Object)와 DAO(Data Access Object)를 작성해주시면 됩니다. DTO는 말 그대로 데이터베이스 테이블과 거의 1:1 대응되어 개별 데이터 원소를 보관하기 위해 사용되는 객체이며 DAO는 데이터베이스와 실질적으로 통신하는 모듈입니다. 이번 시간에는 가장 먼저 회원 데이터를 모델링해보도록 하겠습니다.
먼저 위와 같이 자바 소스코드 영역에 user 패키지를 생성해서 UserDAO와 UserDTO를 자바 파일로 생성합니다.
▶ UserDTO.java
package user;
public class UserDTO {
private String userID;
private String userPassword;
private String userEmail;
private String userEmailHash;
private boolean userEmailChecked;
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
public String getUserEmailHash() {
return userEmailHash;
}
public void setUserEmailHash(String userEmailHash) {
this.userEmailHash = userEmailHash;
}
public boolean isUserEmailChecked() {
return userEmailChecked;
}
public void setUserEmailChecked(boolean userEmailChecked) {
this.userEmailChecked = userEmailChecked;
}
public UserDTO(String userID, String userPassword, String userEmail,
String userEmailHash, boolean userEmailChecked) {
this.userID = userID;
this.userPassword = userPassword;
this.userEmail = userEmail;
this.userEmailHash = userEmailHash;
this.userEmailChecked = userEmailChecked;
}
}
위 DTO 파일을 보시면 사실상 이전 시간에 작업했던 데이터베이스 부분과 거의 일치하는 것을 알 수 있습니다. MySQL 언어를 자바 소스코드 언어로 바꾼 것 뿐이지요.
▶ UserDAO.java
package user;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
private Connection conn;
private ResultSet rs;
public UserDAO() {
try {
String dbURL = "jdbc:mysql://localhost:3306/LectureEvaluation";
String dbID = "root";
String dbPassword = "root1234";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
public int login(String userID, String userPassword) {
String SQL = "SELECT userPassword FROM USER WHERE userID = ?";
try {
PreparedStatement 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 (SQLException e) {
e.printStackTrace();
}
return -2; // 데이터베이스 오류
}
public int join(UserDTO user) {
String SQL = "INSERT INTO USER VALUES (?, ?, ?, ?, false)";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, user.getUserID());
pstmt.setString(2, user.getUserPassword());
pstmt.setString(3, user.getUserEmail());
pstmt.setString(4, user.getUserEmailHash());
return pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return -1; // 회원가입 실패
}
public String getUserEmail(String userID) {
String SQL = "SELECT userEmail FROM USER WHERE userID = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
while(rs.next()) {
return rs.getString(1); // 이메일 주소 반환
}
} catch (SQLException e) {
e.printStackTrace();
}
return null; // 데이터베이스 오류
}
public boolean getUserEmailChecked(String userID) {
String SQL = "SELECT userEmailChecked FROM USER WHERE userID = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
rs = pstmt.executeQuery();
while(rs.next()) {
return rs.getBoolean(1); // 이메일 등록 여부 반환
}
} catch (SQLException e) {
e.printStackTrace();
}
return false; // 데이터베이스 오류
}
public boolean setUserEmailChecked(String userID) {
String SQL = "UPDATE USER SET userEmailChecked = true WHERE userID = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, userID);
pstmt.executeUpdate();
return true; // 이메일 등록 설정 성공
} catch (SQLException e) {
e.printStackTrace();
}
return false; // 이메일 등록 설정 실패
}
}
- getUserEmail(): 사용자의 아이디를 이용해 이메일 주소를 알아냅니다. 결과는 문자열형으로 반환됩니다.
이제 데이터베이스 연동을 위해서 JDBC Connector를 설치해주도록 할게요. MySQL 전용 드라이버는 다음의 경로에서 구하실 수 있습니다.
▶ MySQL JDBC 드라이버 사이트: https://dev.mysql.com/downloads/connector/j/5.1.html
위와 같이 프로젝트가 구성되도록 JDBC를 넣어주시면 된답니다. WEB-INF 폴더의 lib 폴더에 넣어주시면 자동으로 웹 어플리케이션이 구동되는 단계에서 해당 라이브러리를 사용할 수 있게 되서 문제가 없습니다.
'JAVA & JSP' 카테고리의 다른 글
JSP로 강의평가 웹 사이트 개발하기 ⑦ 로그인 및 로그아웃 구현하기 (8) | 2018.01.27 |
---|---|
JSP로 강의평가 웹 사이트 개발하기 ⑥ 회원가입 및 이메일 전송하기 (22) | 2018.01.26 |
JSP로 강의평가 웹 사이트 개발하기 ④ 데이터베이스 구축하기 (2) | 2018.01.26 |
JSP로 강의평가 웹 사이트 개발하기 ③ 웹 디자인 개발하기 (1) | 2018.01.26 |
JSP로 강의평가 웹 사이트 개발하기 ② 웹 디자인 기초 잡기 (5) | 2018.01.26 |